#!/usr/bin/env python

# -*- coding:utf-8 -*-

import smtplib

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

from email.mime.application import MIMEApplication

from email.header import Header

import datetime

import os.path

import createsheet

import base64

import sys

reload(sys)

sys.setdefaultencoding('utf8')

oct21st=datetime.datetime.now()

nowday=oct21st.strftime('%Y-%m-%d')

class Mailer(object):

def __init__(self,maillist,mailtitle,mailcontent):

self.mail_list = maillist

self.mail_title = mailtitle

self.mail_content = mailcontent

#    self.mail_host = "smtp.163.com"

#    self.mail_user = "*"

#    self.mail_pass = "*"

#    self.mail_postfix = "*"

self.mail_host = "smtp.exmail.qq.com"

self.mail_user = "*"

self.mail_pass = "*"

self.mail_postfix = "*"

def sendMail(self):

#创建一个带附件的实例

#加邮件头,设置根容器属性

## 构造MIMEMultipart对象做为根容器

me = self.mail_user + "<" + self.mail_user+">"

msg = MIMEMultipart()

msg['Subject'] = Header(self.mail_title, 'utf-8')

msg['From'] = me

msg['To'] = ";".join(self.mail_list)

#添加邮件内容

#注意,要指定邮件内容的编码为utf-8,否则中文会有乱码

#构造MIMEText对象做为邮件显示内容并附加到根容器

#puretext = MIMEText('<h1>你好,<br/>'+self.mail_content+'</h1>','html','utf-8')

puretext = MIMEText('Hi:\n见附件','plain','utf-8')

msg.attach(puretext)

# jpg类型的附件

#    jpgpart = MIMEApplication(open('/home/mypan/1949777163775279642.jpg', 'rb').read())

#    jpgpart.add_header('Content-Disposition', 'attachment', filename='beauty.jpg')

#    msg.attach(jpgpart)

# 首先是xlsx类型的附件

# 设置附件头

xlsxname='C:\Users\Administrator\Desktop\内容\* '+nowday+'.xlsx'

#    filename=os.path.basename(xlsxname).encode('gb2312')

filename=os.path.basename(xlsxname)

xlsxpart = MIMEApplication(open(xlsxname.decode('utf-8'), 'rb').read())

xlsxpart.add_header('Content-Disposition', 'attachment', filename='=?utf-8?b?'+base64.b64encode(filename.encode('utf-8'))+'?=')

msg.attach(xlsxpart)

# mp3类型的附件

#mp3part = MIMEApplication(open('kenny.mp3', 'rb').read())

#mp3part.add_header('Content-Disposition', 'attachment', filename='benny.mp3')

#msg.attach(mp3part)

# pdf类型附件

#part = MIMEApplication(open('foo.pdf', 'rb').read())

#part.add_header('Content-Disposition', 'attachment', filename="foo.pdf")

#msg.attach(part)

try:

s = smtplib.SMTP() #创建邮件服务器对象

s.connect(self.mail_host) #连接到指定的smtp服务器。参数分别表示smpt主机和端口

s.login(self.mail_user, self.mail_pass) #登录到你邮箱

s.sendmail(me, self.mail_list, msg.as_string()) #发送内容

s.close()

return True

except Exception, e:

print str(e)

return False

def send_mail():

createsheet.createsheet()

mailto_list = ["*"]

mail_title = '你好'

mail_content = 'Hey this is content'

mm = Mailer(mailto_list,mail_title,mail_content)

res = mm.sendMail()

print res

if __name__ == '__main__':

#send list

send_mail()

python自动化之邮件发送的更多相关文章

  1. python 自动化实现定时发送html报告到邮箱

    # coding =utf-8 import os import unittest import time import datetime import smtplib from email.mime ...

  2. 多测师讲解自动化 _邮件发送_高级讲师肖sir

    第一步.进入如下网址申请163邮箱. https://mail.163.com/ 第二步.注册完之后登录.点击如下图设置­点击POP3/SMTP/IMAP. 第三步.右侧点击客户端授权密码. 第四步. ...

  3. Selenium+Python之163邮件发送

    今晚写了一个163邮箱登录的脚本,由于不停的访问163登录主页导致直接访问163邮箱主页登录需要输入验证码,因为无法获取到验证码,就这导致直接访问主页登录脚本不可行,为了绕过验证码,现在先访问hao1 ...

  4. 【python】smtp邮件发送

    纯文本: #!/usr/bin/env python3 #coding: utf-8 import smtplib from email.mime.text import MIMEText from ...

  5. 用python SMTP进行邮件发送

    import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart & ...

  6. python SMTP邮件发送(转载)

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

  7. python selenium2示例 - email发送

    前言 在进行日常的自动化测试实践中,我们总是需要将测试过程中的记录.结果等等等相关信息通过自动的手段发送给相关人员.python的smtplib.email模块为我们提供了很好的email发送等功能的 ...

  8. 测试开发【提测平台】分享11-Python实现邮件发送的两种方法实践

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 按照开发安排,本篇本应该是关于提测页面的搜索和显示实现,怕相似内容疲劳,这期改下内容顺序,将邮件服务的相关的提前,在之前的产品需求和原型中 ...

  9. 【Python + Selenium3】自动化测试之DDT数据驱动并生成测试报告以及用yagmail邮件发送文件

    我的文件路径 一.DDT代码: import unittest from time import sleep from selenium import webdriver from ddt impor ...

随机推荐

  1. jmeter no-gui模式动态传递场景参数

    jmeter进行性能压测时,有时候需要在linux上no-gui模式下运行,为了在no-gui模式下更方便的设置脚本的运行的场景, 将脚本的线程数,运行时间设置为动态参数,可以在脚本运行时动态设置“线 ...

  2. SpringBoot日记——Web开发篇

    准备开始实战啦!~~~~ 我们先来看,SpringBoot的web是如何做web开发的呢?通常的步骤如下: 1.创建springboot应用,指定模块: 2.配置部分参数配置: 3.编写业务代码: 为 ...

  3. DMS路由表

    DMS路由表: route add -p 53.90.146.0 mask 255.255.255.0 10.77.35.249   ================================= ...

  4. 什么是Gradle

    一.什么是Gradle 简单的说,Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译.打包等过程.我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建ap ...

  5. JMeter做http接口压力测试

    测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做压力测试的时候就是混合场景,需要多个 ...

  6. Python读取文件编码解码问题

    用chardet检测编码 import chardet raw = open("model.json", 'rb').read() result = chardet.detect( ...

  7. 【LeetCode算法题库】Day5:Roman to Integer & Longest Common Prefix & 3Sum

    [Q13] Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Valu ...

  8. GIT问题(一)——push冲突

  9. hostname命令详解

    基础命令学习目录首页 原文链接:https://idc.wanyunshuju.com/cym/68.html Linux操作系统的hostname是一个kernel变量,可以通过hostname命令 ...

  10. linux cat显示若干行

    [一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1000 [二]显示1000行到3000行 cat ...