博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python之SMTP发送邮件
阅读量:4052 次
发布时间:2019-05-25

本文共 4239 字,大约阅读时间需要 14 分钟。

本文通过实例讲解smtplib的使用,主要介绍进行文本格式、HTML格式和带附件的邮件发送。
1、导入模块
import smtplib
2、创建对象
smtp = smtplib.SMTP([host [, port [, localhost]]] )
# 参数说明
# host: smtp服务地址,例如126邮箱的是:smtp.126.com
# port: smtp服务端口
# localhost: 如果你的smtp服务在本机,则只需指定localhost即可
3、发送邮件函数
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
# 参数说明
# from_addr: 邮件发送地址
# to_addrs: 邮件接收地址列表
# msg: 邮件内容
# mail_options, rcpt_options  可选参数,暂时不需要了解
发送文本邮件实例
# -*- coding:utf-8 -*-__author__ = 'joe'import smtplibfrom email.mime.text import MIMETextfrom email.header import Headerif __name__ == "__main__":    print("001:发送文本邮件示例")    # 邮件发送者    sender = "joe@163.com"    # 邮件接收地址列表    # 请将xxx改为你的163邮箱名或整个改为你的目标接收邮箱地址    receivers = "xxx@163.com"    # 发送内容构建    # text标识发送内容为文本格式    msgTEXT = MIMEText("Python 发送邮件测试,正文内容如下。", "plain", "utf-8")    msgTEXT["From"] = "joe@163.com"       msgTEXT["To"] = receivers    # 构建邮件标题    msgTEXT["Subject"] = Header("Python 发送文本邮件标题", "utf-8")      # smtp服务    smtpserver = "smtp.163.com"    smtpport = 25    # 发送人邮件用户名或专用于smtp账户用户名    username = "joe@163.com"    # 发送人邮件密码或专用于smtp账户的密码    password = "521521"    # 构建smtp对象    smtp = smtplib.SMTP()    # 连接到smtp服务    con = smtp.connect(smtpserver, smtpport)    print("002:连接结果: ", con)    # 登录smtp服务    login = smtp.login(username, password)    print("003:登录结果:", login)    # 发送邮件    print(receivers)    #发送文本格式的邮件    res = smtp.sendmail(sender, receivers, msgTEXT.as_string())    print("004:邮件发送结果: ", res)    # 退出    smtp.quit()    print("005:send email finish")
发送HTML邮件实例

# -*- coding:utf-8 -*-__author__ = 'joe'import smtplibfrom email.mime.text import MIMETextfrom email.header import Headerif __name__ == "__main__":    print("001:发送HTML邮件示例")    # 邮件发送者    sender = "joe@163.com"    # 邮件接收地址列表    # 请将xxx改为你的163邮箱名或整个改为你的目标接收邮箱地址    receivers = "xxx@163.com"    # 发送内容构建    # text标识发送内容为文本格式    msgHTML = MIMEText("

Python 发送邮件测试,正文内容如下。

CSDN博客>", "html", "utf-8") msgHTML["From"] = "joe@163.com" msgHTML["To"] = receivers # 构建邮件标题 msgHTML["Subject"] = Header("Python 发送HTML邮件标题", "utf-8") # smtp服务 smtpserver = "smtp.163.com" smtpport = 25 # 发送人邮件用户名或专用于smtp账户用户名 username = "joe@163.com" # 发送人邮件密码或专用于smtp账户的密码 password = "521521" # 构建smtp对象 smtp = smtplib.SMTP() # 连接到smtp服务 con = smtp.connect(smtpserver, smtpport) print("002:连接结果: ", con) # 登录smtp服务 login = smtp.login(username, password) print("003:登录结果:", login) # 发送邮件 print(receivers) #发送HTML格式的邮件 res = smtp.sendmail(sender, receivers, msgHTML.as_string()) print("004:邮件发送结果: ", res) # 退出 smtp.quit() print("005:send email finish")

发送带有附件的邮件实例
# -*- coding:utf-8 -*-__author__ = 'joe'import smtplibfrom email.mime.text import MIMETextfrom email.header import Headerfrom email.mime.multipart import MIMEMultipartif __name__ == "__main__":    print("001:发送带有附件的邮件示例")    # 邮件发送者    sender = "joe@163.com"    # 邮件接收地址列表    # 请将xxx改为你的163邮箱名或整个改为你的目标接收邮箱地址    receivers = "XXX@163.com"    # 发送内容构建    # text标识发送内容为文本格式    msgHTML = MIMEMultipart()    msgHTML["From"] = "joe@163.com"    msgHTML["To"] = receivers    # 构建邮件标题    msgHTML["Subject"] = Header("Python 发送附件邮件标题", "utf-8")    # 构建邮件正文内容    msgHTML.attach(MIMEText("Python 发送邮件测试,带有附件", "plain", "utf-8"))    # 构造附件,多个附件同理,本例中附件是和脚本放在同一个目录下    attach1 = MIMEText(open("test_mail.py", 'rb').read(), "base64", "utf-8")    attach1["Content-Type"] = "application/octet-stream"    # 这里filename即附件的显示名字,将会在邮件中显示    attach1["Content-Disposition"] = "attrachment;filename=code.py"    # 关联附件到邮件中    msgHTML.attach(attach1)    # smtp服务    smtpserver = "smtp.163.com"    smtpport = 25    # 发送人邮件用户名或专用于smtp账户用户名    username = "joe@163.com"    # 发送人邮件密码或专用于smtp账户的密码    password = "521521"    # 构建smtp对象    smtp = smtplib.SMTP()    # 连接到smtp服务    con = smtp.connect(smtpserver, smtpport)    print("002:连接结果 ",con)    # 登录smtp服务    log = smtp.login(username, password)    print("003:登录结果 " ,log)    # 发送邮件    print(receivers)    #发送HTML格式的邮件    res = smtp.sendmail(sender, receivers, msgHTML.as_string())    print("邮件发送结果: ",res)    # 退出    smtp.quit()    print("005:send email finish")

总结:
1、构建文本和html格式的邮件使用MIMEText构建,使用plain标识文本内容格式,使用html标识html内容格式
2、对于附件格式则需使用MIMEMultipart
你可能感兴趣的文章
Java中数字转大写货币(支持到千亿)
查看>>
Java.nio
查看>>
函数模版类模版和偏特化泛化的总结
查看>>
VMware Workstation Pro虚拟机不可用解决方法
查看>>
最简单的使用redis自带程序实现c程序远程访问redis服务
查看>>
redis学习总结-- 内部数据 字符串 链表 字典 跳跃表
查看>>
iOS 对象序列化与反序列化
查看>>
iOS 序列化与反序列化(runtime) 01
查看>>
iOS AFN 3.0版本前后区别 01
查看>>
iOS ASI和AFN有什么区别
查看>>
iOS QQ侧滑菜单(高仿)
查看>>
iOS 扫一扫功能开发
查看>>
iOS app之间的跳转以及传参数
查看>>
iOS __block和__weak的区别
查看>>
Android(三)数据存储之XML解析技术
查看>>
Spring JTA应用之JOTM配置
查看>>
spring JdbcTemplate 的若干问题
查看>>
Servlet和JSP的线程安全问题
查看>>
GBK编码下jQuery Ajax中文乱码终极暴力解决方案
查看>>
Oracle 物化视图
查看>>