python中发送邮件各种问题

其实问题主要集中的QQ企业邮箱中,特别坑爹。。。代码如下:

from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText

# python 2.3.*: email.Utils email.Encoders
from email.utils import COMMASPACE,formatdate
from email import encoders

import os
import datetime

uploadlogPath = "/home/harklee/shell/data"
curDate = datetime.datetime.now()
curDateFormat = curDate.strftime("%Y-%m-%d")
lastDate = curDate + datetime.timedelta(days = -1)
lastDateFormat = lastDate.strftime("%Y-%m-%d")
server = {"name":"smtp.exmail.qq.com", "user":"[email protected]", "passwd":"password"}   #注意,QQ企业邮箱中, user必须是全称的帐号,就是要带上@后缀,个人邮箱则不需要 name是smtp的地址
fro = "[email protected]"   #发件人邮箱
to = ["[email protected]","[email protected]"]   #收件人邮箱
subject = "数据每日日报"     #发送标题
text = "数据每日日报,目前因为数据体系还没有开始搭建,所以指标很简单,目前为两分部,第一部分是建议运营指标,第二部分是接口监测指标,压缩文件是以日志日期命名的:\n\n运营指标:\n1) 当天去重后的imei数据,格式是yyyy-MM-dd_imei.log \n2) 当天去重后的imei_app数据,格式是yyyy-MM-dd_app.log \n\napi接口监测指标 \n 1)每小时的数据流量行数 格式是yyyy-MM-dd_hour_line.log \n 2)监测每秒的最大并发数 格式是yyyy-MM-dd_second_max_line.log"  #发送内容
files = [uploadlogPath+"/"+lastDateFormat+".tar.gz"]   #要发送的附件啦
#print files

#server[‘name‘], server[‘user‘], server[‘passwd‘]
def send_mail(server, fro, to, subject, text, files=[]):
    assert type(server) == dict
    assert type(to) == list
    assert type(files) == list 

    msg = MIMEMultipart(_charset=‘utf-8‘)   #这里注意编码

    msg[‘From‘] = fro
    msg[‘Subject‘] = subject
    msg[‘To‘] = COMMASPACE.join(to) #COMMASPACE==‘, ‘
    msg[‘Date‘] = formatdate(localtime=True)
    msg.attach(MIMEText(text,_charset=‘utf-8‘))    #这里也要注意编码

    for file in files:
		part = MIMEBase(‘application‘, ‘octet-stream‘) #‘octet-stream‘: binary data
		part.set_payload(open(file,‘rb‘).read())
		encoders.encode_base64(part)
		part.add_header(‘Content-Disposition‘, ‘attachment; filename="%s"‘ % os.path.basename(file))
		msg.attach(part) 

    import smtplib
    smtp = smtplib.SMTP(server[‘name‘])
    smtp.login(server[‘user‘], server[‘passwd‘])
    smtp.sendmail(fro, to, msg.as_string())
    smtp.close()

send_mail(server,fro,to,subject,text,files)

  

时间: 2024-10-20 18:07:43

python中发送邮件各种问题的相关文章

python之发送邮件~

在之前的工作中,测试web界面产生的报告是自动使用python中发送邮件模块实现,在全部自动化测试完成之后,把报告自动发送给相关人员 其实在python中很好实现,一个是smtplib和mail俩个模块来实现,主要如下: import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.base import MIMEBaseimport

Appium+python 自动发送邮件(1)

SMTP:简单传输协议,实在Internet上传输Email的事实标准. Python的smtplib模块提供了一种很方便的途径来发送电子邮件,它对SMTP协议进行了简单的封装. python中发送邮件除了SMTP模块外,还需用到email模块.email模块主要用来定义邮件的标题.正文.附件. 一.SMTP的方法 1.SMTP模块的方法 connect(host,port) host:指定连接的邮箱服务器 port:指定连接服务器的端口号 login(user,passwork) user:登

【转】python中的os模块

在自动化测试中,经常需要查找操作文件,比如说查找配置文件(从而读取配置文件的信息),查找测试报告(从而发送测试报告邮件),经常要对大量文件和大量路径进行操作,这就依赖于os模块,所以今天整理下比较常用的几个方法.网上这方面资料也很多,每次整理,只是对自己所学的知识进行梳理,从而加深对某个模块的使用. 1.当前路径及路径下的文件 os.getcwd():查看当前所在路径. os.listdir(path):列举目录下的所有文件.返回的是列表类型 import os dir = os.getcwd(

Python——SMTP发送邮件

一.定义 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.python的smtplib提供了一种很方便的途径发送电子邮件.它对smtp协议进行了简单的封装. 二.Python创建STMP对象 import smtplib smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] ) #host: SMTP 服务器主机. 你可

在Python中使用SMTP发送电子邮件

Python中有内置的smtplib模块,完成一封邮件的发送,需要做很多准备工作.第三方的py_smtp这个包也是基于smtplib的,在Python中使用py_smtp发送电子邮件非常方便,只要填写发送邮件的相关信息即可. 一.安装模块 pip install py-smtp 二.发送邮件 from py_smtp import send send('smtp服务器', 465,['发送人昵称', '发送人邮箱地址'], '密码', ['收件人1','收件人2','收件人3'], ['抄送人1

python中socket模块

一.初识socket      socket 是网络连接端点,每个socket都被绑定到一个特定的IP地址和端口.IP地址是一个由4个数组成的序列,这4个数均是范围 0~255中的值(例如,220,176,36,76):端口数值的取值范围是0~65535.端口数小于1024的都是为众所周知的网络服务所保留的 (例如Web服务使用的80端口):最大的保留数被存储在socket模块的IPPORT_RESERVED变量中.你也可以为你的程序使用另外的端口数 值. 不是所有的IP地址都对世界的其它地方可

走入计算机的第四十天(python中sockserver模块)

一.Python中的sockserver模块 1.该模块与sock模块不同之处是该模块自动帮我们分装好了一些功能,让我们在编程的时候直接调用这些功能就可以了,节省了编程步骤. 2.如图所示 注释:上图为服务端设置 该模块的操作方法比较死板,我们只要会熟悉的使用他就可以了.

python中if __name__ == '__main__':

Using a module's __name__ Example? 8.2.? Using a module's __name__ #!/usr/bin/python # Filename: using_name.py if __name__ == '__main__': print 'This program is being run by itself' else: print 'I am being imported from another module' Output $ pytho

关于Python中的yield

关于Python中的yield http://www.cnblogs.com/tqsummer/archive/2010/12/27/1917927.html http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/ 一.迭代器(iterator) 在Python中,for循环可以用于Python中的任何类型,包括列表.元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器 迭代器是一个实现了迭代器协议