• 02: python3使用email和smtplib库发送邮件


    1.1 发送qq邮箱

      注:python代理登录qq邮箱发邮件,是需要更改自己qq邮箱设置的。在这里大家需要做两件事情:邮箱开启SMTP功能 、获得授权码 教程链接

      1、给单个人发邮件 参考

    from email.mime.text import MIMEText
    from email.header import Header
    from smtplib import SMTP_SSL
    
    #qq邮箱smtp服务器
    host_server = 'smtp.qq.com'
    #sender_qq为发件人的qq号码
    sender_qq = '153236xxx'
    #pwd为qq邮箱的授权码
    pwd = 'drjzidfyftatheca'
    #发件人的邮箱
    sender_qq_mail = '153236xxx@qq.com'
    #收件人邮箱
    receiver = '153236xxx@qq.com'
    #邮件的正文内容
    mail_content = '你好,我是来自知乎的[tom肖] ,现在在进行一项用python登录qq邮箱发邮件的测试'
    #邮件标题
    mail_title = '您好,这是测试邮件'
    
    #ssl登录
    smtp = SMTP_SSL(host_server)
    #set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式
    smtp.set_debuglevel(1)
    smtp.ehlo(host_server)
    smtp.login(sender_qq, pwd)
    
    msg = MIMEText(mail_content, "plain", 'utf-8')
    msg["Subject"] = Header(mail_title, 'utf-8')
    msg["From"] = sender_qq_mail
    msg["To"] = receiver
    smtp.sendmail(sender_qq_mail, receiver, msg.as_string())
    smtp.quit()
    给单个人发邮件

      2、群发

    from email.mime.text import MIMEText
    from email.header import Header
    from smtplib import SMTP_SSL
    
    #sender_qq为发件人的qq号码
    sender_qq = '1532363xxx'
    #pwd为qq邮箱的授权码
    pwd = 'drjzidfyftatheca'
    #收件人邮箱receiver
    receiver='1532363xxx@qq.com'
    #邮件的正文内容
    mail_content = '你好,我是来自博客园的[tom肖] ,现在在进行一项用python登录qq邮箱发邮件的测试'
    #邮件标题
    mail_title = '这是一封测试邮件'
    
    def send_mail(sender_qq='',pwd='',receiver='',mail_title='',mail_content=''):
        # qq邮箱smtp服务器
        host_server = 'smtp.qq.com'
        sender_qq_mail = sender_qq+'@qq.com'
    
        #ssl登录
        smtp = SMTP_SSL(host_server)
        #set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式
        smtp.set_debuglevel(1)
        smtp.ehlo(host_server)
        smtp.login(sender_qq, pwd)
    
        msg = MIMEText(mail_content, "plain", 'utf-8')
        msg["Subject"] = Header(mail_title, 'utf-8')
        msg["From"] = sender_qq_mail
        msg["To"] = receiver
        smtp.sendmail(sender_qq_mail, receiver, msg.as_string())
        smtp.quit()
    
    for i in range(10):
         send_mail(sender_qq=sender_qq,pwd=pwd,receiver=receiver,mail_title=mail_title,mail_content=mail_content)
    测试群发邮件

      3、邮件格式化

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    import requests
    import datetime
    
    
    def format_email(not_phone_list):
        with open('content.html','r') as f:
            content = f.read()
        not_phone_list = [{'jobid':'001','name':'张三','mobile':'18538753511'},
                     {'jobid':'002','name':'李四','mobile':'18538753511'},
                     {'jobid':'003','name':'王五','mobile':'18538753511'}]
        tr = '''
                <tr>
                    <td>%s</td>
                    <td>%s</td>
                    <td>%s</td>
                </tr>
            '''
        s = ''
        for info in not_phone_list:
            s += tr%(info.get('jobid'),info.get('name'),info.get('mobile'))
        content = content.replace('ReplaceContent',s)
        return content
    
    
    def notify_by_email(not_phone_list):
        tos = 'naiqiang.xiao@yiducloud.cn'  # 发送的人员
        mailapi = 'http://op.intra.yiducloud.cn/phpmail/mail.php'
        sender = 'opsheet'
        mailtype = 'html'
    
        subject = '-'.join(['MIS系统同步通知', '预入职库中无法获取人员名单'])
        content = format_email(not_phone_list)
        data = {'content': content, 'subject': subject, 'tos': tos, 'mailtype': mailtype, 'sender': sender}
        try:
            r = requests.get(mailapi, params=data)
            return r.status_code
        except Exception as e:
            print e
    
    notify_by_email('')
    send_email.py
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .table{
                border-spacing: 0;
                border-collapse: collapse;
            }
            .table thead tr th,td{
                padding: 20px;
                padding-left: 50px;
                vertical-align: top;
                border-top: 1px solid #ddd;
            }
           td,th{
                display: table-cell;
            }
        </style>
    </head>
    <body>
        <table class="table table-striped">
            <thead>
                <tr>
                    <th>工号</th>
                    <th>姓名</th>
                    <th>手机号</th>
                </tr>
            </thead>
            <tbody>
                ReplaceContent
            </tbody>
        </table>
    </body>
    </html>
    content.html
  • 相关阅读:
    Jobs(一)前端页面
    MySQL 聚合函数与count()函数
    计算机概论 64bit和32bit的CPU的不同
    Maven如何发布项目到一个Tomcat中
    创建一个简单的Maven工程
    Maven安装与配置
    Maven整合Spring与Solr
    solr应用
    hashCode()与equals()区别
    Callable与Future
  • 原文地址:https://www.cnblogs.com/xiaonq/p/8351998.html
Copyright © 2020-2023  润新知