Python 邮件发送
data.py
import os
user="lxc19901202@163.com"
password = "授权码"
sender = "发送者"
receive = ["接收者1","接收者2"]
content ={
"title":"report",
"path": os.path.join(os.getcwd(),"excel.xls").replace("\\","/"),
"content":"<html><h1>自动化测试报告:见附件</h1></html>"
}
if __name__ == "__main__":
print(content["path"])
send_email.py
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
class SendEmail(object):
def __init__(self,user,password,sender,receive,kwd):
"""
@user: 登录用户名
@password: 密码
@sender: 发送人
@receive: 接收人的用户名
@args: 发送内容--为多个参数,标题和正文, 附件
"""
self.user = user
self.password = password
self.sender = sender
self.receive = receive
self.sendcontent = kwd
"""
发送邮箱服务器
"""
self.smtpserver = "smtp.163.com"
def __makeAttachment(self):
"""构造附件"""
with open(self.sendcontent["path"],"rb") as f:
att = f.read()
content=MIMEText(att,"base64", "utf-8")
content["Conten-type"]="application/octet-stream"
content["Content-Disposition"]="attachment;filename='{}'".format("excel.xls")
return content
def __content(self):
"""
发送邮箱正文
"""
"""
判断是否群发
"""
if len(self.receive)>0 and len(self.receive)<=1:
""" 发给单个人 """
msg = MIMEMultipart()
msg.attach(MIMEText(self.sendcontent["content"], "html", "utf-8"))
msg["Subject"]=Header(self.sendcontent["title"], "utf-8")
msg["From"] = self.sender
msg["To"] = self.receive[0]
msg.attach(self.__makeAttachment())
elif len(self.receive)>1:
""" 发给多人 """
msg = MIMEMultipart()
msg.attach(MIMEText(self.sendcontent["content"], "html", "utf-8"))
msg["Subject"]=Header(self.sendcontent["title"], "utf-8")
msg["From"] = self.sender
msg["To"] = ",".join(self.receive)
msg.attach(self.__makeAttachment())
else:
print("没有填写发送人")
raise
return msg
def __emailLogin(self):
"""
1、指定 ssl 协议端口号 465
2、向服务器标识用户的身份
3、服务器返回结果确认
4、登录邮箱服务器用户名和密码
"""
smtp = smtplib.SMTP_SSL(self.smtpserver,465)
smtp.helo(self.smtpserver)
smtp.ehlo(self.smtpserver)
smtp.login(self.user,self.password)
return smtp
def sendEmail(self):
"""
发送邮件
"""
content = self.__content()
login = self.__emailLogin()
login.sendmail(self.sender, self.receive,content.as_string())
login.quit()
if __name__ == "__main__":
from data import *
mail = SendEmail(user,password,sender,receive,content)
mail.sendEmail()