zoukankan      html  css  js  c++  java
  • python☞自动发送邮件

    SMTP协议

    SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式

    smtplib模块

    Python的smptlib模块提供了一种很方便的途径来发送电子邮件。它对SMTP协议进行了简单的封装。们可以使用SMTP对象的sendmail发放发送邮件,首先我们看下此模块重要的方法如何使用

    1.connect(self,host='localhost',port=0)

    host:邮件服务器地址

    port:邮件服务器端口(不输入参数默认为25)

    2.login(self,user,password)

    user:登录邮箱用户名

    password:登录邮箱密码

    3.sendmail(self,from_addr,to_addrs,msg)

    from_addr:发送邮件人地址

    to_addrs:接受邮件人地址

    msg:发送的内容

    一般我们发送邮件时有两种方式。

    方式一:自己邮箱的web页面,输入用户名和密码登录,打开发邮件页面,填写对方的邮箱地址及邮件标题与正文,完成后点击发送。

    方式二:下载安装邮箱客户端,填写邮箱账号密码及邮箱服务器,一般的邮箱客户端会默认记下这些信息,所以,这个过程只需要填写依次,后面发邮件的过程与方法一相同。而我们通过python发送邮件更像方式二,因为需要填写邮箱服务器。

    实例

    我使用的测试邮箱系统为QQ邮箱,在进行测试之前我们需要设置一下QQ邮箱,获取QQ邮箱的授权码(授权码是用于登录第三方邮件客户端的专用密码)用来以后登录邮箱时的密码,对于其他邮箱如何获取授权码请自行百度

    1.打开QQ邮箱,依次点击【设置】-【账户】如图1:

    图1:

    2.找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”操作列表,图2:

    3.开启前2个服务,并点击【生成授权码】,我这边得到的授权码为:gifhhsbgqyovbhhc

    实现代码

    这边我是读取文件中的内容充当发送邮件内容的,若想测试可以把传递的参数去掉,并注释掉14-20行,加一行file_msg='<html><h1> python test send imail</h1></html>'

     1 #! user/bin/python
     2 '''
     3 代码说明:自动发送邮件
     4 编写日期:2018.07.16
     5 设计者:linux超
     6 '''
     7 
     8 import smtplib
     9 from email.mime.text import MIMEText
    10 from email.header import Header
    11 import time
    12 
    13 def send_email(filename):
    14     #   打开报告文件读取文件内容
    15     #filename = './report/'+ time.strftime('%Y-%m-%d %H_%M_%S')
    16     f = open(filename,'r')
    17     file_msg = f.read()
    18     #print(filename)
    19     #print(file_msg)
    20     f.close()
    21     #   邮件服务器
    22     smtpserver = 'smtp.qq.com'
    23     #   发件人用户名和密码
    24     user = 'username@qq.com'
    25     password = 'gifhhsbgqyovbhhc'
    26     #   发件人
    27     sender = 'sender@qq.com'
    28     #   收件人
    29     receiver = 'receiver@qq.com'
    30     #   邮件主题
    31     subject = 'Python test send email' 
    32     #   邮件设置
    33     msg = MIMEText(file_msg,'html','utf-8')
    34     msg['subject'] = Header(subject,'utf-8')
    35     msg['from'] = sender
    36     #   连接服务器,登录服务器,发送邮件
    37     smtp = smtplib.SMTP()
    38     smtp.connect(smtpserver,465)
    39     smtp.login(user,password)
    40     try41         smtp.sendmail(sender,receiver,msg.as_string())
    42     except Exception as e:
    43          print('send failed',e)
    44     else:
    45          print('send success!')
    46     smtp.quit()#   结束SMTP会话 
    47     print('send email success!')
    48 if __name__ == '__main__':
    49     send_email('./report/2018-07-16 13_09_21.txt')

    5.结果:

    总结: 后续会填加发送带附件的案例

  • 相关阅读:
    [APM] OneAPM 云监控部署与试用体验
    Elastic Stack 安装
    xBIM 综合使用案例与 ASP.NET MVC 集成(一)
    JQuery DataTables Selected Row
    力导向图Demo
    WPF ViewModelLocator
    Syncfusion SfDataGrid 导出Excel
    HTML Table to Json
    .net core 2.0 虚拟目录下载 Android Apk 等文件
    在BootStrap的modal中使用Select2
  • 原文地址:https://www.cnblogs.com/linuxchao/p/linuxchao-autotest-sendemail.html
Copyright © 2011-2022 走看看