python selenium-7自动发送邮件

https://jingyan.baidu.com/article/647f0115b78f8d7f2148a8e8.html

1.发送HTML格式的邮件

import smtplib
from email.mime.text import MIMEText
from email.header import Header

#发送邮箱服务器
smtpserver = "smtp.126.com"
#发送邮箱用户/密码
user = "发送邮箱@126.com"
password = "登陆密码"
#发送邮箱
sender = "发送邮箱@126.com"
#接收邮箱
receiver = "接收邮箱@qq.com"
#发送邮箱主题
subject = "python发送邮件"
#编写HTML类型的邮箱正文
msg=MIMEText(‘<html><h1>给QQ邮箱发送邮件</h1></html>‘,‘html‘,‘utf-8‘)
msg[‘Subject‘]=Header(subject,‘utf-8‘)
msg[‘From‘]="张三"
msg[‘To‘]=receiver

smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user,password)
try:
    smtp.sendmail(sender, receiver, msg.as_string())
    print("发送成功")
except smtplib.SMTPDataError as e:
    print("发送失败")
finally:
    smtp.quit()

2.发送文本内容的邮件

import smtplib
from email.mime.text import MIMEText
from email.header import Header

msg_from = ‘发送邮箱@qq.com‘
passwd = ‘授权码‘
msg_to = ‘收件人邮箱@126.com‘

subject = "python邮件测试"
content = "这是我使用python smtplib及email模块发送的邮件"
msg = MIMEText(content)
msg[‘Subject‘] = subject
msg[‘From‘] = "发送方"
msg[‘To‘] = "接收方"
try:
    s = smtplib.SMTP_SSL("smtp.qq.com", 465)
    s.login(msg_from, passwd)
    s.sendmail(msg_from, msg_to, msg.as_string())
    print("发送成功")
except s.SMTPDataError as e:
    print("发送失败")
finally:
    s.quit()

其中 s = smtplib.SMTP_SSL("smtp.qq.com", 465)#相当于以下2行

s = smtplib.SMTP()

s.connect("smtp.qq.com")

3.发送带附件的邮件

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
smtpserver = "smtp.126.com"
sender = "发送邮箱@126.com"
receiver = "接收邮箱@qq.com"
user = "发送邮箱@126.com"
password = "发送邮箱密码"
subject = "测试附件3"
sendfile = open("/Users/chenshanju/PycharmProjects/SeleniumOfJenkins/report/log.txt","rb").read()

att = MIMEText(sendfile,"base64","utf-8")
att["Content-Type"] = "application/octet-stream"
att["Content-Disposition"] ="attachment;filename=‘log.txt‘"
msgRoot = MIMEMultipart("related")
msgRoot["Subject"] = subject
msgRoot["From"] = sender
msgRoot["To"] = receiver
msgRoot.attach(att)

smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user,password)
smtp.sendmail(sender,receiver,msgRoot.as_string())
smtp.quit()

4.查找最新的测试报告

import sys,os
#获取当前脚本的目录
script_path=sys.path[0].split("/")
#获取工程的主目录
end_index=script_path.index("SeleniumOfJenkins")+1
#report所在的目录
report_dir="/".join(script_path[:end_index])+"/report"
#查看当前的文件生成列表
list_file=os.listdir(report_dir)
#对文件按照创建时间进行排序
list_file.sort(key=lambda file:os.path.getmtime(report_dir+"/"+file))
print(list_file[-1])

5.自动发送测试报告

import unittest,os,sys
from time import strftime
from HTMLTestRunner import HTMLTestRunner
import smtplib
from email.mime.text import MIMEText
from email.header import Header

def get_new_report(report_dir):
    "get_new_report()方法传入一个参数(测试报告所在目录),得到最新的report文件"
    file_list = os.listdir(report_dir)
    file_list.sort(key=lambda file:os.path.getmtime(report_dir+"/"+file))
    return report_dir+"/"+file_list[-1]
