想着给框架添加邮件发送功能、所以整理下python下邮件发送功能

首先python是支持邮件的发送、内置smtp库、支持发送纯文本、HTML及添加附件的邮件

之后是邮箱、像163、qq、新浪等邮箱默认关闭SMTP服务,需要我们手动打开

打开后通过发件人邮箱、授权密码 通过发件人的SMTP服务发送

代码如下:

 #!/usr/bin/env python
# -*- coding: utf_8 -*- from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.multipart import MIMEBase
from email import encoders
from email.header import Header
from email.utils import parseaddr, formataddr
import smtplib class SendEmail:
outbox = "pythondldysl01@163.com"
# 发件箱地址
password = "wxqcl258258"
# 授权密码 不是邮箱登录密码
inbox = "xxx@qq.com"
# 收件箱地址
smtp_server = "smtp.163.com"
# 发件箱服务器地址 def __init__(self):
pass @classmethod
def _format_address(cls, text):
name, address = parseaddr(text)
return formataddr((Header(name, "utf-8").encode(), address)) @classmethod
def send_email_text(cls):
msg = MIMEText("测试smtp邮件发送功能", "plain", "utf-8")
# 第一个参数:邮件正文
# 第二个参数:邮件类型 纯文本
# 第三个参数:编码 msg["From"] = SendEmail._format_address("来自163的一封邮件 <%s>" % SendEmail.outbox)
# 发件人姓名与发件箱地址
msg["To"] = SendEmail._format_address("管理员 <%s>" % SendEmail.inbox)
# 收件人姓名与收件箱地址
msg["Subject"] = Header("来自SMTP的问候", "utf-8").encode()
# 邮件标题 try:
server = smtplib.SMTP(SendEmail.smtp_server, 25)
# 构造smtp服务器连接
# server.set_debuglevel(1)
# debug输出模式 默认关闭
server.login(SendEmail.outbox, SendEmail.password)
# 登录smtp服务器
server.sendmail(SendEmail.outbox, [SendEmail.inbox], msg.as_string())
# 发送邮件
server.quit()
print "邮件发送成功"
except Exception, e:
print str(e)
print "邮件发送失败" if __name__ == '__main__':
SendEmail.send_email_text()

发件箱效果:

收件箱效果

这只是纯文本的内容、可以支持HTML格式的内容、修改内容如下:

msg = MIMEText("测试smtp邮件发送功能", "plain", "utf-8")

内容修改成HTML格式、 “plain”改成 “html”

最后是添加附件的邮件

代码如下:

     @classmethod
def send_email_multipart(cls):
msg = MIMEMultipart() msg["From"] = SendEmail._format_address("来自163的一封邮件 <%s>" % SendEmail.outbox)
# 发件人姓名与发件箱地址
msg["To"] = SendEmail._format_address("管理员 <%s>" % SendEmail.inbox)
# 收件人姓名与收件箱地址
msg["Subject"] = Header("来自SMTP的问候", "utf-8").encode()
# 邮件标题 msg.attach(MIMEText("测试添加附件的smtp邮件发送功能", "plain", "utf-8")) with open("E:\\work\\python project\\CreateProject\\20160421140953.xml", "rb") as f:
# 设置附件的MIME和文件名
mime = MIMEBase("xml", "xml", filename="测试报告.xml")
# 加上必要的头信息
mime.add_header('Content-Disposition', 'attachment', filename="测试报告.xml")
mime.add_header('Content-ID', '<0>')
mime.add_header('X-Attachment-Id', '')
# 把附件的内容读进来:
mime.set_payload(f.read())
# 用Base64编码:
encoders.encode_base64(mime)
# 添加到MIMEMultipart:
msg.attach(mime) try:
server = smtplib.SMTP(SendEmail.smtp_server, 25)
# 构造smtp服务器连接
# server.set_debuglevel(1)
# debug输出模式 默认关闭
server.login(SendEmail.outbox, SendEmail.password)
# 登录smtp服务器
server.sendmail(SendEmail.outbox, [SendEmail.inbox], msg.as_string())
# 发送邮件
server.quit()
print "邮件发送成功"
except Exception, e:
print str(e)
print "邮件发送失败"

收件箱效果:

博主也是参考大神的网站教的、是一个全方位的python学习网站

这里给出链接地址:

廖雪峰python学习地址

python学习笔记(SMTP邮件发送)的更多相关文章

  1. Python学习笔记——发邮件

    参考:Python3实现163邮箱SMTP发送邮件 1.首先需要注册一个网易的邮箱,开启smtp服务,并使用其授权码 2.发送邮件的Python脚本 #!/usr/bin/python # -*- c ...

  2. python学习笔记--smtp模块的使用及常见错误处理

    SMTPAuthenticationError: (535, 'Error: \xc7\xeb\xca\xb9\xd3\xc3\xca\xda\xc8\xa8\xc2\xeb\xb5\xc7\xc2\ ...

  3. python学习笔记(SMTP邮件发送:带附件)

    博主有段时间没有更新博客了 先整理一个之前整理过的SMTP邮件发送,这次是带附件的功能 #!/usr/bin/env python # -*- coding: utf_8 -*- from email ...

  4. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  5. Python学习笔记(十一)

    Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...

  6. Python学习笔记(六)

    Python学习笔记(六) Ubuntu重置root密码 Ubuntu 16.4 目录结构 Ubuntu 命令讲解 1. Ubuntu重置root密码 启动系统,显示GRUB选择菜单(如果默认系统启动 ...

  7. python学习笔记4_类和更抽象

    python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...

  8. Python学习笔记九

    Python学习笔记之九 为什么要有操作系统 管理硬件,提供接口. 管理调度进程,并且将多个进程对硬件的竞争变得有序. 操作系统发展史 第一代计算机:真空管和穿孔卡片 没有操作系统,所有的程序设计直接 ...

  9. Python学习笔记,day5

    Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...

随机推荐

  1. Oracle数据库的归档模式(archivelog mode)

    Oracle数据库可以运行在2种模式下: 归档模式(archivelog) 归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下,归档模式应该和相应的备份策略相结合,只有归档模 ...

  2. 编译型 解释型 C++工作原理

    C++教程_w3cschool https://www.w3cschool.cn/cpp/ C++工作原理: C++语言的程序因为要体现高性能,所以都是编译型的.但其开发环境,为了方便测试,将调试环境 ...

  3. Design Pattern - 访问者模式

    访问者模式 访问者模式(Visitor), 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. 这个模式相对比较复杂, 而又很少能被用上, 拿G ...

  4. HTTP 错误 500.21 - Internal Server Error 解决方案(转)

    不久前重新安装了Windows7,在安装了VS2010 开发平台之后,将网站发布到IIS,访问发生如下错误: HTTP 错误 500.21 - Internal Server Error处理程序“Ni ...

  5. 好难忘又伤心一个非常好的学习js群解散了

    不知道为什么看到web前端之天天向上这个群解散,好难过.应该可以说,这个群是我见过比较靠谱的群,大家都非常热情帮助.那些管理员管理的非常好,突然解散了.觉得好可惜,也不会因为你是菜鸟不让你加,感觉好可 ...

  6. Spring 框架的AOP之注解的方式

    1. 环境搭建 1.1 导入 jar 包 Spring 框架的基本开发包(6个); Spring 的传统AOP的开发包 spring-aop-4.3.10.RELEASE org.aopallianc ...

  7. MySQL日期时间字段

    mysql支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: DATETIME DATETIME 用于表示 年月日 时分秒,是 DATE和 ...

  8. Tflearn的安装

    scipy-doc安装 sudo apt-get install python-scipy-doc安装python-scipy-doc h5py安装 sudo pip install h5py sci ...

  9. Python+Django+Bootstrap 框架环境搭建

    1.安装python和pip(python.pip安装自行百度,pip是一个安装和管理 Python 包的工具) 2.配置python环境变量(python和scripts目录都需要配置) 3.安装D ...

  10. SqlHelper简单实现(通过Expression和反射)4.对象反射Helper类

    ObjectHelper的主要功能有: 1.通过反射获取Entity的实例的字段值和表名,跳过自增键并填入Dictionary<string,string>中. namespace RA. ...