在那些卑微的日子里,不敢去仰望星空的浩瀚,不敢去触碰人间的静好,也不敢去凝望高山的雄壮,不敢去期待流水的细长。
代码
import smtplibfrom email.header import Headerfrom email.mime.text import MIMETextif __name__ == '__main__': email_host = 'smtp.163.com' email_user = '18735123416@163.com' email_pwd = '***' maillist = '**@qq.com', '**@qq.com' me = email_user msg = MIMEText('这是个python测试邮件,不用回复。') msg['Subject'] = 'python测试' msg['From'] = me # 发送者账号 smtp = smtplib.SMTP(email_host, 25) smtp.login(email_user, email_pwd) for email in maillist: smtp.sendmail(me, email, msg.as_string()) smtp.quit() # 发送完毕后退出smtp print('email send success.')复制代码
注意事项
- 不同服务器host主机不同
- POP3服务器: pop.163.com
- SMTP服务器: smtp.163.com
- IMAP服务器: imap.163.com
- email_pwd 为
授权码
,不是你的邮箱密码
,必须确保开启SMTP服务才能通过SMTP邮箱代理发送 如果对勾没有点上,在点的时候会让你设置授权码
,这个授权码就是上面发送的密码 - 25端口为SMTP端口,如果使用SSL,端口改为465/994 #常见错误汇总
- ConnectionRefused
- 邮箱没有开通SMTP服务
- 登录密码没有使用授权码
- 晚上一般服务器邮箱网络不稳定,163邮箱设置的时候隔天才生效
2.500 Error: bad syntax 这个错误只出现在 Windows 系统上。遇到了这个错误,可在“控制版面”中点击“查看网络状态和任务”进入“网络和共享中心网络连接详细信息”中看到“连接特定的 DNS 后缀”这一项(如下图所示),它的值应该和以上所示报错信息中红色文字所示部分类似,这个值中含有“空格”就是导致发信出错的原因。
修改步骤为:在“控制版面”中点击“查看网络状态和任务”进入“网络和共享中心”,点击现在使用的网络连接,点击网络连接的【属性】按钮,双击“Internet 协议版本 4(TCP/IPv4)”这一项,再点击【高级】按钮,切换到“DNS”标签,把“此连接的 DNS 后缀”修改为 HOST 或清空,然后依次确认保存。
- 线上服务器无法发送邮件或者发送邮件时间过长
- 线上服务器一般默认25端口封闭,必须申请25端口解封才能发送邮件
- 25端口发送邮件一定要借助第三方的SMTP服务,不要自己搭建SMTP然后发送邮件,会让自己的服务器公网IP被回收