def send_email(new_report):
    "send_email()接收一个参数(new_report),发送邮件"
    f = open(new_report,"rb")
    mail_body=f.read()
    f.close()
    sender = "发送邮箱@126.com"
    receiver = "接收邮箱@qq.com"
    msg = MIMEText(mail_body,"html","utf-8")
    msg[‘Subject‘] = Header("自动化测试报告","utf-8")
    msg[‘From‘] = sender
    msg[‘To‘] = receiver
    smtp = smtplib.SMTP()
    smtp.connect("smtp.126.com")
    smtp.login("发送邮箱@126.com","发送邮箱密码")
    try:
        smtp.sendmail(sender,receiver,msg.as_string())
        print("发送成功")
    except :
        print("发送失败")
    finally:
        smtp.quit()

if __name__=="__main__":
    """1.执行测试 2.获取最新报告 3.发送邮件"""
    current_dir_list = sys.path[0].split("/")
    index = current_dir_list.index("SeleniumOfJenkins") + 1
    if index == len(current_dir_list):
        home_dir = "/".join(current_dir_list)
    else:
        home_dir = "/".join(current_dir_list[:index])
    report_dir = home_dir + "/" + "report"
    test_dir = home_dir + "/testcase/testsearch"
    discover = unittest.defaultTestLoader.discover(test_dir, pattern="test*.py")
    filename="report/"+strftime("%Y_%m_%d_%H_%M_%S")+"_result.html"
    fp = open(filename,"wb")
    runner=HTMLTestRunner(stream=fp,title="百度搜索报告",description="用例执行情况")
    runner.run(discover)
    fp.close()
    new_report = get_new_report(report_dir)
    send_email(new_report)

FAQ:

1.qq邮箱需要开启imap和smtp权限

2.从126邮箱发送qq邮箱抛出异常smtplib.SMTPDataError

