文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

用 Python 发电子邮件

2023-01-31 05:52

关注

本文首发于【红叶枫啦】微信公号,未经允许,不得转载。

这个程序涉及两个库:smtplibemail

这两个库都是Python自带的,所以不需要额外的下载安装,此外,这次使用的Python版本为2.7。

总体思路很简单,就像我们平常上网是通过HTTP协议一样,我们发送邮件是通过SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)来传输的,而现在我们需要做的就是

  1. 设置好SMTP服务器地址
  2. 告诉服务器我们的邮箱地址和密码
  3. 设置要发送的邮件内容,例如发送者地址,接收者地址,邮件主题,邮件正文,附件等
  4. 将设置好的邮件内容传给服务器,并发送

第一步和第二步就是需要使用smtplib ,这是一个帮助我们设置SMTP服务器的库,那么具体如何设置呢?实际上我们需要的就是一个SMTP服务器的地址,例如QQ邮箱的SMTP服务器的地址就是:smtp.qq.com,端口号是465587

qq邮箱的SMTP地址
qq邮箱的SMTP地址

server = smtplib.SMTP("smtp.qq.com", 587)

第三步就是使用 email ,这是一个帮助我们设置邮件内容的库,包括主题、正文等,然后用设置好的服务器发送设置好的邮件内容。

用赛克君的QQ邮箱发送:
这里写图片描述

另一个邮箱接收(outlook邮箱)
这里写图片描述

outlook邮箱内一个带PDF附件的邮件,可以看到附件被正确的附上了
这里写图片描述

发送无附件的邮件

# 注意此处使用QQ邮箱作为发送邮箱,如果要用其他邮箱请更改 server 中的服务器地址

import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart

fromaddr = "发送者的邮箱地址"
toaddr = "接收者的邮箱地址"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
# 邮件主题
msg['Subject'] = "Hooah"
# 邮件正文
body = "HAHAHA!"

msg.attach(MIMEText(body, 'plain'))

server = smtplib.SMTP("smtp.qq.com")
server.starttls()
server.login(fromaddr , "发送者的邮箱密码")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()

发送有附件的邮件

# 注意此处使用QQ邮箱作为发送邮箱,如果要用其他邮箱请更改 server 中的服务器地址

import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email import encoders

fromaddr = "发送者的邮箱地址"
toaddr = "接收者的邮箱地址"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
# 邮件主题
msg['Subject'] = "Hooah"
# 邮件正文
body = "HAHAHA!"

msg.attach(MIMEText(body, 'plain'))

# 附件
filename = "AttachmentTest/kaiti.pdf"
attachment = open(filename, 'rb')
part = MIMEBase('application', 'octet-stream')
# 这也可以: part = MIMEBase('application', 'pdf')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment', filename=filename)

msg.attach(part)

# 设置SMTP
server = smtplib.SMTP("smtp.qq.com")
server.starttls()
server.login(fromaddr , "发送者的邮箱密码")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()

发送成功就可以看到如下的提示:
这里写图片描述

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