Python发送SMTP邮件指南

SMTP(Simple Mail Transfer Protocol)简单邮件传输协议,Python内置对SMTP的支持,可以发送纯文本文件,HTML邮件以及附带文件。

一、两个模块

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 = """
Python 邮件发送测试...

"http://www.baidu.com">这是一个链接
"""

# 邮件主题
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()

五、写在最后

李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷。喜欢钻研底层技术,认为底层基础才是王道。一切新技术都离不开操作系统(CPU、内存、磁盘)、网络等。坚持输入输出,记录自己学习的点滴,在平凡中坚持前行,总有一天会遇见不一样的自己。公众号:运维汪(ID:Leeeee_Li)。

Original: https://www.cnblogs.com/lemon-le/p/14858267.html
Author: Captain_Li
Title: Python发送SMTP邮件指南

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/10698/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部
最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总