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格式的邮件
审核编辑:刘清
-
SMTP
+关注
关注
0文章
32浏览量
11934 -
HTML
+关注
关注
0文章
278浏览量
35199 -
python
+关注
关注
56文章
4792浏览量
84626
原文标题:如何用python发送接收邮件
文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论