您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python 发送带各种附件的邮件示例!

5b51 2022/1/14 8:24:27 python 字数 5476 阅读 653 来源 www.jb51.cc/python

简述下如何使用python发送各种附件的邮件,比如word、excel、pdf、txt,以及在正文插入图片等等

概述

简述下如何使用python发送各种附件的邮件,比如word、excel、pdf、txt,以及在正文插入图片等等

如下所示,

加群:960410445  即可获取数十套PDF!

# coding=utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.encoders import encode_base64
import os
import traceback
def send_mail(mail_title,mail_content=None,attachment_img=None,attachment_txt=None,attachment_pdf=None,attachment_excel=None,attachment_word=None):
 # QQ邮箱smtp服务器
 host_server = 'smtp.qq.com'
 # sender_qq为发件人的qq号码
 sender_qq = '947118251'
 # pwd为QQ邮箱的授权码
 pwd = 'tvjl******zpbebb'
 # 发件人的邮箱
 sender_qq_mail = '947118251@qq.com'
 # 收件人邮箱
 # receiver = 'znwindy@gmail.com'
 receiver = '947118251@qq.com'
 try:
 # ssl登录
 smtp = SMTP_SSL(host_server)
 # set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式
 smtp.set_debuglevel(1)
 smtp.ehlo(host_server)
 smtp.login(sender_qq,pwd)
 # msg = MIMEText(mail_content,"plain",'utf-8')
 msg = MIMEMultipart('related')
 msg["Subject"] = Header(mail_title,'utf-8')
 msg["From"] = sender_qq_mail
 msg["To"] = receiver
 msgAlternative = MIMEMultipart('alternative')
 msg.attach(msgAlternative)
 # image attach
 if attachment_img:
 mail_body = '%s
%s">
' % (mail_content,attachment_img) msgText = (MIMEText(mail_body,'html','utf-8')) msgAlternative.attach(msgText) with open(attachment_img,'rb') as fp: msgImage = MIMEImage(fp.read()) msgImage.add_header('Content-ID','<{}>'.format(attachment_img)) msg.attach(msgImage) # txt attach if attachment_txt: file_name = os.path.split(attachment_txt)[1] att1 = MIMEText(open(attachment_txt,'rb').read(),'base64','utf-8') att1["Content-Type"] = 'application/octet-stream' # 这里的filename可以任意写,写什么名字,邮件显示什么名字 att1["Content-Disposition"] = f'attachment; filename="{file_name}"' msg.attach(att1) # pdf attach if attachment_pdf: with open(attachment_pdf,"rb") as fp: fileMsg = MIMEBase('application','pdf') fileMsg.set_payload(fp.read()) encode_base64(fileMsg) fileMsg.add_header('Content-Disposition',f'attachment;filename={os.path.split(attachment_pdf)[1]}') msg.attach(fileMsg) # excel attach if attachment_excel: part = MIMEBase('application',"vnd.ms-excel") with open(attachment_excel,"rb") as fp: part.set_payload(fp.read()) encode_base64(part) part.add_header('Content-Disposition',f'attachment; filename="{os.path.split(attachment_excel)[1]}"') msg.attach(part) # word attach if attachment_word: with open(attachment_word,"rb") as fp: part = MIMEApplication(fp.read()) part.add_header('Content-Disposition',f'attachment; filename="{os.path.split(attachment_word)[1]}"') part.set_charset('utf-8') msg.attach(part) smtp.sendmail(sender_qq_mail,receiver,msg.as_string()) smtp.quit() print('Success!') except: print('Error!') traceback.print_exc() if __name__ == '__main__': send_mail(mail_title='爬虫结束了,正常退出!',mail_content='你好,这是使用python登录QQ邮箱邮件的测试',attachment_img='../data/test.jpg',attachment_txt='../data/start_urls.txt',attachment_pdf='../data/Gmail - How to add images in the product description_.pdf',attachment_excel='../data/shops.xlsx',attachment_word='../data/asdasd.docx')

总结

以上是编程之家为你收集整理的python 发送带各种附件的邮件示例!全部内容,希望文章能够帮你解决python 发送带各种附件的邮件示例!所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