from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
import smtplib
class Mail:
def __init__(self, u_p_r, f_t_h_t, accessory, connetc, debuglevel=False):
self.c_1 = u_p_r
self.c_2 = f_t_h_t
self.c_3 = accessory
self.c_4 = connetc
self.sender = u_p_r[0]
self.sender_pass = u_p_r[1]
self.receivers = u_p_r[2]
self.From = f_t_h_t[0]
self.To = f_t_h_t[1]
self.Header = f_t_h_t[2]
self.Text = f_t_h_t[3]
self.Accessory = accessory
self.server_host = connetc[0]
self.server_port = connetc[1]
self.debuglevel = debuglevel
self.debugmessage = ""
def check(self):
for date in [self.c_1, self.c_2, self.c_3, self.c_4]:
for ci in date:
if type(ci) is list:
pass
elif type(ci) is str:
pass
else:
return -1
def mail(self):
if self.check() == -1:
print("检查未通过")
return -1
message = MIMEMultipart()
if self.From.strip() != "":
message['From'] = Header(self.From, 'utf-8')
if self.To.strip() != "":
message['To'] = Header(self.To, 'utf-8')
if self.Header.strip() != "":
message['Subject'] = Header(self.Header, 'utf-8')
if self.Text.strip() != "":
message.attach(MIMEText(self.Text, 'plain', 'utf-8'))
for fs in range(len(self.Accessory)):
att1 = MIMEText(open(self.Accessory[fs], 'rb').read(), 'base64', 'utf-8')
sign = self.Accessory[fs].find("/")
signu = '/'
if sign == -1:
signu = '\\'
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename=%s' % Header(self.Accessory[fs].split(signu)[-1], 'utf-8').encode('utf-8')
message.attach(att1)
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(str(self.server_host), int(self.server_port))
smtpObj.login(self.sender, self.sender_pass)
if self.debuglevel is True:
self.debugmessage = smtpObj.set_debuglevel(1)
smtpObj.sendmail(self.sender, self.receivers.split(';'), message.as_string())
return 0
except smtplib.SMTPException as e:
print("Error: 无法发送邮件")
print(e)
return -1
if __name__ == '__main__':
# 发件人 密钥 接收人 用“;”分开
user = ['******@qq.com', '*********', '*****;']
# 来自(from) 到(to) 标题 正文
text = ['000', '', '数据统计', '请查收']
# 第三方服务端口 465 25 ...
server = ["smtp.qq.com", "25"]
# 附件地址列表
files = [fiilename1, fiilename2]
mail1 = Mail(user, text, files, server)
mail1.mail()
python3 发送邮件
最新推荐文章于 2024-09-24 17:12:23 发布
1万+

被折叠的 条评论
为什么被折叠?



