发邮件:https://www.cnblogs.com/hudieren/p/16792041.html
收邮件:https://www.cnblogs.com/hudieren/p/16792045.html
解析邮件:https://www.cnblogs.com/hudieren/p/16792096.html
删除邮件:https://www.cnblogs.com/hudieren/p/16798017.html
# -*- coding: utf-8 -*- # @Author : 107 # @File : emaildriver.py # @explain : 发邮件 import json import re import smtplib import email import time from email.mime.text import MIMEText from email.utils import formataddr from email.mime.multipart import MIMEMultipart import imaplib import os class SendEmail: def __init__(self, sender, sender_name, sender_token, attn, attn_name, subject, connect, files, server): """ :param sender: 发件人邮箱账号 :param sender_name: 发件人邮箱昵称 :param sender_token: 发件人邮箱密码(当时申请smtp给的口令) :param attn: 收件人邮箱账号 :param attn_name: 收件人邮箱昵称 :param subject: 主题 :param connect: 内容 :param files: 附件,格式:{'path': '路径', 'read': 'r', 'encoding': 'utf-8', '_charset': 'utf-8', 'name': '文件名'} :param server: 邮件服务器地址 """ self.sender = sender self.sender_name = sender_name self.sender_token = sender_token self.attn = attn self.attn_name = attn_name self.subject = subject self.connect = connect self.files = files self.server = server def accessory(self, file): """ 处理单个附件 :param file: :return: """ path = file.get('path') rea = file.get('read') e = file.get('encoding') _charset = file.get('_charset') name = file.get('name') if not name: name = os.path.split(path)[-1] if e: with open(path, rea, encoding=e) as r: connect = r.read() else: with open(path, rea) as r: connect = r.read() acc = MIMEText(connect, _charset=_charset) acc["Content-Type"] = 'application/octet-stream' # 不能兼容outlook # acc1["Content-Disposition"] = f'attachment; filename="{name}"' # 可以兼容outlook acc.add_header("Content-Disposition", "attachment", filename=("gb18030", "", name)) return acc def send_email(self): # connect = "这是我使用python smtplib及email模块发送的邮件" # 正文 msg = MIMEMultipart() # 括号里的对应发件人邮箱昵称、发件人邮箱账号 msg['From'] = formataddr([self.sender_name, self.sender]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号 msg['To'] = formataddr([self.attn_name, self.attn]) # 邮件的主题,也可以说是标题 msg['Subject'] = self.subject # 正文 msg.attach(MIMEText(self.connect, _charset='utf-8')) # 附件 for file in self.files: acc = self.accessory(file) msg.attach(acc) # 发件人邮箱中的SMTP服务器,端口是465 # server = smtplib.SMTP_SSL("smtp.qq.com", 465) server = smtplib.SMTP_SSL(self.server, 465) # 括号中对应的是发件人邮箱账号、邮箱密码 server.login(self.sender, self.sender_token) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件 server.sendmail(self.sender, [self.attn, ], msg.as_string()) server.quit() # 关闭连接 def run(self): # self.send_email() try: self.send_email() return True except Exception as e: print(e.args)
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:发邮件 - Python技术站