用python发送邮件(带html格式的邮件、附件)

1.导入各种库
import smtplib
from smtplib import SMTP_SSL #是用来加密邮件内容的防止中间被人截获
from email.mime.text import MIMEText #用来构造邮件的正文
from email.mime.multipart import MIMEMultipart #这是邮件的主体
from email.header import Header #邮件的头部,包括邮件的标题,收件人等
from email.mime.application import MIMEApplication #专门用来添加附件的
2.获取服务器、收件人、发件人信息
host_server = ‘smtp.163.com’#sina邮箱smtp服务器
pwd = “xxxxx” #pwd为邮箱的密码
sender_mail = ‘[email protected]’ #发件人的邮箱
receiver_mail =‘[email protected]’ #收件人的邮箱
#发送有html格式的文件
下面的语句变换了格式,在这里粘帖一张图片
mail_content = “你好,

这是使用python登录163邮箱发送HTML格式邮件的测试:

Python


#发送没有格式的文字
msg.attach(MIMEText(mail_content,‘plain’,‘utf-8’)) #邮件正文内容,以无格式的方式添加到整个邮件主体中
#发送带有附件的邮件
attachment = MIMEApplication(open(r"C:\Users\Polyxena\Desktop\untitled1\长恨歌替换.docx",‘rb’).read())
#重命名文件
attachment.add_header(‘Content-Disposition’,‘attachment’,filename=‘长恨歌.docx’)
msg.attach(attachment)
#邮件的正文内容
mail_title = ‘python办公自动化的邮件’ #邮件标题

3.准备发送的主体、内容
msg = MIMEMultipart() #邮件主体
msg[“Subject”] = Header(mail_title,‘utf-8’)
msg[“From”] = sender_mail
msg[“To”] = receiver_mail #固定格式,没有为什么
msg.attach(MIMEText(mail_content,‘html’,‘utf-8’)) #邮件正文内容,以html格式的方式添加到整个邮件主体中

4.连接服务器,开始发送
try:

smtp = SMTP_SSL(host_server) #ssl登录,连接到邮件的服务器
#关闭smtp的debug是0,否则是1
smtp.set_debuglevel(0)
#和服务器打个招呼我们要连接,最好加上
smtp.ehlo(host_server)  
smtp.login(sender_mail,pwd)
smtp.sendmail(sender_mail,receiver_mail,msg.as_string()) #发件人,收件人,邮件主体
smtp.quit()
print('邮件发送成功')

except smtplib.SMTPException:

print("无法发送邮件")

你可能感兴趣的:(用python发送邮件(带html格式的邮件、附件))