原来使用smtplib 自动发送邮件通知,后来邮箱系统升级,要求收发邮件都必须走SSL安全通道,原来使用的25端口就不能正常发送邮件了,好在smtplib支持SSL,改动非常简单。
原来的代码:
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
def sendmail(mailcontent, to_addr, mailheader):
from_addr = 'yyyy@xxxxx.com'
password = 'youkonw'
smtp_server = 'smtp.XXXXX.com'
msg = MIMEText(mailcontent, 'HTML', 'utf-8')
msg['From'] = _format_addr("tet<%s>" % from_addr)
msg['To'] = _format_addr("admin <%s>" % to_addr)
msg['Subject'] = Header(mailheader, 'utf-8').encode()
try:
server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(0)# 关闭debug模式
server.login(from_addr, password)
server.sendmail(from_addr, to_addr.split(','), msg.as_string())
server.quit
return True
except:
return False
改动后的代码:
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
def sendmail(mailcontent, to_addr, mailheader):
from_addr = 'sjzxbk@cvicse.com'
password = 'LxRAVWSs9bj51Dc4'
smtp_server = 'smtp.qiye.163.com'
msg = MIMEText(mailcontent, 'HTML', 'utf-8')
msg['From'] = _format_addr("数据中心运维管理工具<%s>" % from_addr)
msg['To'] = _format_addr("数据中心管理员 <%s>" % to_addr)
msg['Subject'] = Header(mailheader, 'utf-8').encode()
try:
server = smtplib.SMTP_SSL(smtp_server, 465)
server.ehlo()
#print("have already connect to server on port 25")
server.set_debuglevel(0)# 关闭debug模式
server.login(from_addr, password)
#print("have already login usingpassword")
server.sendmail(from_addr, to_addr.split(','), msg.as_string())
server.quit
return True
except:
return False