精华内容
下载资源
问答
  • 本文实例为大家分享了python自动发送报警监控邮件 的具体代码,供大家参考,具体内容如下 因为有一些日常任务需要每日检查日否执行正确,所以需要一个报警监控的机制,这个需要你指定你发送的邮箱和你接收的邮箱,就...
  • 主要介绍了python自动发测试报告邮件功能的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件
  • Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器守护程序向任何互联网机器发送邮件。 SMTP通讯的基本流程可以概括为以下几点: 1.连接SMTP服务器 2.登陆用户名和密码 3....
  • 主要介绍了python实现邮件循环自动发件功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • Python实现自动发送邮件(详解)

    千次阅读 多人点赞 2020-12-16 12:21:21
    Python实现自动发送邮件 1.开启SMTP服务 为了实现自动发送邮件的目的,我们需要在邮箱中开启SMTP服务: 这点很关键,别忘了去开启SMTP, 别忘了去开启SMTP,否则邮件是无法发送成功的 。然后你还需要点击下面生成...

    Python实现自动发送邮件

    1.开启SMTP服务

    为了实现自动发送邮件的目的,我们需要在邮箱中开启SMTP服务:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这点很关键,别忘了去开启SMTP, 别忘了去开启SMTP,否则邮件是无法发送成功的 。然后你还需要点击下面生成授权码,这个授权码才是使用Python发送邮件时的真正密码
    在这里插入图片描述

    2.python发邮件需要掌握两个模块

    smtplib和email,这俩模块是python自带的,只需import即可使用。smtplib模块主要负责发送邮件,email模块主要负责构造邮件。

    smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。

    email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。

    代码说明:
    1)smtplib模块

    smtplib.SMTP() :实例化SMTP()

    login(user,password):
    user:登录邮箱的用户名。
    password:登录邮箱的密码,像笔者用的是网易邮箱,网易邮箱一般是网页版,需要用到客户端密码,需要在网页版的网易邮箱中设置授权码,该授权码即为客户端密码。

    sendmail(from_addr,to_addrs,msg,…):
    from_addr:邮件发送者地址
    to_addrs:邮件接收者地址。字符串列表[‘接收地址1’,‘接收地址2’,‘接收地址3’,…]或’接收地址’
    msg:发送消息:邮件内容。一般是msg.as_string():as_string()是将msg(MIMEText对象或者MIMEMultipart对象)变为str。

    quit():用于结束SMTP会话。

    2)email模块

    email模块下有mime包,mime英文全称为“Multipurpose Internet Mail Extensions”,即多用途互联网邮件扩展,是目前互联网电子邮件普遍遵循的邮件技术规范。

    该mime包下常用的有三个模块:text,image,multpart。
    导入方法如下:

    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    

    构造一个邮件对象就是一个Message对象,如果构造一个MIMEText对象,就表示一个文本邮件对象,如果构造一个MIMEImage对象,就表示一个作为附件的图片,要把多个对象组合起来,就用MIMEMultipart对象,而MIMEBase可以表示任何对象。它们的继承关系如下:

    Message
    +- MIMEBase
       +- MIMEMultipart
       +- MIMENonMultipart
          +- MIMEMessage
          +- MIMEText
          +- MIMEImage
    

    1、自动发送普通的文字邮件代码实现如下:

    from smtplib import SMTP_SSL
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    
    # smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。
    # email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。
    
    
    host_server = 'smtp.qq.com'  #qq邮箱smtp服务器
    sender_qq = '9156393@qq.com' #发件人邮箱
    pwd = '你的授权码'
    receiver = ['910393@qq.com','824864@qq.com' ]#收件人邮箱
    #receiver = '913@qq.com'
    mail_title = 'Python自动发送的邮件' #邮件标题
    mail_content = "您好,这是使用python登录QQ邮箱发送邮件的测试——zep" #邮件正文内容
    # 初始化一个邮件主体
    msg = MIMEMultipart()
    msg["Subject"] = Header(mail_title,'utf-8')
    msg["From"] = sender_qq
    # msg["To"] = Header("测试邮箱",'utf-8')
    msg['To'] = ";".join(receiver)
    # 邮件正文内容
    msg.attach(MIMEText(mail_content,'plain','utf-8'))
    
    
    
    smtp = SMTP_SSL(host_server) # ssl登录
    
    # login(user,password):
    # user:登录邮箱的用户名。
    # password:登录邮箱的密码,像笔者用的是网易邮箱,网易邮箱一般是网页版,需要用到客户端密码,需要在网页版的网易邮箱中设置授权码,该授权码即为客户端密码。
    smtp.login(sender_qq,pwd)
    
    # sendmail(from_addr,to_addrs,msg,...):
    # from_addr:邮件发送者地址
    # to_addrs:邮件接收者地址。字符串列表['接收地址1','接收地址2','接收地址3',...]或'接收地址'
    # msg:发送消息:邮件内容。一般是msg.as_string():as_string()是将msg(MIMEText对象或者MIMEMultipart对象)变为str。
    smtp.sendmail(sender_qq,receiver,msg.as_string())
    
    # quit():用于结束SMTP会话。
    smtp.quit()
    

    在这里插入图片描述
    2、发送html格式邮件

    import smtplib
    from smtplib import SMTP_SSL
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    
    
    host_server = 'smtp.qq.com'  #qq邮箱smtp服务器
    sender_qq = '91693@qq.com' #发件人邮箱
    pwd = '你的授权码'
    receiver = '96393@qq.com'
    mail_title = 'Python自动发送html格式的邮件' #邮件标题
    
    #邮件正文内容
    mail_content = "您好,<p>这是使用python登录QQ邮箱发送HTNL格式邮件的测试:</p> <p><a href='https://blog.csdn.net/weixin_44827418?spm=1000.2115.3001.5113'>CSDN个人主页</a></p>"
    
    msg = MIMEMultipart()
    msg["Subject"] = Header(mail_title,'utf-8')
    msg["From"] = sender_qq
    msg["To"] = Header("测试邮箱","utf-8")
    
    msg.attach(MIMEText(mail_content,'html'))
    
    try:
        smtp = SMTP_SSL(host_server) # ssl登录连接到邮件服务器
        smtp.set_debuglevel(1) # 0是关闭,1是开启debug
        smtp.ehlo(host_server) # 跟服务器打招呼,告诉它我们准备连接,最好加上这行代码
        smtp.login(sender_qq,pwd)
        smtp.sendmail(sender_qq,receiver,msg.as_string())
        smtp.quit()
        print("邮件发送成功")
    except smtplib.SMTPException:
        print("无法发送邮件")
    
    

    在这里插入图片描述

    3、发送带附件的邮件

    import smtplib
    import string
    from smtplib import SMTP_SSL
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    from email.mime.application import MIMEApplication # 用于添加附件
    
    
    host_server = 'smtp.qq.com'  #qq邮箱smtp服务器
    sender_qq = '91393@qq.com' #发件人邮箱
    pwd = '你的授权码'
    receiver = '9193@qq.com'
    mail_title = 'Python自动发送html格式的邮件' #邮件标题
    
    #邮件正文内容
    mail_content = "您好,<p>这是使用python登录QQ邮箱发送HTNL格式邮件的测试:</p> <p><a href='https://blog.csdn.net/weixin_44827418?spm=1000.2115.3001.5113'>CSDN个人主页</a></p>"
    
    msg = MIMEMultipart()
    msg["Subject"] = Header(mail_title,'utf-8')
    msg["From"] = sender_qq
    msg["To"] = Header("测试邮箱","utf-8")
    
    msg.attach(MIMEText(mail_content,'html'))
    attachment = MIMEApplication(open('./test.xlsx','rb').read())
    attachment["Content-Type"] = 'application/octet-stream'
    # 给附件重命名
    basename = "test.xlsx"
    attachment.add_header('Content-Dispositon','attachment',filename=('utf-8', '', basename))#注意:此处basename要转换为gbk编码,否则中文会有乱码。
    msg.attach(attachment)
    
    
    try:
        smtp = SMTP_SSL(host_server) # ssl登录连接到邮件服务器
        smtp.set_debuglevel(1) # 0是关闭,1是开启debug
        smtp.ehlo(host_server) # 跟服务器打招呼,告诉它我们准备连接,最好加上这行代码
        smtp.login(sender_qq,pwd)
        smtp.sendmail(sender_qq,receiver,msg.as_string())
        smtp.quit()
        print("邮件发送成功")
    except smtplib.SMTPException:
        print("无法发送邮件")
    
    

    在这里插入图片描述

    3.使用zmail模块读取邮件

    首先需要在cmd命令行安装zmail模块,输入pip install zmail安装即可
    在这里插入图片描述

    import zmail
    
    server = zmail.server('9193@qq.com','你的授权码')
    mail = server.get_latest()
    zmail.show(mail)
    

    在这里插入图片描述

    import zmail
    
    server = zmail.server('993@qq.com','你的授权码')
    mail = server.get_latest()
    # zmail.show(mail)
    print(mail['subject'])
    print(mail['id'])
    print(mail['from'])
    print(mail['to'])
    print(mail['content_text'])
    print(mail['content_html'])
    
    # 用来保存附件
    # target_path为None则默认保存在当前目录下
    # overwrite=True 是指如果出现同名文件则进行覆盖
    zmail.save_attachment(mail,target_path=None,overwrite=True)
    

    在这里插入图片描述

    展开全文
  • 主要为大家详细介绍了python实现自动发送邮件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Python 自动发送邮件详细教程

    千次阅读 2020-06-26 23:45:57
    自动发送邮件能应用于许多场景中,比如我想要知道股票策略中的股票池...下面就来讲讲怎么用Python构建一个自动发送邮件的脚本。 1.开启SMTP服务 为了实现自动发送邮件的目的,我们需要在邮箱中开启SMTP服务: 这点

    自动发送邮件能应用于许多场景中,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费时间了。为什么不把这一套流程放到服务器上,然后到点自动运行并发送邮件呢?

    类似的应用场景还有很多,不仅仅是在股票策略提醒上,比如定时向某些人发送邮件;还比如网站宕机了,实时发送邮件提醒;又比如网站负载过高,发送邮件提醒…等等。

    下面就来讲讲怎么用Python构建一个自动发送邮件的脚本。

    1.开启SMTP服务

    为了实现自动发送邮件的目的,我们需要在邮箱中开启SMTP服务:

    这点很关键,别忘了去开启SMTP, 别忘了去开启SMTP,否则邮件是无法发送成功的 。然后你还需要点击下面生成授权码,这个授权码才是使用Python发送邮件时的真正密码。

    邮箱设定成功后,就可以开始脚本开发了。

    2.准备

    开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda

    Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。

    当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端运行命令安装依赖模块,多舒服的一件事啊:Python 编程的最好搭档—VSCode 详细指南。

    在终端输入以下命令安装我们所需要的依赖模块:

    pip install yagmail
    

    看到 Successfully installed xxx 则说明安装成功。本文全部源代码可在公众号后台回复:自动发送邮件 获得。

    3.编写脚本

    今天需要用到的模块是yagmail,一个非常方便的Python邮件发送模块,用这个模块,你甚至能一行命令发送邮件:

    yag = yagmail.SMTP(
        host='smtp.qq.com', user='你的邮箱',
        password='你的授权码', smtp_ssl=True
    ).send('发送对象', '主题', '内容')
    

    为了让这个发送邮件的方法更加具备可用性,我们将其封装到一个类中:

    import yagmail 
    class Mail:
        """
        邮件相关类
        """ 
        def sendmail(self, msg, title, receivers):
            """
            发送邮件
            
            Arguments:
                msg {str} -- 邮件正文
                title {str} -- 邮件标题
                receivers {list} -- 邮件接收者,数组
            """
    
            yag = yagmail.SMTP(
                host='smtp.qq.com', user='你的邮箱',
                password='你的鉴权码', smtp\_ssl=True
            )
    
            try:
                yag.send(receivers, title, msg)
                print("邮件发送成功")
    
            except BaseException as e:
                print (e)
                print("Error: 无法发送邮件") 
    

    这个类里还可以封装很多其他东西,比如log函数,用于显示时间:

    import time
    class Mail:
        """
        邮件相关类
        """
    
        def log(self, content):
            now\_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
            print(f'{now\_time}: {content}')
    

    这样,需要显示时间的时候只需要调用self.log即可,可将sendmail函数改成如下所示:

        def sendmail(self, msg, title, receivers):
            """
            发送邮件
            
            Arguments:
                msg {str} -- 邮件正文
                title {str} -- 邮件标题
                receivers {list} -- 邮件接收者,数组
            """
    
            yag = yagmail.SMTP(
                host='smtp.qq.com', user='你的邮箱',
                password='你的鉴权码', smtp_ssl=True
            )
    
            try:
                yag.send(receivers, title, msg)
                self.log("邮件发送成功")
    
            except BaseException as e:
                print (e)
                self.log("Error: 无法发送邮件")
    
    

    发送成功时显示:

    PS D:\\CODE\\stock\\api> python .\\sendmail\_yagmail.py
    2020-04-22 00:51:34: 邮件发送成功
    

    4.小例子

    将刚刚编写完的类保存为sendmail.py,接下来就可以尝试一个小例子。我们用一个自动监控网站是否宕机的小脚本做示例:

    import time
    import requests
    from sendmail import Mail
    
    while True:
        response = requests.get('https://pythondict.com')
    
        # 根据状态码判断网站是否正常
        if response.status_code != 200:
            Mail().sendmail(
                '哥, pythondict挂了', 'Python实用宝典网站异常监控', ['你的邮箱']
            )
    
        time.sleep(600)
    

    通过requests.get请求网站,使用response.status_code即可得到状态码,200为正常,其他情况均为异常。这个检测每十分钟运行一次,因此 time.sleep(600).

    就这样,我们构建起了一个非常简单的网站异常监控脚本,如果你真的要在服务器上运行这个脚本,请记得使用nohup让其在后台运行。

    总之,自动发送邮件的用途非常广泛,不亚于手机自动通知,具体使用就要看各位自身的需求啦。

    自动通知系列文章:

    让Python自动提醒你:阿森纳进球啦!

    Python 自动发送邮件详细教程

    我们的文章到此就结束啦,如果你希望我们今天的Python 实战教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦,有任何问题都可以在下方留言区留言,我们都会耐心解答的!


    Python实用宝典
    不只是一个宝典
    欢迎关注公众号:Python实用宝典

    原文来自Python实用宝典:Python 自动发送邮件详细教程

    Python实用宝典

    展开全文
  • 本脚本可以实现自动发送邮件
  • 该源码是针对特定网站,不是通用代码,但是具有一定的参考性,不想下载可以看我博客有相应的每个部分的代码块 http://blog.csdn.net/henni_719/article/details/60580815
  • python邮件自动发送 注:仅用于学习,切莫做其他用途。 基础知识 SMTP 全称“简单邮件传输协议” 基于TCP/IP的协议 可以对连接进行认证,也可以不认证 可以对连接进行加密,也可以不加密 主要作用: 1、提交邮件。...

    python邮件自动发送

    注:仅用于学习,切莫做其他用途。

    基础知识

    SMTP

    全称“简单邮件传输协议”

    • 基于TCP/IP的协议
    • 可以对连接进行认证,也可以不认证
    • 可以对连接进行加密,也可以不加密

    主要作用:

    1、提交邮件。当用户在电脑上输入电子邮件信息时,电子邮件客户端会使用SMTP将用户输入的电子邮件提交至服务器,由该服务器负责将电子邮件发送至接收服务器。

    2、传输邮件。电子邮件服务器使用SMTP来传输消息。每条消息中途都会经过互联网上的多台邮件服务器,直到到达负责接手电子邮件地址域(domain,电子邮件地址中在@符号后面的部分)的服务器为止。

    常见邮箱服务器(SMTP,POP3)地址,端口

    详见
    gmail(google.com)
    POP3服务器地址:pop.gmail.com(SSL启用 端口:995)
    SMTP服务器地址:smtp.gmail.com(SSL启用 端口:587)

    163.com:
    POP3服务器地址:pop.163.com(端口:110)
    SMTP服务器地址:smtp.163.com(端口:25)

    QQ邮箱

    POP3服务器地址:pop.qq.com(端口:110)

    SMTP服务器地址:smtp.qq.com (端口:25)

    SMTP服务器需要身份验证

    QQ企业邮箱

    POP3服务器地址:pop.exmail.qq.com (SSL启用 端口:995)

    SMTP服务器地址:smtp.exmail.qq.com(SSL启用 端口:587/465)

    python库

    smtplib模块

    SMTP.set_debuglevel(level)设置输出debug调试信息,默认不输出
    SMTP.docmd(cmd[, argstring])发送一个命令到SMTP服务器
    SMTP.connect([host[, port]])连接到指定的SMTP服务器
    SMTP.helo([hostname])使用helo指令向SMTP服务器确认你的身份
    SMTP.ehlo(hostname)使用ehlo指令像ESMTP(SMTP扩展)确认你的身份
    SMTP.ehlo_or_helo_if_needed()如果在以前的会话连接中没有提供ehlo或者helo指令,这个方法会调用ehlo()或helo()
    SMTP.has_extn(name)判断指定名称是否在SMTP服务器上
    SMTP.verify(address)判断邮件地址是否在SMTP服务器上
    SMTP.starttls([keyfile[, certfile]])使SMTP连接运行在TLS模式,所有的SMTP指令都会被加密
    SMTP.login(user, password)登录SMTP服务器
    SMTP.sendmail(from_addr, to_addrs, msg, mail_options=[], rcpt_options=[])发送邮件from_addr:邮件发件人to_addrs:邮件收件人msg:发送消息
    SMTP.quit()关闭SMTP会话
    SMTP.close()关闭SMTP服务器连接

    关于错误解决

    1、smtplib.SMTPAuthenticationError: (535, b’Error: authentication failed’)

    image-20201023083319948

    smtper.login(sender,'password')

    问题解决

    'password’处要填入网易邮箱网页中的授权码。

    2、smtplib.SMTPDataError: (554, b’DT:SPM 163 smtp9,DcCowAAXm4ybIZJfrAHIMg–.47672S2 1603412379,please see http://mail.163.com/help/help_spam_16.htm?ip=117.32.216.90&hostid=smtp9&time=1603412379’)

    问题原因

    163邮箱设置有反垃圾邮件机制,该邮件已被当作垃圾邮件。

    问题解决

    问题出现在代码中关于信件收发人的格式部分,需将message中的From和To改成以下格式

    message['From'] = "xxxxxx@xxxx.com"
    message['To'] = "xxxxx@xx.com"
    

    邮件攻击代码(带tkinter界面)

    啥是tkinter界面

    发送邮箱只限于网易邮箱

    import tkinter as tk
    from tkinter import messagebox
    from smtplib import SMTP
    from email.header import Header
    from email.mime.text import MIMEText
    import time
    #设置tkinter主界面
    window = tk.Tk()
    window.title('攻击邮件')
    window.geometry('800x700')
    #设置各种输入框
    l_1 = tk.Label(window, text='请输入发送邮箱:')
    l_1.grid(row=0)
    e_sender = tk.Entry(window, show = None)
    e_sender.grid(row=0, column=1, sticky=tk.W)
    l_2 = tk.Label(window, text='请输入发送邮箱授权码:')
    l_2.grid(row=1)
    e_password = tk.Entry(window, show = None)
    e_password.grid(row=1, column=1, sticky=tk.W)
    tk.Label(window, text="请输入接收邮箱:").grid(row=2)
    e_receivers = tk.Entry(window, width=70,show = None)
    e_receivers.grid(row=2, column=1, sticky=tk.W)
    tk.Label(window, text='请输入发送内容标题:').grid(row=3)
    e_title = tk.Entry(window, show=None)
    e_title.grid(row=3, column=1, sticky=tk.W)
    tk.Label(window, text='请输入发送内容:').grid(row=4)
    t = tk.Text(window)
    t.grid(row=4, column=1, sticky=tk.W)
    tk.Label(window, text='请输入发送次数:').grid(row=5)
    e_times = tk.Entry(window, show = None)
    e_times.grid(row=5, column=1, sticky=tk.W)
    tk.Label(window, text='请设置发送时间间隔(单位s):').grid(row=6)
    e_sleep = tk.Entry(window, show = None)
    e_sleep.grid(row=6, column=1, sticky=tk.W)
    #获取用户输入的值赋值给变量
    def submit():
        global sender
        sender = e_sender.get()
        global password
        password = e_password.get()
        global receivers
        receivers = e_receivers.get()
        global something
        something = t.get('0.0','end')
        global times
        times = e_times.get()
        global sleep
        sleep = e_sleep.get()
        global title
        title = e_title.get()
    #发送邮件    
    def do():
        message = MIMEText(something, 'plain', 'utf-8')
        message['From'] =sender  #发件人
        message['To'] = receivers   #收件人
        subject = title
        message['Subject'] = Header(subject, 'utf-8') #邮件头设置
        smtper = SMTP('smtp.163.com')     #服务器地址
        #请自行修改下面的登录口令
        smtper.login(sender,password) #此处password输入授权码
        #循环发送times次
        for i in range(int(times)):
            smtper.sendmail(sender, receivers, message.as_string()) 
            time.sleep(int(sleep)) #设置发送间隔
        tk.messagebox.showinfo(title='好哇', message='邮件发送成功'+times+'次!')   
        
    tk.Button(window, text='提交', command=submit).grid(row=7)
    tk.Button(window, text='发送', command=do).grid(row=7, column=1)  
    window.mainloop()
    
    
    

    运行结果:

    image-20201031214351934

    展开全文
  • Python自动发邮件脚本

    2020-09-21 09:24:32
    本文主要介绍了Python自动发邮件脚本的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
  • 一、先开启各种邮箱的POP3/SMTP/IMAP和查看邮箱的服务器 ...二、编写代码,我用的是网易163邮箱 import yagmail #连接服务器 ...#准备正文内容 content =''' 好久不见,你还好吗。...#发送邮件 mail.send
  • Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol),简单的邮件传输协议。他是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP协议属于 TCP/IP 协议簇,它帮组每台计算机再...

    Python SMTP发送邮件

    • SMTP(Simple Mail Transfer Protocol),简单的邮件传输协议。他是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP协议属于 TCP/IP 协议簇,它帮组每台计算机再送中转信件时找到下一个目的地。SMTP服务器遵循 SMTP 协议的发送邮件服务器

    开启SMTP

    • 这里我们以QQ邮箱为例,我们在邮箱设置 - 账户中找到开启服务,然后点击开启STMP
    • 然后设置一下客户端授权码
    • 发短信开启

    在这里插入图片描述
    然后我们可以通过python实现邮件发送了,下面是一个简单的例子

    #! /usr/bin/python3
    # -*- coding: UTF-8 -*-
    
    import smtplib
    import time
    from email.mime.text import MIMEText
    from email.header import Header
    
    
    class TestMail(object):
    
        def __init__(self):
            self.mail_host = "smtp.qq.com"
            self.mail_user = "xxxxx@qq.com"
            self.mail_pass = ""  # 这里是QQ客户端授权密码
    
            self.sender = 'xxxxx@163.com' 
            self.receivers = ''
    
        def send_mail(self):
            body = 'Dear all:\n接口自动化测试报告如下:\n   测试用例集合:{}\n   运行结果:{}'.format('xxxx', 'xxxx')
            tm = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
            message = MIMEText(body, 'plain', 'utf-8')
            message['From'] = self.mail_user
            message['To'] = self.receivers
    
            subject = '接口自动化报告测试'
            message['Subject'] = Header(subject + '_' + tm, 'utf-8')
    
            try:
                smtpObj = smtplib.SMTP()
                smtpObj = smtplib.SMTP_SSL(self.mail_host, 465)
                smtpObj.login(self.mail_user, self.mail_pass)
                smtpObj.sendmail(self.sender, self.receivers, message.as_string())
                print('send mail ok')
            except smtplib.SMTPException:
                print('send mail fail')
    
    
    if __name__ == "__main__":
        send = TestMail()
        send.send_mail()
    
    
    • 然后通常在项目中,我们都是把邮箱的发送者和接受者以及一些邮件信息,单独放在config.yaml或者config.ini文件中进行配置化,下面我们来看看如何读取文件配置

    读取配置

    #! /usr/bin/python3
    # -*- coding: UTF-8 -*-
    
    [mail]
    #发送邮件信息
    mail_host = smtp.qq.com
    mail_user = xxx@qq.com
    mail_pass =            # 163客户端授权密码
    
    sender = @qq.com
    receivers = 
    
    
    • 读取配置
    #! /usr/bin/python3
    # -*- coding: UTF-8 -*-
    
    import smtplib
    import time
    from pathlib import Path
    from email.mime.text import MIMEText
    from email.header import Header
    
    from configparser import ConfigParser
    
    
    class TestMail(object):
    
        def __init__(self):
            self.config = ConfigParser()
            self.conf_path = str(Path('config.ini').absolute())  # 读取绝对路径
    
            self.config.read(self.conf_path, encoding='utf-8')
    
        def send_mail(self):
            body = 'Dear all:\nDEMO 接口自动化测试报告:\n   测试用例集合:{}\n   运行结果:{}'.format('xxxx', 'xxxx')
            tm = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
            message = MIMEText(body, 'plain', 'utf-8')
            message['From'] = self.config.get('mail', 'sender')
            message['To'] = self.config.get('mail', 'receivers')
    
            subject = '接口自动化测试报告'
            message['Subject'] = Header(subject + '_' + tm, 'utf-8')
    
            try:
                smtpObj = smtplib.SMTP()
                smtpObj = smtplib.SMTP_SSL(self.config.get('mail', 'mail_host'), 465)
                smtpObj.login(self.config.get('mail', 'mail_user'), self.config.get('mail', 'mail_pass'))
                smtpObj.sendmail(self.config.get('mail', 'sender'), self.config.get('mail', 'receivers'), message.as_string())
                print('send mail ok')
            except smtplib.SMTPException:
                print('send mail fail')
    
    
    if __name__ == "__main__":
        send = TestMail()
        send.send_mail()
    
    

    发送邮件带附件

    • 通常我们发邮件有时会需要发送附件,比如测试报告,贴代码
    #! /usr/bin/python3
    # -*- coding: UTF-8 -*-
    
    import os
    import smtplib
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    
    
    def send_kindle():
        mail_host = "smtp.qq.com"
        mail_user = "@qq.com"
        mail_pass = ""
    
        sender = '@qq.com'
        receivers = '@kindle.cn'
    
        message = MIMEMultipart()
        message['From'] = mail_user
        message['To'] = receivers
        subject = '{}'.format(filename)
        message['Subject'] = Header(subject, 'utf-8')
    
        message.attach(MIMEText('{}'.format(filename), 'plain', 'utf-8'))
    
        att1 = MIMEText(open('/Users/Documents/book/{}'.format(filename), 'rb').read(), 'base64', 'utf-8')
        att1["Content-Type"] = 'application/octet-stream'
        att1["Content-Disposition"] = 'attachment; filename="book.mobi"'
        message.attach(att1)
    
        try:
            smtpObj = smtplib.SMTP_SSL(mail_host, 465)
            smtpObj.login(mail_user, mail_pass)
            smtpObj.sendmail(sender, receivers, message.as_string())
            print("发送成功")
        except smtplib.SMTPException:
            print("Error: 发送失败")
    
    
    if __name__ == '__main__':
        filename = input("请输入您要发送的附件名称")
        os.path.split(filename)
        send_kindle()
    
    
    展开全文
  • 1、最近公司实现部分数据统计、分析的报表进行每天定时发送到相关人员的邮箱之中的配置代码被人为删除了,需要重新恢复该功能,由于原先是在linux上使用shell配置发送,实在是太繁琐,所以准备使用python来实现该...
  • 本文实例为大家分享了python实现邮件自动发送的具体代码,供大家参考,具体内容如下 case 1:纯文本和HTML文件发送 # -*- coding: UTF-8 -*- import smtplib import traceback from email.mime.text import ...
  • python发送邮件的具体步骤: 下面具体以qq邮箱????为例详细解释: 第0步:连接服务器        •连接服务器需要用到smtplib库,SMTP代表简单邮件传输协议,相当于一种计算机之间...
  • 自动发送邮件能应用于许多场景中,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费时间了。为什么不把这一套流程放到服务器上,然后到点自动运...
  • 因为有一些网站需要每日检查是否有问题,所以需要一个报警监控的机制,这个需要你指定你发送的邮箱和你接收的邮箱,就可以做到对网站自动监控了。 这里用的是python3.5 需要安装的插件:  1、smtplib:发邮件需要用到...
  • python3自动发送邮件并添加附件

    千次阅读 热门讨论 2019-09-25 00:50:29
    将本地报表文件以附件形式添加到邮件发送 设置定时任务 代码 import pymysql import pandas as pd import smtplib from email.header import Header from email.mime.text import MIMEText from email.m...
  • Python实现自动发送邮件

    万次阅读 多人点赞 2019-04-07 20:22:52
    最近比较闲的慌,在自己学习Python爬虫,学到了用Python发送邮件,觉得这个可能以后比较实用。以下项目用QQ邮箱为例。 需要用到的模块: smtplib,email 提醒!QQ 邮箱一般默认关闭SMTP服务,我们得先去开启它...
  • python3自动发邮件脚本

    2019-09-09 11:29:43
    python3自动发邮件脚本,以QQ邮箱为例,自己配置发送邮箱和授权码
  • python 发送邮件、添加附件、读取邮箱邮件完整脚本。有问题,请添加博主,留言

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,420
精华内容 17,368
关键字:

python邮件自动发送

python 订阅