Python发送邮件
程序员文章站
2024-03-18 13:44:28
...
本文主要讲如何利用Python的smtplib模块发送邮件以及遇到的几个坑。
SMTP是简单邮件传输协议,smtplib模块对其进行了简单的封装。我们就可以用SMTP对象的sendmail方法来发送邮件了。
通过SMTP对象发邮件类似于通过邮箱客户端来发送邮件,需要填写邮箱服务器。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
#发送邮箱服务器
smtpserver = 'smtp.163.com'
#发送邮箱用户/授权码
user = 'aaa@qq.com'
passcode = 'xxxxxx'
#发送邮箱
sender = 'aaa@qq.com'
#接收邮箱
receiver = 'aaa@qq.com'
#发送邮件主题
subject = 'Python email test'
#编写HTML类型的邮件正文
msg = MIMEText('<html><h1>你好!</h1></html>', 'html', 'utf-8')
msg['From'] = '周杰伦<aaa@qq.com>'
msg['To'] = '王力宏 <aaa@qq.com>'
msg['Subject'] = Header(subject, 'utf-8')
#连接发送邮件
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user, passcode)
smtp.sendmail(sender, receiver, msg.as_string())
print("发送成功")
smtp.quit()
坑:
- #passcode=‘xxxxxx’ 此处为邮箱的授权码而不是登录密码。
如果此处为登录密码,会因为没有设置授权码而报错:SMTPAuthenticationError: (550, b’User has no permission’) - #msg[‘From’] = ‘周杰伦[email protected]’
#msg[‘To’] = ‘王力宏 [email protected]’
需要将邮箱格式写成这种格式,否则会报错:smtplib.SMTPDataError: (554, b’DT:SPM 163 smtp1,GdxpCgAHiouQAtZdxdt+Bw–.28S2 1574306448,please see …