工作中有时长时间运行代码时需要监控进度,或者需要定期发送固定格式邮件时,可以使用下面定义的邮件函数。

该函数调用了outlook和qqmail的接口,只需要放置到python的环境目录中即可 import 并使用。这里建议所有自己定义的函数放置在python3的文件下 而非site-package文件下。

也可以防止在任意默认环境路径下。默认路径查询:

import site;
site.getsitepackages()

自己定义的函数将py文件命名为send_mail.py然后放置在上面显示的其中一个路径下即可。

代码:

def send_outlook(title,body,receivers,attachments):
'''
========================================================== title='this is a title!'
body=
'
Mates!
Bon Apetite
'
receivers=['123211855@qq.com','ext.wenzhe.tian@uaes.com']
attachments=['a.py','b.py']; send_outlook(title,body,receivers,attachments) ==========================================================
'''
import win32com.client as win32
import warnings
import pythoncom
warnings.filterwarnings('ignore')
pythoncom.CoInitialize()
sub=title;
body = body
outlook = win32.Dispatch('outlook.application')
receivers = receivers
for i in receivers:
mail = outlook.CreateItem(0)
mail.To = i
mail.Subject = sub
mail.Body = body
for j in attachments:
mail.Attachments.Add(j)
mail.Send() def send_qqmail(user,password,title,body,image,receivers,attachments):
'''
========================================================== user='123211855@qq.com';
password='zpkfkgxvdrnvbgcj'
title='this is a title!'
body=
'
Mates!
Bon Apetite
'
receivers=['123211855@qq.com','ext.wenzhe.tian@uaes.com']
attachments=[]; send_qqmail(user,password,title,body,image,receivers,attachments) ==========================================================
'''
import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
# 设置邮箱的域名
HOST = 'smtp.qq.com'
# 设置邮件标题
SUBJECT = title
# 设置发件人邮箱
FROM = user
password=password #'zpkfkgxvdrnvbgcj'
# 设置收件人邮箱
TO = receivers
message = MIMEMultipart('related') #--------------------------------------发送文本-----------------
# 发送邮件主体到对方的邮箱中
# message_html = MIMEText('<h2 style="color:red;font-size:100px">CSDN博客超级好</h2><img src="cid:big">','html','utf-8')
message_text=MIMEText(body,'plain','utf-8')
message.attach(message_text) #-------------------------------------发送图片--------------------
# rb 读取二进制文件
# 要确定当前目录有1.jpg这个文件
for i in image:
image_data = open(i,'rb')
# 设置读取获取的二进制数据
message_image = MIMEImage(image_data.read())
# 关闭刚才打开的文件
image_data.close()
message_image.add_header('Content-ID','big')
# 添加图片文件到邮件信息当中去
message.attach(message_image) #-------------------------------------添加文件---------------------
# 要确定当前目录有table.xls这个文件
# message_xlsx = MIMEText(open(r'C:\Users\ext.wenzhe.tian\Desktop\Dynamic_Data_Analysis_v3\Static_data_read_v2.py','rb').read(),'base64','utf-8')
for i in attachments:
message_xlsx = MIMEText(open(i,'rb').read(),'base64','utf-8')
# 设置文件在附件当中的名字
message_xlsx['Content-Disposition'] = 'attachment;filename='+i
message.attach(message_xlsx) # 设置邮件发件人
message['From'] = FROM
# 设置邮件收件人
message['To'] = TO
# 设置邮件标题
message['Subject'] = SUBJECT # 获取简单邮件传输协议的证书
email_client = smtplib.SMTP_SSL()
# 设置发件人邮箱的域名和端口,端口为465
email_client.connect(HOST,'')
# ---------------------------邮箱授权码------------------------------
result = email_client.login(FROM,password)
print('登录结果',result)
email_client.sendmail(from_addr=FROM,to_addrs=TO.split(','),msg=message.as_string())
# 关闭邮件发送客户端
email_client.close()

以上代码分outlook邮件和qq邮件发送,qq邮箱发送需开启smtp的服务。

调用方法如下:

from send_mail import send_outlook
from send_mail import send_qqmail
help(send_outlook)
help(send_qqmail) '''
========================================================== title='this is a title!'
body='
Mates!
Bon Apetite
'
receivers=['xxx@qq.com','xxx@xx.com']
attachments=['a.py','b.py']; send_outlook(title,body,receivers,attachments) ==================================================================== ========================================================== user='xxxxx@qq.com';
password='xxxxx'
title='this is a title!'
body='
Mates!
Bon Apetite
'
receivers=['xx@qq.com','xx@xx.com']
attachments=[]; send_qqmail(user,password,title,body,image,receivers,attachments) ==========================================================
'''

