python 使用SMTP发送邮件
2021/7/29 17:35:50
本文主要是介绍python 使用SMTP发送邮件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文的python发送邮件,使用的是SMTP协议,端口为25.
下面是完整的 代码片段
。
import smtplib from email import encoders from email.header import Header from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email.utils import parseaddr, formataddr class SendEmail(): _from_addr = None _attachments = [] def __init__(self, smtp_server, port): self.smtp = smtplib.SMTP(smtp_server, port) self.smtp.set_debuglevel(1) def _format_addr(self, s): name, addr = parseaddr(s) return formataddr((Header(name, 'utf-8').encode(), addr)) def login(self, user, password): self._from_addr = user self.smtp.login(user, password) def add_file(self, file_name_list): """ 添加附件 :param file_name_list: 附件地址列表 :return: """ file = MIMEMultipart() for file_name in file_name_list: with open(file_name, 'rb') as f: attach_file_base = MIMEBase('application', 'octet-stream') attach_file_base.set_payload(f.read()) attach_file_base.add_header('Content-Disposition', 'attachment', filename=('utf-8', '', file_name.split("\\")[-1])) encoders.encode_base64(attach_file_base) file.attach(attach_file_base) self._attachments.append(file) def send_email(self, to_addr, send_word, from_nickname, to_nickname, header, type): """ 发送email :param to_addr: 接收方邮箱 :param from_nickname: 发送人昵称 :param to_nickname: 接收人昵称 :param send_word: 发送信息 :param header: 标语 :param type: 发送的信息格式(plain: text, html:html) :return: """ # MIMEMultipart 可以组合发送HTML或者Plain,但是要指定subtype是alternative: msg = MIMEMultipart('alternative') # 邮件正文是 MIMEText contents = MIMEText(send_word, type, _charset='utf-8') # 发送人名字 msg['From'] = self._format_addr('{} <{}>'.format(from_nickname, self._from_addr)) # 接收人名字 msg['To'] = self._format_addr('{} <{}>'.format(to_nickname, to_addr)) # 邮件主题 msg['Subject'] = Header(header, 'utf-8').encode() for data in self._attachments: # 添加到MIMEMultipart msg.attach(data) msg.attach(contents) try: self.smtp.sendmail(self._from_addr, to_addr, msg.as_string()) except Exception as e: print(e) finally: self.smtp.quit() if __name__ == '__main__': new_obj = SendEmail('smtp.qq.com', 25) new_obj.login('258428@qq.com', '密码') new_obj.add_file(['文件地址']) new_obj.send_email(to_addr=['757098@qq.com'], send_word='CSDN', from_nickname="Dozt", to_nickname='Dozt', header="生活愉快", type='html')
密码是你进行smtp权限开通时的密码,不是邮箱登陆密码
这篇关于python 使用SMTP发送邮件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器