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.结果:

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

  • 相关阅读:
    圆桌十日冲刺之五
    圆桌十日冲刺之四
    圆桌十日冲刺之三
    圆桌十日冲刺之二
    圆桌十日冲刺之一
    圆桌的项目Alpha冲刺——测试
    圆桌的项目Alpha冲刺(团队)
    团队作业,随堂小测——校友录
    《软件工程实践》第七次作业——项目需求分析(团队)
    软工实践团队汇总
  • 原文地址:https://www.cnblogs.com/linuxchao/p/linuxchao-autotest-sendemail.html
Copyright © 2011-2022 走看看