Python 邮件发送

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值