原来使用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@'password = 'youkonw'smtp_server = ''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.quitreturn Trueexcept: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@'password = 'LxRAVWSs9bj51Dc4'smtp_server = 'smtp.'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.quitreturn Trueexcept:return False