python SMTP 发送邮件 阿里企业邮箱、163邮箱 及535错误
class SendEmail(object): def __init__(self, type, to_addr): self.to_addr = to_addr self.sys_date = time.strftime('%Y-%m-%d', time.localtime()) content = u'这是测试邮件内容'if type == 'hichina': # 阿里企业邮箱 self.from_addr = 'username@520czj.com' self.password = 'user password' self.smtp_server = 'smtp.mxhichina.com' else: # 163邮箱 self.from_addr = "username@163.com" self.password = 'user password' self.smtp_server = "smtp.163.com" def _format_addr(self, s): name, addr = parseaddr(s) return formataddr((Header(name, 'utf-8').encode(), addr.encode('utf-8') if isinstance(addr, unicode) else addr)) def send_email(self, content): msg = MIMEText(content, 'plain', 'utf-8') msg['From'] = self._format_addr(u'车装甲客服 <%s>' % self.from_addr) msg['To'] = self._format_addr(u'经销商 <%s>' % self.to_addr) msg['Subject'] = Header(u'送油通知', 'utf-8').encode() server = smtplib.SMTP(self.smtp_server, 25) # server.set_debuglevel(1) # 打印debug信息 server.login(self.from_addr, self.password) server.sendmail(self.from_addr, [self.to_addr], msg.as_string()) server.quit()
注意:
1. 阿里企业邮箱默认SMTP是开通的,但是给同一收件人半小时内不能发第二封
2. 163邮箱默认是不开通SMTP的,设置如下这里需要设置授权密码,设置之后程序里的password为此授权密码,不是登录密码;
3. 163邮箱抛异常:
raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, 'Error: authentication failed')
两个原因1)没有设置客户端授权;2)密码错误;
文章出处:http://www.cnblogs.com/aaron-agu/
只有毅力和决心才能使人真正具有价值!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异