smtplib.SMTPDataError: (554, b‘DT:SPM 126 smtp1,C8mowABHGtEduABcQk94BA--.46414S2 1543551006,please see http://mail.163.com/help/help_spam_16.htm?ip=125.122.53.172&hostid=smtp1&time=1543551006‘)

解决方法:需要对msg[‘From‘]和msg[‘To‘]赋值

3.发送的附件不是指定的文件名,而是tcmime.*.bin类型的文件

原因:att["Content-Disposition"] ="attachment;filename=‘log.txt‘"误写为Content-Dispostion

4.自动发送测试报告中,qq邮箱样式丢失,126邮箱正常

使用附件可以解决这个问题

import smtplib,os,sys
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

def get_home_dir():
    "获取最新的报告"
    current_path_list=sys.path[0].split("/")
    index = current_path_list.index("SeleniumOfJenkins")+1
    if index == len(current_path_list):
        home_path=sys.path[0]
    else:
        home_path="/".join(current_path_list[:index])
    return home_path
def get_new_file():
    "获取最新的报告"
    file_list=os.listdir(report_path)
    file_list.sort(key=lambda file:os.path.getmtime(report_path+file))
    return file_list[-1]

def send_email():
    "发送邮件"

    new_file_name = get_new_file()
    new_file = report_path + new_file_name
    server = "smtp.126.com"
    sender="发送邮箱@126.com"
    receiver="接收邮箱@qq.com"
    subject = "测试报告见附件3"
    sendfile= open(new_file,"rb").read()
    att = MIMEText(sendfile,"base64","utf-8")
    att[‘Content-Type‘] = "application/octet-stream"
    att[‘Content-Disposition‘] = "attachment;filename=‘%s‘" % new_file_name
    msgRoot = MIMEMultipart(‘related‘)
    msgRoot[‘Subject‘] = subject
    msgRoot[‘From‘] = sender
    msgRoot[‘To‘] = receiver
    msgRoot.attach(att)
    smtp = smtplib.SMTP()
    try:
        smtp.connect(server)
        smtp.login("发送邮箱@126.com","发送邮箱密码")
        smtp.sendmail(sender,receiver,msgRoot.as_string())
        print("发送成功")
    except:
        print("发送失败")
    finally:
        smtp.quit()

if __name__=="__main__":
    home_path = get_home_dir()
    report_path = home_path + "/report/"
    send_email()

原文地址:https://www.cnblogs.com/csj2018/p/10048041.html

时间: 2024-10-10 18:38:12

python selenium-7自动发送邮件的相关文章

Python selenium 文件自动下载 (自动下载器)

1. Firefox 文件下载 对于Firefox,需要我们设置其Profile: browser.download.dir:指定下载路径 browser.download.folderList:设置成 2 表示使用自定义下载路径:设置成 0 表示下载到桌面:设置成 1 表示下载到默认路径 browser.download.manager.showWhenStarting:在开始下载时是否显示下载管理器 browser.helperApps.neverAsk.saveToDisk:对所给出文件类

python+selenium之自动生成excle,保存到指定的目录下

进行之自动化测试,想把自动生成的excle保存到指定的目录下.网上百度的代码如下: 1 import xlwt 2 import time 3 time = time.strftime ('%Y%m%d%H%M%S', time.localtime (time.time ())) 4 7 w = xlwt.Workbook () # 创建一个工作簿 8 ws = w.add_sheet ('卡批量入库4.xls') # 创建一个工作表 9 ws.write (0, 0, '卡号') # 在1行1

python+selenium 发送邮件

import time from selenium import webdriver from selenium.webdriver import ChromeOptions from selenium.webdriver.common.keys import Keys from getpass import getpass def run(): driver.get(url='https://mail.qq.com/') # 遇到iframe,需要切换 iframe_list = driver

豆瓣自动注册、回贴脚本 powered by Python &amp; Selenium

前言,之前在豆瓣日志写了这片文章,结果被豆瓣删除了...哎 ----- 所删除内容 ----- <豆瓣自动注册.回贴脚本 powered by Python & Selenium> (2018-01-12 15:29) 故事起因: 上周的时候吧,发现有条疯狗在这张剧照(天生杀人狂)下面骂我.如果只是骂我傻逼我还能忍,毕竟人在江湖飘哪人不挨刀.但是你问候的范围大了,那作为一个社会主义核心价值观没有问题的青年,我必须得去操一下你妈了吧.请点击操他妈热线.结果这个怂逼居然还发私信骂我然后还把

使用python自动发送邮件

最近研究邮件透明加密技术,,需要使用脚本自动发送邮件测试,于是使用python写了一个小程序.程序可以自动选择不定数量的附件,随机选择主题,随机选择正文,然后自由组合发送,非常适合邮件方面的测试任务.顺便说一下邮件透明加密技术和市场上的其他邮件加密技术相比再部署上非常简单."透明"二字就是部署不改变用户原有习惯,目前的产品有天御云安的隐密邮,网址是https://mail.tyyunan.com/, 各位感兴趣的可以看一下. # -*- coding: utf-8 -*- __vers

Python + Selenium 自动发布文章(一):开源中国

https://blog.csdn.net/qq_28804275/article/details/80891949 https://blog.csdn.net/qq_28804275/article/details/80891949Python + Selenium 自动发布文章系列:Python + Selenium 自动发布文章(一):开源中国Python + Selenium 自动发布文章(二):简书Python + Selenium 自动发布文章(三):CSDNPython + Sel

利用Python自动发送邮件

# -*- coding:utf-8 -*-from email.mime.text import MIMETextfrom email.header import Headerimport smtplib def send_mail(file_new): f = open(file_new,'rb') mail_body = f.read() f.close() msg = MIMEText(mail_body,'html','utf-8')  msg['Subject'] = Header(

Selenium实战(七)——自动发送邮件

SMPT(Simple Mail Transfer Protocol)简单邮件传输协议,是一组由源地址到目的地址传送邮件的规则,可以控制信件的中转方式.Python的smptlib模块提供了简单的API用来实现发送邮件的功能,它对SMPT进行了简单的封装. 一.python自带的发送邮件功能 1.发送邮件正文 1 import smtplib 2 from email.mime.text import MIMEText 3 from email.header import Header 4 5

Python Selenium 文件上传(二)

今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是如果通过saltstack 远程控制执行时,SendKeys就定位不到窗口了. 所以采用这种新的方式来实现文件上传功能,并完美的解决了这个问题. 具体操作步骤如下: 1.下载工具 AutoIt及使用 AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows

Python+selenium自动化公共逻辑步骤封装

开篇 个人博客"Python+selenium的GUI自动化实现"提到的chrome与IE浏览器调用插件已上传至51CTO下载,对应链接分别为:chrome,http://down.51cto.com/data/2171584:IE,http://down.51cto.com/data/2171585:有需要的直接下载即可:  正文 关于自动化,其实质就是用机器操作代替手工执行,从而减少人力投入.节约项目运营成功.优秀的自动化框架,可能的一个发展过程,前期自动化用例写作实现过程,可能需