一、两个模块
Python使用SMTP发送邮件的两个模块:smtplib模块、email模块。
- smtplib:负责发送邮件
- email:负责构建邮件
二、SMTP端口
1)未加密端口,smtplib.SMTP接口,端口:25
2)使用SSL加密,smtplib.SMTP_SSL接口,端口:465
3)使用TLS加密,端口:587
三、四大步骤
1、构造邮件内容
# 纯文本 msg = MIMEText(content) # 附件 msg = MIMEMultipart()
2、连接邮件服务器
s = smtplib.SMTP(\"smtp.qq.com\", 25)
3、登陆邮件服务器
s.login(msg_from, passwd)
msg_from:指发送者的邮箱
passwd:指发送者的密码,这个密码不是你的QQ登陆密码,而是你在QQ邮箱设置开启SMTP之后的一个授权码
4、发送邮件
s.sendmail(msg_from, msg_to, msg.as_string())
msg_from:发送方
msg_to:收件方
msg.as_string():要发送的消息
四、常用场景
1、纯文本邮件
import smtplib from email.mime.text import MIMEText from email.header import Header # 发送者 msg_from = \"xxxxx@qq.com\" # 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码 passwd = \"xxxxx\" # 接受者 msg_to = \"xxxx@qq.com\" # 邮件文本 content = \'Python 邮件发送测试...\' # 邮件主题 subject = \"test\" # 生成一个MIMEText对象(还有一些其它参数) msg = MIMEText(content) # 放入邮件主题 msg[\'Subject\'] = Header(subject, \'utf-8\') # 放入发件人 msg[\'From\'] = msg_from try: # 连接邮件服务器 s = smtplib.SMTP(\"smtp.qq.com\", 25) # 登录到邮箱 s.login(msg_from, passwd) # 发送邮件:发送方,收件方,要发送的消息 s.sendmail(msg_from, msg_to, msg.as_string()) print(\'成功\') except s.SMTPException as e: print(e) finally: s.quit()
2、发送html文本
import smtplib from email.mime.text import MIMEText from email.header import Header # 发送者 msg_from = \"xxxx@qq.com\" # 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码 passwd = \"xxxx\" # 接受者 msg_to = \"xxxx@qq.com\" # 邮件文本 content = \"\"\" <p>Python 邮件发送测试...</p> <p><a href=\"http://www.baidu.com\" rel=\"external nofollow\" >这是一个链接</a></p> \"\"\" # 邮件主题 subject = \"test\" # 生成一个MIMEText对象( msg = MIMEText(content, \'html\', \'utf-8\') # 放入邮件主题 msg[\'Subject\'] = Header(subject, \'utf-8\') # 放入发件人 msg[\'From\'] = msg_from try: # 连接邮件服务器 s = smtplib.SMTP(\"smtp.qq.com\", 25) # 登录到邮箱 s.login(msg_from, passwd) # 发送邮件:发送方,收件方,要发送的消息 s.sendmail(msg_from, msg_to, msg.as_string()) print(\'成功\') except s.SMTPException as e: print(e) finally: s.quit()
3、发送附件
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header # 发送者 msg_from = \"xxxx@qq.com\" # 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码 passwd = \"xxxx\" # 接受者 msg_to = \"xxxx@qq.com\" # 邮件主题 subject = \"test\" # 生成一个MIMEMultipart对象( msg = message = MIMEMultipart() # 邮件文本 message.attach(MIMEText(\'这是菜鸟教程Python 邮件发送测试……\', \'plain\', \'utf-8\')) # 放入邮件主题 msg[\'Subject\'] = Header(subject, \'utf-8\') # 放入发件人 msg[\'From\'] = msg_from # 添加附件 att1 = MIMEText(open(\'./wordcloud_singer.py\', \'rb\').read(), \'base64\', \'utf-8\') att1[\"Content-Type\"] = \'application/octet-stream\' att1[\"Content-Disposition\"] = \'attachment; filename=\"test.txt\"\' msg.attach(att1) try: # 连接邮件服务器 s = smtplib.SMTP(\"smtp.qq.com\", 25) # 登录到邮箱 s.login(msg_from, passwd) # 发送邮件:发送方,收件方,要发送的消息 s.sendmail(msg_from, msg_to, msg.as_string()) print(\'成功\') except s.SMTPException as e: print(e) finally: s.quit()
以上就是Python 发送SMTP邮件的简单教程的详细内容,更多关于Python 发送邮件的资料请关注自学编程网其它相关文章!