Mail发送
普通版发送mail
# -*- coding: utf-8-*- import smtplib import datetime from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from Application.Utils.Log import Log class SendMail(object): def __init__(self, recv, parameter, ssl=True, email_host='smtp.163.com', port=25, ssl_port=465): ''' :param username: 用户名 :param passwd: 密码 :param recv: 收件人,多个要传list ['a@qq.com','b@qq.com] :param title: 邮件标题 :param content: 邮件正文 :param file: 附件路径,如果不在当前目录下,要写绝对路径,默认没有附件 :param ssl: 是否安全链接,默认为普通 :param email_host: smtp服务器地址,默认为163服务器 :param port: 非安全链接端口,默认为25 :param ssl_port: 安全链接端口,默认为465 ''' self.username = '**@163.com' # 用户名 self.passwd = '***' # 密码 self.recv = recv # 收件人,多个要传list ['a@qq.com','b@qq.com] self.title = f'时间统计:{datetime.datetime.now()}' # 邮件标题 self.content = f'时间统计:{datetime.datetime.now()}' # 邮件正文 self.email_host = email_host # smtp服务器地址 self.port = port # 普通端口 self.ssl = ssl # 是否安全链接 self.ssl_port = ssl_port # 安全链接端口 self.parameter = parameter # 要发送的数据 self.mail_msg() def mail_msg(self): mail_msg = """ <table border="1"> <tr> <th>111111</th> <th>22222</th> <th>333333</th> </tr> {table} </table> """ s = """ """ for i in self.parameter: s += ''' <tr> <td>{queue_name}</th> <td>{recently_time}</th> <td>{query_number}</th> </tr> '''.format(queue_name=i.get('queue_name'), recently_time=i.get('recently_time'), query_number=i.get('query_number')) self.send_mail(mail_msg.format(table=s)) def send_mail(self, mail_msg): msg = MIMEMultipart() msg.attach(MIMEText(mail_msg, 'html', 'utf-8')) # 邮件正文的内容 msg['Subject'] = self.title # 邮件主题 msg['From'] = self.username # 发送者账号 msg['To'] = ','.join(self.recv) # 接收者账号列表 if self.ssl: self.smtp = smtplib.SMTP_SSL(self.email_host, port=self.ssl_port) else: self.smtp = smtplib.SMTP(self.email_host, port=self.port) # 发送邮件服务器的对象 self.smtp.login(self.username, self.passwd) try: self.smtp.sendmail(self.username, self.recv, msg.as_string()) except Exception as e: Log('Mail').info(e) self.smtp.quit()
yagmail 实现发邮件
yagmail 可以更简单的来实现自动发邮件功能。
github项目地址: https://github.com/kootenpv/yagmail
pip install yagmail
import yagmail #链接邮箱服务器 yag = yagmail.SMTP( user="user@126.com", password="1234", host='smtp.126.com') # 邮箱正文 contents = ['This is the body, and here is just text http://somedomain/image.png', 'You can find an audio file attached.', '/local/path/song.mp3'] # 发送邮件 yag.send('taaa@126.com', 'subject', contents)
总共四行代码搞定,是不是比上面的例子简单太多了。
多用户只需要添加要发送的附件列表即可。
# 发送邮件 yag.send(['aa@126.com','bb@qq.com','cc@gmail.com'], 'subject', contents)
只需要将接收邮箱 变成一个list即可。
附件
# 发送邮件 yag.send('aaaa@126.com', '发送附件', contents, ["d://log.txt","d://baidu_img.jpg"])