Python 使用 smtplib 模块和 email 包发文本邮件

本文记录了 Python 使用内置 smtplib 模块和内置 email 包发送纯文本电子邮件的相关代码。

前言

项目中需要一个消息转发服务,电子邮件转发算是一个通用且广泛的选择。

Python 自带的 smtplib 和 email 库支持发送纯文本、带有图片、带有附件的电子邮件。

因项目实际所需,所以本文仅介绍使用 Python 发送纯文本电子邮件的方法。

所用 Python 版本 : Python 3.11.0

代码讲解

此部分正式开始讲解 Python 发送纯文本电子邮件的代码。

逐段讲解

  • 首先导入发送电子邮件的所需模块

    import smtplib
    from email.message import EmailMessage
    
  • 然后构造电子邮件的本体信息

    msg = EmailMessage()
    msg['Subject'] = 'This is the title of the email'   # 设置电子邮件的标题
    msg['From'] = 'dancying_sender@163.com'             # 设置电子邮件的发件人信息,建议为邮件格式
    msg['To'] = 'dancying_recipient@163.com'            # 设置电子邮件的收件人信息,邮件格式
    msg.set_content('This is the body of the email.')   # 设置电子邮件的正文内容
    
  • 最后使用 SMTP 协议发送电子邮件至收件人邮箱

    s = smtplib.SMTP_SSL(host='smtp.163.com', port=465)                     # 连接至目标 SMTP 服务器
    s.login(user='dancying_sender@163.com', password='QWERTYUIOPASDFGH')    # 使用发件人的账号密码登录邮件服务器
    s.send_message(msg)                                                     # 执行发送邮件操作
    s.quit()                                                                # 断开与 SMTP 服务器的连接
    

    如果使用 SMTP 服务器的 25 端口,则需要换成 smtplib.SMTP() 方法连接 SMTP 服务器

完整代码

  • 将以上代码组合可得到完整代码,根据实际情况修改即可使用
    import smtplib
    from email.message import EmailMessage
    
    msg = EmailMessage()
    msg['Subject'] = 'This is the title of the email'   # 设置电子邮件的标题
    msg['From'] = 'dancying_sender@163.com'             # 设置电子邮件的发件人信息,建议为邮件格式
    msg['To'] = 'dancying_recipient@163.com'            # 设置电子邮件的收件人信息,邮件格式
    msg.set_content('This is the body of the email.')   # 设置电子邮件的正文内容
    
    s = smtplib.SMTP_SSL(host='smtp.163.com', port=465)                     # 连接至目标 SMTP 服务器
    s.login(user='dancying_sender@163.com', password='QWERTYUIOPASDFGH')    # 使用发件人的账号密码登录邮件服务器
    s.send_message(msg)                                                     # 执行发送邮件操作
    s.quit()                                                                # 断开与 SMTP 服务器的连接
    

总结

使用 Python 发送电子邮件上手后还是挺简单的,至于 SMTP 服务器的配置步骤不属于本文内容范畴。

在我看来,代码中需要注意的点有两个:

  • msg['From'] 的值理论上可以随便写,但如果不符合邮件地址格式,邮件可能会被个别邮箱拒收(如 Foxmail)
  • 需要清楚 smtplib.SMTP_SSL()smtplib.SMTP() 的区别

参考链接

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