【smtplib】用来发邮件
【email】用来构建邮件内容
以上两个模块同属于python内置模块
点击查看官方文本说明
点击查看百度教程汇总
使用方法说明
import smtplib
server = smtplib.SMTP()
server.connect(host, port)
#host:发邮件服务器
#port:服务器端口
server.login(username, password)
#username:登录邮箱的用户名
#password:登录密码/授权码
server.sendmail(sender, to_addr, msg.as_string())
#from_addr:邮件发送地址,就是上面的username
#to_addr:邮件收件人地址
#msg.as_string():为一个字符串类型
server.quit()
#退出服务器,结束SMTP会话
示例1(以QQ邮箱为例):
# smtplib 用于邮件的发信动作
import smtplib
# 发信方的信息:发信邮箱,QQ邮箱授权码
from_addr = 'xxx.qq@com'
password = '你的授权码数字'
# 收信方邮箱
to_addr = 'xxx.qq@com'
# 发信服务器
smtp_server = 'smtp.qq.com'
# 开启发信服务,这里使用的是加密传输
server = smtplib.SMTP_SSL()
server.login(smtp_server,465)
# 登录发信邮箱
server.login(from_addr, password)
# 发送邮件
server.sendmail(from_addr, to_addr, msg.as_string())
# 关闭服务器
server.quit()
点击查看官方文本说明
点击查看百度教程汇总
email模块:用来写邮件内容的模块
MIMEText:内容形式为纯文本、HTML页面。
MIMEImage:内容形式为图片。
MIMEMultipart:多形式组合,可包含文本和附件。
对应导入代码如下:
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
email模块,只需导入部分函数。
如:
from email.mime.text import MIMEText
# 引入email包中构建文本内容的方法
【MIMEText()方法】需要输入三个参数:文本内容、文本类型和文本编码。
MIMEText(msg,type,chartset)
# msg:文本内容,可自定义
# type:文本类型,默认为plain(纯文本)
# chartset:文本编码,中文为“utf-8”
1.导入模块:stmplib,email模块
2.定义变量:发件人,密码,收件人,正文内容,服务器
3.使用方法:链接、登录、发送、推出
示例2【初级邮件】(以QQ邮箱为例完整信息发送代码)
# smtplib 用于邮件的发信动作
import smtplib
from email.mime.text import MIMEText
# email 用于构建邮件内容
# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = '[email protected]'
password = '你的授权码数字'
# 收信方邮箱
to_addr = '[email protected]'
# 发信服务器
smtp_server = 'smtp.qq.com'
# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
msg = MIMEText('send by python','plain','utf-8')
# 开启发信服务,这里使用的是加密传输
server = smtplib.SMTP_SSL()
server.connect(smtp_server,465)
# 登录发信邮箱
server.login(from_addr, password)
# 发送邮件
server.sendmail(from_addr, to_addr, msg.as_string())
# 关闭服务器
server.quit()
丰富邮件头部信息
使用标准示例:
from email.header import Header
msg['From'] = Header(from_addr)
msg['To'] = Header(to_addr)
msg['Subject'] = Header('python test')
示例3【完整邮件发送】:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from_addr = '[email protected]'
password = 'jspajpipqqew'
to_addr = '[email protected]'
smtp_server = 'smtp.qq.com'
server = smtplib.SMTP_SSL()
server.connect(smtp_server, 465)
server.login(from_addr, password)
text = '''亲爱的学员,你好!
希望学习Python对你不是一件困难的事情!
人生苦短,我用Python
'''
msg = MIMEText(text,'plain','utf-8')
msg['From'] = Header('老师')
msg['To'] = Header('学生')
msg['Subject'] = Header('来自老师的问候')
server.sendmail(from_addr,to_addr, msg.as_string())
server.quit()
丰富正文部分信息
原始正文内容如下:
msg = MIMEText('send by python','plain','utf-8')
如果文案内容较长,正文部分用text变量来做正文。
text = 'send by python'
msg = MIMEText(text,'plain','utf-8')
1.设置一个列表形式的变量进行群发
2.用while循环进行群发
3.调用csv模块进行群发
书写方式
to_addrs = ['[email protected]','[email protected]']
msg['To'] = Header(",".join(to_addrs))
注意:
Header接受的第一个参数的数据类型必须要是字符串或者字节,因此书写方式为【Header(",".join(to_addrs))】
采用询问是否继续输入邮件地址的方式,并用while循环实现多个收件人的功能。
【to_addrs】:需要定义空列表,来存放收件人的邮箱地址。
书写方式:
to_addrs = []
while True:
a=input('请输入收件人邮箱:')
#输入收件人邮箱
to_addrs.append(a)
#写入列表
b=input('是否继续输入,n退出,任意键继续:')
#询问是否继续输入
if b == 'n':
break
print(to_addrs)
示例4:
# smtplib 用于邮件的发信动作
import smtplib
from email.mime.text import MIMEText
# email 用于构建邮件内容
from email.header import Header
# 用于构建邮件头
# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = input('请输入登录邮箱:')
password = input('请输入邮箱授权码:')
# 收信方邮箱
to_addrs = []
while True:
a=input('请输入收件人邮箱:')
to_addrs.append(a)
b=input('是否继续输入,n退出,任意键继续:')
if b == 'n':
write()方式:
1.引入csv模块
2.提供需要写入csv文件的数据
3.建文件并写入数据
书写示例:
import csv #引用csv模块。
data = [['wufeng ', '[email protected]'],['kaxi', '[email protected]']]
#待写入csv文件的内容
with open('to_addrs.csv', 'w', newline='') as f:
writer = csv.writer(f)
for row in data:
writer.writerow(row)
read()方法:
1.引入csv模块
2.打开csv文件
3.读取需要的数据
书写示例:
import csv #引用csv模块。
with open('to_addrs.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
to_addrs=row[1]
示例5【完整csv发邮件】
import smtplib
# smtplib 用于邮件的发信动作
from email.mime.text import MIMEText
# email 用于构建邮件内容
from email.header import Header
# 用于构建邮件头
import csv
# 引用csv模块,用于读取邮箱信息
# 发信方的信息:发信邮箱,QQ邮箱授权码
# 方便起见,你也可以直接赋值
from_addr = input('请输入登录邮箱:')
password = input('请输入邮箱授权码:')
# 发信服务器
smtp_server = 'smtp.qq.com'
# 邮件内容
text='''亲爱的学员,你好!
希望学习python对你不是一件困难的事情!
人生苦短,我用Python
'''
# 待写入csv文件的收件人数据:人名+邮箱
# 记得替换成你要发送的名字和邮箱
data = [['wufeng ', '[email protected]'],['kaxi', '[email protected]']]
# 写入收件人数据
with open('to_addrs.csv', 'w', newline='') as f:
writer = csv.writer(f)
for row in data:
writer.writerow(row)
# 读取收件人数据,并启动写信和发信流程
with open('to_addrs.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
to_addrs=row[1]
msg = MIMEText(text,'plain','utf-8')
msg['From'] = Header(from_addr)
msg['To'] = Header(to_addrs)
msg['Subject'] = Header('python test')
server = smtplib.SMTP_SSL()
server.connect(smtp_server,465)
server.login(from_addr, password)
server.sendmail(from_addr, to_addrs, msg.as_string())
# 关闭服务器
server.quit()