这篇文章主要介绍“Python如何实现发送带有pdf附件的电子邮件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何实现发送带有pdf附件的电子邮件”文章能帮助大家解决问题。
使用Python发送电子邮件我们可以借用smtplib模块,smtplib是一个 Python 库,用于使用简单邮件传输协议(SMTP)发送电子邮件。 smtplib是内置模块; 我们不需要安装它。 它抽象了 SMTP 的所有复杂性。发送邮件只要设置好参数即可。
1. 配置邮箱参数
下面以常用的QQ邮箱举例,需要自行修改相应参数配置。同样也适用于其它邮箱。
请先确保SMTP服务已开启,如下图。
QQ邮箱的发送服务器为:smtp.qq.com,邮件发送服务器端口普通为25,使用SSL,端口为465或587。
# 1、设置邮件服务器配置信息及登录邮箱账号 config = { 'stmpServer' : 'smtp.qq.com',# 邮件发送服务器地址 'stmpPort' : 25,# 邮件发送服务器端口:普通为25,QQ邮箱SMTP服务器(端口465或587) 'fromEmailAddr' : 'send@qq.com', # 邮件发送方邮箱地址 'password' : 'password', # 邮箱密码 }
2.发送带有pdf附件邮件完整源码(含演示代码)
# -*- coding: utf-8 -*- import smtplib # 发送字符串的邮件 from email.mime.text import MIMEText # 引入MIMEMultipart MIMEApplication类 from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication class SendMail: def __init__(self,config): self.server = self.connect_mailServer(config) def connect_mailServer(self,config): # 登录并发送邮件 print('try login') try: server = smtplib.SMTP(config['stmpServer'], config['stmpPort']) server.login(config['fromEmailAddr'], config['password']) except smtplib.SMTPException as e: print("smtplib 连接服务器报错:", e) else: print('login success') return server def generate_email(self, subject, text, file, fromEmailAddr, toEmailAddr): # 生成email主题、正文、附件信息 # ---------------------------发送带附件邮件----------------------------- # 邮件内容设置 message = MIMEMultipart() # 邮件主题 message['Subject'] = subject # 发送方信息 message['From'] = fromEmailAddr # 接受方信息 message['To'] = toEmailAddr # 邮件正文内容 message.attach(MIMEText(text, 'plain', 'utf-8')) # 添加PDF附件 with open(file, "rb") as f: attach = MIMEApplication(f.read(),_subtype="pdf") attach.add_header('Content-Disposition','attachment',filename=str(file.split('\\')[-1])) message.attach(attach) return message if __name__ == '__main__': # from mailto import SendMail #将此文件保存为mailto.py 放在调用文件同目录即可使用此语句调用,下面是调用所需代码。 # 1、设置邮件服务器配置信息及登录邮箱账号 config = { 'stmpServer' : 'smtp.qq.com',# 邮件发送服务器地址 'stmpPort' : 25,# 邮件发送服务器端口:普通为25,QQ邮箱SMTP服务器(端口465或587) 'fromEmailAddr' : 'send@qq.com', # 邮件发送方邮箱地址 'password' : 'password', # 邮箱密码 } # 2、构造邮件基本内容 subject = '这是一封测试邮件' text = '测试邮件,附件是pdf' # 构造附件,假设存在以下目录,注意附件路径为\\,因为在提取文件名时会用到。 file = 'D:\\测试PDF.pdf' # 3、开始发送邮件 # 3.1 发送单封邮件: if 1: #生成email主题、正文、附件信息 fromEmailAddr = config['fromEmailAddr'] toEmailAddr = 'fisrt@qq.com' mail = SendMail(config) message = mail.generate_email(subject, text, file, fromEmailAddr, toEmailAddr) mail.server.sendmail(fromEmailAddr, toEmailAddr, message.as_string()) print('sendmail to '+toEmailAddr+' success') mail.server.quit() # 3.2 发送多封邮件,对方邮箱存为list if 1: fromEmailAddr = config['fromEmailAddr'] toEmailAddr_list = ['fisrt@qq.com','second@qq.com'] mail = SendMail(config) same = True #这里表示邮件内容一致 message = None if isinstance(toEmailAddr_list,list): # 如果列表就是多地址,使用群发 for toEmailAddr in toEmailAddr_list: if not same or message is None: # 第一次需要生成新邮件。如果每次标题不一样,请在循环内自行修改subject, text, file参数 message = mail.generate_email(subject, text, file, fromEmailAddr, toEmailAddr) try: mail.server.sendmail(fromEmailAddr, toEmailAddr, message.as_string()) except smtplib.SMTPException as e: print("smtplib 发送邮件报错:", e) else: print('sendmail to '+toEmailAddr+' success') print('sendmail finished') mail.server.quit()
关于“Python如何实现发送带有pdf附件的电子邮件”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。