python 发送邮件connect none_python发送邮件(示例代码)

importsmtplibfrom email importencodersfrom email.mime.base importMIMEBasefrom email.mime.image importMIMEImagefrom email.mime.multipart importMIMEMultipartfrom email.mime.text importMIMETextclassmailsender(object):def __init__(self, host, port):

self.smtp=smtplib.SMTP()

self.smtp_ssl=smtplib.SMTP_SSL()

self.smtp.connect(host, port)

self.user=None

self.pwd=Nonedeflogin(self, user, pwd):"""登录

:param user: 邮箱用户名

:param pwd: 邮箱密码

:return:"""self.user=user

self.smtp.login(user, pwd)defadd_attachment(self, filename):"""添加附加

:param filename: 附件路径

:return:"""att= MIMEBase(‘application‘, ‘octet-stream‘)

att.set_payload(open(filename,‘rb‘).read())

att.add_header(‘Content-Disposition‘, ‘attachment‘, filename=(‘utf-8‘, ‘‘, filename))

encoders.encode_base64(att)returnattdefadd_img(self, filename, img_id):"""添加正文中图片

:param filename: 图片路径

:param img_id: 图片ID机标识符

:return:"""msg_image= MIMEImage(open(filename, ‘rb‘).read()) #读取图片内容

msg_image.add_header(‘Content-ID‘, img_id) #指定文件的Content-ID,,在HTML中图片src将用到

returnmsg_imagedefstructure_email(self, email_info):"""构建邮件

:return:"""msg= MIMEMultipart(‘alternative‘)if email_info.get("is_html"):#html格式

contents = MIMEText(email_info.get("content"), ‘html‘, _charset=‘utf-8‘)else:

contents= MIMEText(email_info.get("content"), ‘plain‘, _charset=‘utf-8‘)

msg.attach(contents)

msg[‘subject‘] = email_info.get("subject")

msg[‘from‘] =self.user

msg[‘to‘] = email_info.get("send_target")

attachments= email_info.get("attachments", [])#处理附件

for attachment_item inattachments:

msg.attach(self.add_attachment(attachment_item))if email_info.get("is_html"):#处理html正文中的图片

image_attachments = email_info.get("image_attachments", {})for image_id, image_filename inimage_attachments.items():

msg.attach(self.add_img(image_filename, image_id))returnmsgdefsend(self, msg, to_addr):"""发送邮件

:param msg: 邮件体

:param to_addr: 收件人

:return:"""self.smtp.sendmail(self.user, to_addr, msg.as_string())

self.smtp.quit()if __name__ == ‘__main__‘:

email_host= "smtp.163.com"email_port= "25"user= "92066@163.com"password= "password"message_data={"creator": "00000", #创建人

"create_time": 1345678123456, #创建时间

"subject": "邮件主题","content": ‘ 官网业务周平均延时图表 :
详细内容见附件
‘, # image_id_1这个是和添加图片用的id对应上"send_target": ["123@qq.com"],"notice_type": 1, #1-邮件,2-短信,3-web

"status": 1, #1-待发送,2-发送成功,3发送失败

"try_times": 0, #尝试次数

"is_deleted": 0, #0-正常,1-已删除

"attachments": [], #附件列表

"is_html": 0, #0-正常文本,1-HTML

"image_attachments": {"image_id_1": ""} #正文是否为HTML,且带图片

}

email=mailsender(email_host, email_port)

email.login(user, password)

msg=email.structure_email(message_data)

email.send(msg, message_data.get("send_target"))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值