如何用python发送接收邮件

2023-07-10 09:42:11
关注

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格式的邮件






审核编辑:刘清

您觉得本篇内容如何
评分

相关产品

RS Components 欧时 1254362 摄像机

检测到运动时通过电子邮件发送的图像。通过应用程序和浏览器访问互联网和移动视频源。内置微型SD卡插槽,用于内部数据存储,作为备份解决方案使用。Door\/Outdoor=室内型号=TVIP82900Type=Dome网络使用=是解决方法=1280 x 720像素、1920 x 1080像素、2560 x 1440像素以太网供电=是Internet协议=3GPP\/ISMA RTSP、ARP、Bonjour、DHCP、DNS、FTP、HTTP、ICMP,NTP,PPPoE,RTP,RTSP,SMTP,TCP,TCP\/IP,UDP,UPnP工作电压=

评论

您需要登录才可以回复|注册

提交评论

慧生活

这家伙很懒,什么描述也没留下

关注

点击进入下一篇

“腰部”大模型,活在故事里

提取码
复制提取码
点击跳转至百度网盘