背景

系统默认的postfix发送邮件使用的是25端口,默认被云厂商屏蔽
通过配置mailx ,可以使用465端口发送邮件

mailx是什么?

mailx是类似foxmail或者outlook一样的邮件发送客户端

具体部署和配置

yum install mailx -y

cat << EOF >> /etc/mail.rc
set from=xxx@zhufunin.com
set smtp="smtps://smtp.zhufunin.com:465"
set smtp-auth-user=xxx@zhufunin.com
set smtp-auth-password=XxXxXx
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb
EOF

测试发送邮件

echo test | mailx -v -s "centos配置/etc/mail.rc发邮件" xxxxxxx@qq.com

自建服务器,如果发送失败

建议检查SPF设置是否太严格

vi命令把下面的代码放入sendmail.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL
import sys

smtpaddr = 'smtp.zhufunin.com:465'
myemail='xxx@zhufunin.com'
password='xxx&xxx'
#f = open('/usr/local/zabbix/.passwd','r')
#password = f.readline().strip()

recvmail=sys.argv[1]
subject=sys.argv[2]
content=sys.argv[3]

msg = MIMEText("""%s"""%(content), "plain", "utf-8")
msg['Subject'] = Header(subject, 'utf-8').encode()
msg['From'] = myemail
msg['To'] = recvmail

try:
 smtp = SMTP_SSL( smtpaddr )
 smtp.login(myemail, password)
 smtp.sendmail(myemail, recvmail.split(','), msg.as_string())
 smtp.quit()
 print("success")
except Exception as e:
 print("fail:"+str(e))

上面的代码放入文件sendmail.py

chmod 7755 sendmail.py
./sendmail.py yourmail@test.com hello "Dear my son \n Goodbye"

相关文章: