python邮件
解读Python发送邮件
Python发送邮件需要smtplib和email两个模块。也正是由于我们在实际工作中可以导入这些模块,才使得处理工作中的任务变得更加的简单。今天,就来好好学习一下使用Python发送邮件吧。
SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。
Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
1.邮件正文是文本的格式
# -*- coding: UTF-8 -*- from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
import sys
import os
import datetime
import time reload(sys)
sys.setdefaultencoding("utf-8") mailto_list = ["xxxxx@qq.com"] # 邮件接收方的邮件地址
mail_host = "smtp.qq.com" # 邮件传送协议服务器
mail_user = "xxxxxx@qq.com" # 邮件发送方的邮箱账号
mail_pass = "邮箱验证码" # 邮件发送方的邮箱密码 def send_mail(to_list, sub, content):
me = "qq昵称"+"<"+mail_user+">"
msg = MIMEText(content, _subtype='plain', _charset='utf-8')
msg['Subject'] = sub # 邮件主题
msg['From'] = me
msg['To'] = ";".join(to_list)
try:
server = smtplib.SMTP_SSL()
server.connect(mail_host)
server.login(mail_user, mail_pass)
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception, e:
print str(e)
return False if __name__ == '__main__':
sub = "qq昵称"
content = '邮件内容'
if send_mail(mailto_list, sub, content):
print "发送成功"
else:
print "发送失败"
2.邮件正文是表格的格式:由于是表格,所以我们选择HTML来实现表格的功能,邮件上面显示的就是HTML实现的内容了。
# -*- coding: UTF-8 -*- from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
import sys
import csv
import xlrd
from pyExcelerator import *
import os
import xlwt
from xlutils.copy import copy
import pyExcelerator
import datetime
import time reload(sys)
sys.setdefaultencoding("utf-8") mailto_list = [""] # 邮件接收方的邮件地址
mail_host = "smtp.exmail.qq.com" # 邮件传送协议服务器
mail_user = "" # 邮件发送方的邮箱账号
mail_pass = "" # 邮件发送方的邮箱密码 def send_mail(to_list, sub, content):
me = "天才白痴梦"+"<"+mail_user+">"
# 和上面的代码不同的就是,这里我们选择的是html 的格式
msg = MIMEText(content, _subtype='html', _charset='utf-8')
msg['Subject'] = sub # 邮件主题
msg['From'] = me
msg['To'] = ";".join(to_list)
try:
server = smtplib.SMTP()
server.connect(mail_host)
server.login(mail_user, mail_pass)
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception, e:
print str(e)
return False if __name__ == '__main__':
sub = "天才白痴梦"
html = '<html></html>'
if send_mail(mailto_list, sub, html):
print "发送成功"
else:
print "发送失败"
3.邮件正文是图片的格式:要把图片嵌入到邮件正文中,我们只需按照发送附件的方式,先把邮件作为附件添加进去,然后,在HTML中通过引用src="cid:0"就可以把附件作为图片嵌入了。如果有多个图片,给它们依次编号,然后引用不同的cid:x即可。
def send_mail(to_list, sub, content):
me = "天才白痴梦"+"<"+mail_user+">" msg = MIMEMultipart()
msg['Subject'] = sub # 邮件主题
msg['From'] = me
msg['To'] = ";".join(to_list) txt = MIMEText("天才白痴梦", _subtype='plain', _charset='utf8')
msg.attach(txt) # <b>:黑体 <i>:斜体
msgText = MIMEText('<b>Some <i>HTML</i> text</b> and an image.<img alt="" src="cid:image1" />good!', 'html', 'utf-8')
msg.attach(msgText) file1 = "F:\\1.jpg"
image = MIMEImage(open(file1, 'rb').read())
image.add_header('Content-ID', '<image1>')
msg.attach(image) try:
server = smtplib.SMTP()
server.connect(mail_host)
server.login(mail_user, mail_pass)
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception, e:
print str(e)
return False if __name__ == '__main__':
sub = "天才白痴梦"
html = '<html></html>'
if send_mail(mailto_list, sub, html):
print "发送成功"
else:
print "发送失败"
4.发送邮件附件:邮件附件是图片
def send_mail(to_list, sub, content):
me = "天才白痴梦"+"<"+mail_user+">" msg = MIMEMultipart()
msg['Subject'] = sub # 邮件主题
msg['From'] = me
msg['To'] = ";".join(to_list) txt = MIMEText("天才白痴梦", _subtype='plain', _charset='utf8')
msg.attach(txt) # # <b>:黑体 <i>:斜体
# msgText = MIMEText('<b>Some <i>HTML</i> text</b> and an image.<img alt="" src="cid:image1" />good!', 'html', 'utf-8')
# msg.attach(msgText)
#
# file1 = "F:\\1.jpg"
# image = MIMEImage(open(file1, 'rb').read())
# image.add_header('Content-ID', '<image1>')
# msg.attach(image) att = MIMEText(open('F:\\1.jpg', 'rb').read(), 'base64', 'utf-8')
att["Content-Type"] = 'application/octet-stream'
att["Content-Disposition"] = 'attachment; filename="1.jpg"'
msg.attach(att) try:
server = smtplib.SMTP()
server.connect(mail_host)
server.login(mail_user, mail_pass)
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception, e:
print str(e)
return False
5.发送群邮件:同时发送给多人
1 mailto_list = [""] # 邮件接收方的邮件地址
上面这一行代码是邮件接收方的邮件地址,如果我们需要给多人发送邮件的话,就只需要把对方的邮件帐号绑在这一个列表里就ok了。
加密SMTP
使用标准的25端口连接SMTP服务器时,使用的是明文传输,发送邮件的整个过程可能会被窃听。要更安全地发送邮件,可以加密SMTP会话,实际上就是先创建SSL安全连接,然后再使用SMTP协议发送邮件。
方法:只需要在创建SMTP对象后,立刻调用starttls()方法,就创建了安全连接。
1 smtp_server = 'smtp.qq.com'
2 smtp_port = 25 # 默认端口号为25
3 server = smtplib.SMTP(smtp_server, smtp_port)
4 server.starttls()
5 # 剩下的代码和前面的一模一样:
6 server.set_debuglevel(1) # 打印出和SMTP服务器交互的所有信息
python邮件的更多相关文章
- python邮件发送脚本
转自:http://phinecos.cnblogs.com/ #!/usr/bin/python #coding=utf-8 #@author:dengyike #@date:2010-09-28 ...
- centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本)
centos 7 keepalived故障邮件通知实战(附Python邮件发送脚本) ##################### sendmail.py begin ######## ...
- python 邮件基础篇
python 操作邮件,不是很方便,说实话还不是理解的特别透彻,这次想把自己碰到的东西总结下来 邮件有imap,pop,imap协议,这次使用的是imap4协议,主要用了imap4和mail类, 代码 ...
- python 邮件
1:文件形式的邮件 01.#!/usr/bin/env python3 02.#coding: utf-8 03.import smtplib 04.from email.mime.text impo ...
- python 邮件发送 脚本
import smtplib from email.header import Header from email.mime.text import MIMEText from_addr = 'XXX ...
- Python 邮件发送
python发送各类邮件的主要方法 python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法,这里写写自己的的心得,也请高手给些指点. 一.相关模块介绍 ...
- python邮件SMTP的GUI编程
写的是python中smtp的gui编程,用的163邮箱给qq邮箱发送邮件做测试,如果你发现你的发送失败,试着用以下方法解决: 1.网页登陆你的邮箱,设置中查看smtp是否开启,比如163邮箱的smt ...
- Python邮件发送脚本(Linux,Windows)通用
脚本 #!/usr/bin/python #-*- coding:utf-8 -*- #Python Mail for chenglee #if fileformat=dos, update file ...
- python邮件处理
SMTP SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.Python对SMTP支持有 ...
随机推荐
- 游戏AI:行为树
Behavior Tree 行为树通过子Task的返回值决定整棵树的走向 Task 行为树上的每个节点都称为一个Task, 每个Task存在三种状态, success, failure, runnin ...
- 【BZOJ】2142 礼物
[算法]中国剩余定理 [题意]给定n件物品分给m个人,每人分到wi件,求方案数%p.p不一定是素数. [题解] 首先考虑n全排列然后按wi划分成m份,然后对于每份内都是全排列,除以wi!消除标号影响, ...
- Python :集合类型(set)
set 是一个无序的元素集合,支持并.交.差及对称差等数学运算, 但由于 set 不记录元素位置,因此不支持索引.分片等序列的操作. 一.初始化 s0 = set() d0 = {} s1 = {0} ...
- 45、如何使用python删除一个文件?
若想利用python删除windows里的文件,这里需要使用os模块!那接下来就看看利用os模块是如何删除文件的! 具体实现方法如下! os.remove(path) 删除文件 path. 如果pat ...
- 蓝色的oa模板html_综合信息服务管理平台OA模板——后台
链接:http://pan.baidu.com/s/1qXGGOAK 密码:2otu
- weblogic12.1.3 静默安装 建域
--安装依赖包 yum -y install compat-libcap1 compat-libstdc++ gcc gcc-c++ glibc-devel libaio-devel libstdc+ ...
- jQuery对的表单数据序列化和校验
jQuery对的表单数据序列化和校验 表单序列化 如果想让表单通过ajax异步提交,那么首先我们要通过js获取到每个表单中输入的值,如果表单项比较多的话,是一件很麻烦,很痛苦的事情,那么我们可以通过j ...
- Delphi根据字符串实例化对象
我们可以通过ClassRegistry单元的TClassRegistry类很轻松的根据字符串创建出对象. 下面是该类几个主要函数的说明: // 获取TClassRegistry自身的单例引用class ...
- 四、ansible主机组定义
1.打开hosts文件 vim /etc/ansible/hosts 2.定义一个主机组 [web-server] 192.168.1.1 3.定义多个组(继承) [web:children] web ...
- Effective STL 阅读笔记: Item 3: Make copying cheap and correct for objects in containers
容器 (Containers) 用来存储对象 (Objects), 但是被存储的对象却并非原原本本是你给他的那一个, 而是你指定对象的一个拷贝.而后续对该容器内存储对象的操作,大多也是基于拷贝的. 拷 ...