python爬虫-smtplib模块发送邮件

1、代码如下:

import smtplib

from email.message from EmailMessage

# smtplib模块负责发送邮件服务

# email.message模块负责构建邮件,然后交给smtplib发送

# 定义SMTP服务器地址
smtp_server = ‘smtp.163.com‘
# 定义发件人地址
from_addr = "***********@163.com"
# 定义登录密码
password = ‘**********‘
# 定义收件人
to_addr = "**********@qq.com"

# 创建SMTP连接
conn = smtplib.SMTP_SSL(smtp_server, 465)


conn.set_debuglevel(1)

conn.login(from_addr, password)

# 创建邮件对象
msg = EmailMessage()

# 设置邮件内容
msg.set_content(‘你好,我正在测试如何使用python发送电子邮件‘, ‘plain‘, ‘utf-8‘)

# 设置邮件主题
msg[‘subject‘] = "一封测试smtplib模块的邮件"

msg[‘from‘] = from_addr

msg[‘to‘] = to_addr

# 发送邮件
conn.sendmail(from_addr, [to_addr], msg.as_string())

# 退出连接

conn.quit()

2、常见异常解决

2.1SMTPAuthenticationError

python爬虫-smtplib模块发送邮件

# 定义发件人地址
from_addr = "***********@163.com"
# 定义登录密码
password = ‘**********‘
# 定义收件人
to_addr = "**********@qq.com"

# 创建SMTP连接
conn = smtplib.SMTP_SSL(smtp_server, 465)


conn.set_debuglevel(1)

conn.login(from_addr, password)

出现这个错误是由于conn.login(from_addr, password)中的password不是登录客户端的密码,再强调一遍不是登录客户端的密码是授权码,下面演示如何获取授权码,以

网易邮箱为例:

python爬虫-smtplib模块发送邮件

 登录进入后,界面所示:

python爬虫-smtplib模块发送邮件

 在设置里面有一个POP3/SMTP/IMAP,点击进入该页面,再点击箭头所示的客户端授权密码

python爬虫-smtplib模块发送邮件

python爬虫-smtplib模块发送邮件

 要保证设置客户端授权码处于开启状态,如果记得就不用重置,如果不记得,就按照要求一步一步重置,然后用自己重置的授权码,作为登录密码就可以了。

2.2SMTPDataError

python爬虫-smtplib模块发送邮件

出现这样的异常是由于自己的邮件信息没有设置完整

# 创建邮件对象
msg = EmailMessage()

# 设置邮件内容
msg.set_content(‘你好,我正在测试如何使用python发送电子邮件‘, ‘plain‘, ‘utf-8‘)

# 发送邮件
conn.sendmail(from_addr, [to_addr], msg.as_string())

# 退出连接

conn.quit()

从上述代码中,我们知道从创建邮件对象开始,只设置了邮件内容,所有才会出现这样的错误,还有设置至少三个信息,这些信息会显示在你的邮件中。

# 邮件主题
msg[‘subject‘] = "一封测试smtplib模块的邮件"

# 邮件发送者
msg[‘from‘] = from_addr

# 邮件接收者
msg[‘to‘] = to_addr

邮件对象添加这三个信息后,就能发送成功了。

3、参考链接

http://c.biancheng.net/view/2665.html

https://www.cnblogs.com/fengyiru6369/p/7472679.html

https://blog.csdn.net/qq_40423339/article/details/87866001

相关推荐