zoukankan      html  css  js  c++  java
  • 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"])
  • 相关阅读:
    软件测试之测试策略
    如何在需求不明确的情况下保证测试质量
    《Web 前端面试指南》1、JavaScript 闭包深入浅出
    Vue-Router 页面正在加载特效
    Webpack 配置摘要
    svn 常用命令总结
    Vue + Webpack + Vue-loader 系列教程(2)相关配置篇
    Vue + Webpack + Vue-loader 系列教程(1)功能介绍篇
    关于Vue.js 2.0 的 Vuex 2.0,你需要更新的知识库
    Vue.js 2.0 和 React、Augular等其他框架的全方位对比
  • 原文地址:https://www.cnblogs.com/clbao/p/11167337.html
Copyright © 2011-2022 走看看