如何用python发送接收邮件

慧生活 20230710

  • Python编程

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

Python发送邮件比较简单,掌握两个自带库 smtplib、email 即可,smtplib 负责发送邮件,email 负责构造邮件(邮件内容,主题,收件人,抄送人等)。

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

MIMEText用于电子邮件正文

MIMEMultipart用于电子邮件结构

MIMEApplication用于在电子邮件中添加二进制数据(如文件附件)

MIMEImage用于图片

importsmtplib
fromemail.mime.imageimportMIMEImage
fromemail.mime.textimportMIMEText
fromemail.headerimportHeader
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.applicationimportMIMEApplication

1.发送邮件(可带附件)

下面是一个使用Python中的smtplib库发送电子邮件的示例代码。

importsmtplib
fromemail.mime.textimportMIMEText
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.applicationimportMIMEApplication

#设置发送邮件的信息
sender_email='xxx@qq.com'#发件人邮箱账号
sender_password='xxx'#发件人邮箱授权码
receiver_email='xxx@qq.com'#收件人邮箱账号
subject='Thisisatestemailby数字ICer'#邮件的主题

smtp_server='smtp.qq.com'#qq邮箱的SMTP服务器
smtp_port=465#qq邮箱的SMTP服务器端口465

defsend_email():
ret=True
try:
#创建一个multipart的邮件对象
msg=MIMEMultipart()
msg['From']=sender_email
msg['To']=receiver_email
msg['Subject']=subject

#添加邮件正文
body='Hello,thisisatestemail.'
msg.attach(MIMEText(body,'plain'))

#添加附件
#filename='attachment.pdf'
#withopen(filename,'rb')asf:
#attachment=MIMEApplication(f.read(),_subtype='pdf')
#attachment.add_header('Content-Disposition','attachment',filename=filename)
#msg.attach(attachment)
#
#发送邮件
withsmtplib.SMTP_SSL(smtp_server,smtp_port)assmtp:
smtp.login(sender_email,sender_password)
smtp.sendmail(sender_email,receiver_email,msg.as_string())
print("邮件发送成功")
exceptExceptionase:
print("邮件发送失败:",e)
send_email()

上面使用QQ邮箱帐户发送邮件,也可以使用其他邮箱,需要定义邮箱的SMTP服务器和端口。

对于QQ邮箱,SMTP服务器是smtp.qq.com,SMTP端口是465。

生成授权码

在邮箱设置-->账户

设置POP3/IMAP/SMTP服务中

点击生成授权码,sender_password = 'xxx' 即为授权码,并不是你的qq邮箱密码;

授权码

定义发件人电子邮件地址、授权码和收件人电子邮件地址。

使用MIMEMultipart()创建一个多部分消息。使用msg['From']、msg['To']和msg['Subject']向消息添加发件人、收件人和主题。

使用MIMEText(body, 'plain')向消息添加邮件正文。

使用MIMEApplication()向消息添加附件。

其中 MIMEText 构造对象时,第一个参数是邮件正文;第二个参数是subType,可以设置两种格式 'plain' 和 'html';‘plain’ 表示发送纯文本消息。

发送邮件(可带附件)

2.发送HTML格式的邮件

下面是发送HTML格式电子邮件的示例代码。

importsmtplib
fromemail.mime.textimportMIMEText
fromemail.headerimportHeader
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.applicationimportMIMEApplication


sender_email='xxx@qq.com'#发件人邮箱账号
sender_password='xxx'#发件人邮箱授权码
receiver_email='xxx@qq.com'#收件人邮箱账号
subject='Thisisatestemailby数字ICer'#邮件的主题
smtp_server='smtp.qq.com'#qq邮箱的SMTP服务器
smtp_port=465#qq邮箱的SMTP服务器端口465

mail_msg="""

Python邮件发送测试...

这是一个链接

""" msg=MIMEText(mail_msg,'html','utf-8') msg['From']=Header("sender_email",'utf-8') msg['To']=Header("receiver_email",'utf-8') msg['Subject']=Header(subject,'utf-8') try: withsmtplib.SMTP_SSL(smtp_server,smtp_port)assmtp: smtp.login(sender_email,sender_password) smtp.sendmail(sender_email,receiver_email,msg.as_string()) print("邮件发送成功") exceptsmtplib.SMTPException: print("Error:无法发送邮件")

email.header是Python标准库中的一个模块,Header类是一个用于处理电子邮件头部的工具,它可以处理中文等非ASCII字符集,确保电子邮件头部可以正确显示和解析。

当在电子邮件头部中使用中文或其他非ASCII字符时,需要对这些字符进行编码,以确保电子邮件头部可以被正确地显示和解析。Header类可以将这些非ASCII字符编码为合适的格式。



发送HTML格式的邮件






审核编辑:刘清

查看全文

点赞

慧生活

作者最近更新

  • 智慧管网新范式:凯米斯科技岸边站系统重塑城市污水运维体系
    慧生活
    9小时前
  • 瑞之辰压力传感器,尺寸小可替代进口
    慧生活
    2天前
  • 从空间建模到生命存在:高精度传感如何让机器“看懂”世界
    慧生活
    2天前

期刊订阅

相关推荐

  • 为庆祝全国机器人周,iRobot® 推出 Create® 3 教育机器人

    2022-04-11

  • 如何利用 Python 创建机器学习模型

    2022-06-02

  • 使用Java和Python进行数据统计和分析

    2022-06-24

  • 高考志愿想报考人工智能 微变量教育专家告诉这么准备

    2022-06-29

评论0条评论

×
私信给慧生活

点击打开传感搜小程序 - 速览海量产品,精准对接供需

  • 收藏

  • 评论

  • 点赞

  • 分享

收藏文章×

已选择0个收藏夹

新建收藏夹
完成
创建收藏夹 ×
取消 保存

1.点击右上角

2.分享到“朋友圈”或“发送给好友”

×

微信扫一扫,分享到朋友圈

推荐使用浏览器内置分享功能

×

关注微信订阅号

关注微信订阅号,了解更多传感器动态

  • #{faceHtml}

    #{user_name}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} 查看评论 回复

    共#{comment_count}条评论

    加载更多

  • #{ahtml}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} #{reback} 回复

  • #{ahtml}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} 回复

  • 关闭
      广告