服务器centos实现邮件发送

本文详细介绍了在CentOS系统上如何通过mailx实现邮件发送,包括安装mailx,生成并配置证书,修改mail.rc文件设置发件人、SMTP服务器及端口,处理SSL/TLS连接问题,以及在Java代码中实现邮件发送的方法。同时,针对不同邮件服务器的端口和安全协议进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 1、 安装mailx

yum –y install mailx

  • 2、 生成证书

mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ > ~/.certs/qq.crt
certutil -A -n “GeoTrust SSL CA” -t “C,” -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n “GeoTrust Global CA” -t “C,” -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n “GeoTrust SSL CA - G3” -t “Pu,Pu,Pu” -d ~/.certs/./ -i qq.crt
certutil -L -d /root/.certs

  • 3、 修改mail.rc

Vi /etc/mail.rc
set from=example@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=example@qq.com
set smtp-auth-password=**************
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/root/.certs
说明:如果是465端口,需要加上smtps://协议;如果是587端口,不需要加smtps://或者写smtp://;

如果使用587端口通讯,应当显示设置smtp-use-starttls;

邮件的来源应当与邮箱相同,或者将发信人姓名写在邮箱后的括号中。例如:set from=user@xxxx.com或set from=user@xxx.com(nickname);如果邮箱与认证的不一致,将出现“smtp-server: 553 Mail from must equal authorized user”的错误;

有些邮件服务器的587端口不是使用STARTTLS而是SMTPS,此时仍需加上smtps://协议,例如126邮箱。

  • 4、 发送邮件

echo “hello world” | mail -s ‘didi’ xxxx@163.com

  • 5、 把证书放进tomcat默认路径
  • 6、 cd /usr/java/jre1.8.0_73/lib/security/

keytool -import -alias cm.crt -keystore cacerts -file /usr/.certs/cm.crt -trustcacerts
密码:changeit
Yes
7、 修改代码,实现java发送邮件
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = “javax.net.ssl.SSLSocketFactory”;
//设置邮件会话参数
Properties props = new Properties();
//邮箱的发送服务器地址
props.setProperty(“mail.smtp.host”, “smtp.qq.com”);
props.setProperty(“mail.smtp.socketFactory.class”, SSL_FACTORY);
props.setProperty(“mail.smtp.socketFactory.fallback”, “false”);
//邮箱发送服务器端口,这里设置为465端口
props.setProperty(“mail.smtp.port”, “465”);
props.setProperty(“mail.smtp.socketFactory.port”, “465”);
props.put(“mail.smtp.auth”, “true”);
final String username = "xxxx@qq.com"; //发送者邮箱用户名
final String password = “xxxxxxx”;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值