利用python自动发邮件的更多相关文章

  1. 【python】python 自动发邮件

    一.一般发邮件的方法 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件. 注意到构造MIMETEXT对象时,第一个参数就是邮件正文,第 ...

  2. python自动发邮件库yagmail

    #### 一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from ...

  3. python自动发邮件库yagmail(转)

    一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from email ...

  4. 【Python系列】Python自动发邮件脚本-html邮件内容

    缘起 这段时间给朋友搞了个群发邮件的脚本,为了防止进入垃圾邮件,做了很多工作,刚搞完,垃圾邮件进入率50%,觉得还不错,如果要将垃圾邮件的进入率再调低,估计就要花钱买主机了,想想也就算了,先发一个月, ...

  5. python接口自动化(三十三)-python自动发邮件总结及实例说明番外篇——下(详解)

    简介 发邮件前我们需要了解的是邮件是怎么一个形式去发送到对方手上的,通俗点来说就是你写好一封信,然后装进信封,写上地址,贴上邮票,然后就近找个邮局,把信仍进去,其他的就不关心了,只是关心时间,而电子邮 ...

  6. 【Python系列】Python自动发邮件脚本

    缘起 这段时间给朋友搞了个群发邮件的脚本,为了防止进入垃圾邮件,做了很多工作,刚搞完,垃圾邮件进入率50%,觉得还不错,如果要将垃圾邮件的进入率再调低,估计就要花钱买主机了,想想也就算了,先发一个月, ...

  7. python自动发邮件总结及实例说明

    python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email模块主要负责构造邮件. sm ...

  8. Python自动发邮件-yagmail库

    之前写过用标准库使用Python Smtplib和email发送邮件,感觉很繁琐,久了不用之后便忘记了.前几天看知乎哪些Python库让你相见恨晚?,看到了yagmail第三方库,学习过程中遇到一些问 ...

  9. Python自动发邮件——smtplib和email库和yagmail库

    ''' 一.先导入smtplib模块 导入MIMEText库用来做纯文本的邮件模板 二.发邮件几个相关的参数,每个邮箱的发件服务器不一样,以163为例子百度搜索服务器是 smtp.163.com 三. ...

随机推荐

  1. 让socket端口不被子进程继承

    有两个程序A,B A绑定端口8000,然后用system函数启动程序B,然后再把A杀掉,这个时候再重启A的时候会发现绑定端口失败, 原因是端口被B绑定了,实际上是被继承了,为了避免这种情况,需要对主s ...

  2. AXIS2 通过 WSDL生成JAVA文件

    有时在我们的开发中可能会有这种情况就是你要使用webservice但是对方没有给你提供java文件,可能就只会给你一个wsdl文件,这种文件和xml文件是比较相似.axis2也给我们提供了很好的工具如 ...

  3. [论文理解] Attentional Pooling for Action Recognition

    Attentional Pooling for Action Recognition 简介 这是一篇NIPS的文章,文章亮点是对池化进行矩阵表示,使用二阶池的矩阵表示,并将权重矩阵进行低秩分解,从而使 ...

  4. nodejs之express中间件body-parser使用

    1.安装express和body-parser npm install express npm install body-parser 2‘.案例如下 var express = require('e ...

  5. robotframework 配置过程中遇到的问题

    现有环境配置:操作系统: Win7 32bitPython 2.7.8Python 3.5.2Pycharm Community Edition 2016.3.2robotframework: 3.0 ...

  6. web开发(三) 会话机制,Cookie和Session详解

    在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6422391.html>,在此仅供学习参考之用. 一.会话 ...

  7. Python 测试代码覆盖率统计工具 coverage.py

    安装 您可以通常的方式安装coverage.py.最简单的方法是使用pip: $ pip install coverage 要安装预发布版本,您需要指定--pre: $ pip install --p ...

  8. ABAP的smartform赋值

    添加文本后, 在输出选项中指定行/列

  9. ubuntu分区建议总结

    本文为转载别人的内容,结合了其他内容,进行分区的总结.其中主要是分区表格,对于ubuntu安装时,进行分区非常有用. 无论是安装Windows还是Linux操作系统,硬盘分区都是整个系统安装过程中最为 ...

  10. noi.ac-CSP模拟Day5T2 灯

    算是一道思维题吧,没有什么算法在里面. 之前想的是,能走的话就尽量走远,走过去开灯然后再回去关灯,然后再走,每一段路要走3次. 然而,“能走的话就尽量走远”只是yy的一个贪心,没有任何依据.假设在中间 ...