Python SMTP 发送纯文本邮件
来源:互联网 发布:淘宝怎么批量添加水印 编辑:程序博客网 时间:2024/05/16 05:03
利用Python的smtp和email模块发送邮件
最近,开始学习python,因为从未接触过python,所以这几天抽时间看了一下基础知识,然后就看到了python邮件这一块。
因为使用qq邮箱发送,所以也碰到了一些问题。所以,在此对使用python,利用qq邮箱发送邮件做一个总结,希望能够帮助到大家。
准备工作
进入qq邮箱
进入设置 - 账户
开启POP3/SMTP (这里一步一步来就行了)
在开启SMTP服务的时候,一定要记住系统所提供的授权码。如果忘记了可以点击 生成授权码 重新获取。
具体我们可以查看:什么是授权码?
代码实现
Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
- 构件一封纯文本的邮件
# 导入email模块from email.mime.text import MIMEText# 创建邮件message = MIMEText('hello, send by Python...', 'plain', 'utf-8')"""构建MIMEText时,我们要注意: 1. 第一个参数就是邮件正文 2. 第二个参数是MIME的subtype,传入'plain',最终的MIME就是'text/plain'。 3. 最后一定要用utf-8编码保证多语言兼容性。"""
- 通过SMTP发送邮件
# 导入smtplib模块import stmplib# smtp serversmtp_server = "smtp.qq.com"# dmtp 端口号smtp_port = 465"""这里我们要注意几点: 1. QQ邮箱的smtp server为:smtp.qq.com 2. smtp端口号通常为25,但是qq要求为465"""# 发件人地址from_address = "xxxxxxxxx@qq.com"# 发件人密码(注意,这里的密码就是上面我们提到的 授权码 )password = "xxxxxxxx"# 收件人地址receiver_address = "xxxxxxxx@qq.com"# 普通的,我们使用SMTP即可,而QQ要求SMTP_SSLsmtpObject = smtplib.SMTP_SSL(smtp_server, smtp_port)# set_debuglevel(1)打印出和SMTP服务器交互的所有信息smtpObject.set_debuglevel(1)# 登录到SMTP服务器smtpObject.login(from_address, password)# 发送邮件(一次可以发送给多个人,所以传入一个list)smtpObject.sendmail(from_address, [receiver_address], message.as_string()) # as_string()把MIMEText对象变成strsmtpObject.quit()
发送成功
源码
我们可以看到,发送邮件时对发件人、收件人、主题都 没有设置。
因为邮件主题、如何显示发件人、收件人等信息并不是通过SMTP协议发给MTA,而是包含在发给MTA的文本中的,所以,我们必须把From、To和Subject添加到MIMEText中,才是一封完整的邮件。
# -*- coding: utf-8 -*-from email.mime.text import MIMETextfrom email.header import Headerimport smtplib# smtp基本信息smtp_server = "smtp.qq.com"smtp_port = 465# 邮件基本信息from_address = "xxxxxxxx@qq.com"password = "xxxxxxxx"receiver_address = "xxxxxx@qq.com"# 邮件构造message = MIMEText("Hello, I am sending email by python", "plain", "utf-8")message["From"] = Header("Python小白", "utf-8")message["To"] = Header(receiver_address, "utf-8")message["Subject"] = Header("来自Python SMTP的问候...", "utf-8")# 发送邮件smtpObject = smtplib.SMTP_SSL(smtp_server, smtp_port)smtpObject.set_debuglevel(1)smtpObject.login(from_address, password)smtpObject.sendmail(from_address, [receiver_address], message.as_string())smtpObject.quit()
最后,通过以上部分,不出什么以外的话,我们就可以通过Python发送一封完整的邮件啦。
重点就是QQ邮箱的特殊性了,SSL的要求以及端口号的不同都是我们需要注意的问题。
阅读全文
0 0
- Python SMTP 发送纯文本邮件
- python 利用smtp发送文本邮件
- python smtp发送邮件
- python smtp发送邮件
- Python SMTP发送邮件
- Python SMTP发送邮件
- python smtp 发送邮件
- Python SMTP发送邮件
- Python SMTP发送邮件
- python SMTP发送邮件
- Python SMTP发送邮件
- Python SMTP发送邮件
- Python SMTP发送邮件
- Python SMTP发送邮件
- (Python)利用SMTP发送邮件基础篇,发送文本邮件
- python学习笔记-------发送邮件(纯文本)
- Python发送邮件(Email SMTP)
- python使用smtp发送邮件
- Oracle之三大表连接优化大全
- python基础(三)
- 路由选择原理,静态路由
- Servlet的几个关键对象
- linux网络编程之posix 线程(三):posix 匿名信号量与互斥锁 示例生产者--消费者问题
- Python SMTP 发送纯文本邮件
- thinkphp(2) foreach($arr as &$value)用法 记录一下
- 深入理解JVM
- Java文件--复制
- first day
- 16.Struts2_OGNL读取Map栈(Context Map)里对象的属性及其他字段和方法
- csv文件中关于null byte的处理
- cdecl、stdcall、fastcall函数调用约定区别
- python中“+=”操作与“+”操作