版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
linux 发送邮箱存在一些问题, 首先 必须使用SSL 加密操作, 端口 必须为465, 同时使用SSL 的时候还有一些问题, 必须再构造函数中传入Host(邮箱网站地址) , 终于成功了,
smtp_obj = smtplib.SMTP_SSL(host=HOST)
详细代码在下方, 大概说下流程
我使用的是163邮箱 ,首先你得 在163邮箱设置 运行客户端登陆 发邮箱,
具体操作如下 :
之后再开启客户端授权码
这样操作就完成了 ,
代码编写 :
# 网易163邮箱
HOST = 'smtp.163.com'
# 2> 配置服务的端口,默认的邮件端口是25. 465为ssl 的端口
PORT = '465'
# 3> 指定发件人和收件人。
FROM = '[email protected]'
# TO = 'xxxxx.@163com'
# 4> 邮件标题
SUBJECT = '爬虫异常警告'
# 5> 邮件内容
CONTENT = message + "\n" + str(ex)
# 创建邮件发送对象
# 普通的邮件发送形式
#smtp_obj = smtplib.SMTP()
# 数据在传输过程中会被加密。
smtp_obj = smtplib.SMTP_SSL(host=HOST)
# 需要进行发件人的认证,授权。
# smtp_obj就是一个第三方客户端对象
smtp_obj.connect(host=HOST, port=PORT)
# 如果使用第三方客户端登录,要求使用授权码,不能使用真实密码,防止密码泄露。
res = smtp_obj.login(user=FROM, password='授权码')
print('登录结果:', res)
# 发送邮件
msg = '\n'.join(
['From: {}'.format(FROM), 'To: {}'.format(TO), 'Subject: {}'.format(SUBJECT), '', CONTENT]) # ''此单引号不能少
smtp_obj.sendmail(from_addr=FROM, to_addrs=TO, msg=msg.encode('utf-8'))
这个是通过我整理出来的, 你可能觉得,粘贴复制就能运行,很简单 却不知道我开始踩坑的幸苦, 如果可以点个赞吧