前言
在 Python 有很多方向可以应用,比如爬虫、预测分析、GUI、自动化、图像处理、可视化等等,可能只需要十几行代码就能实现酷炫的功能。Python 是动态脚本语言,所以代码逻辑比 Java 要简要很多,实现同样的功能少写很多代码,而且Python 生态有众多的第三方工具库,只需要调用接口,就能使用复杂的功能。
本期通过使用 smtplib 库和 email 库可以实现Python脚本发送电子邮件,并可以实现群发效果。
邮件说明(以网易163邮箱说明)
通过图中标注,一份邮件主要有:发件人、收件人、邮件主题、附加、正文、图片等要素功能,通过 Python 来实现发邮件这些基本都要涉及到,还有要设置服务器地址以及邮箱授权码(文章最后教程)
网易邮箱(163邮箱)服务器类型及地址
Python脚本代码
#-*-coding:GBK -*-
import smtplib
# 负责构造文本
from email.mime.text import MIMEText
# 负责构造图片
from email.mime.image import MIMEImage
# 负责将多个对象集合起来
from email.mime.multipart import MIMEMultipart
from email.header import Header
# SMTP服务器,这里使用163邮箱
mail_host = "smtp.163.com"
# 发件人邮箱
mail_sender = "******@163.com"
# 邮箱授权码,注意这里不是邮箱密码,如何获取邮箱授权码,请看本文最后教程
mail_license = "********"
# 收件人邮箱,可以为多个收件人
mail_receivers = ["******@qq.com","******@163.com"]
mm = MIMEMultipart('related')
# 邮件主题
subject_content = """Python邮件测试"""
# 设置发送者,注意严格遵守格式,里面邮箱为发件人邮箱
mm["From"] = "sender_name<******@163.com>"
# 设置接受者,注意遵守格式,里面邮箱为接受者邮箱
mm["To"] = "receiver_1_name<******@qq.com>,receiver_2_name<******@163.com>"
# 设置邮件主题
mm["Subject"] = Header(subject_content,'utf-8')
# 邮件正文内容
body_content = """你好,这是一个测试邮件!"""
# 构造文本,参数1:正文内容,参数2:文本格式,参数3:编码方式
message_text = MIMEText(body_content,"plain","utf-8")
# 向MIMEMultipart对象中添加文本对象
mm.attach(message_text)
# 二进制读取图片
image_data = open('c.jpg','rb')
# 设置读取获取的二进制数据
message_image = MIMEImage(image_data.read())
# 关闭刚才打开的文件
image_data.close()
# 设置图片名称
message_image["Content-Disposition"] = 'attachment; filename="c.jpg"'
# 添加图片文件到邮件信息当中去
mm.attach(message_image)
# 构造附件(以Excel文件为例)
atta = MIMEText(open('ceshi.xlsx', 'rb').read(), 'base64', 'utf-8')
# 设置附件信息
atta["Content-Disposition"] = 'attachment; filename="ceshi.xlsx"'
# 添加附件到邮件信息当中去
mm.attach(atta)
# 创建SMTP对象
stp = smtplib.SMTP()
# 设置发件人邮箱的域名和端口,端口地址为25
stp.connect(mail_host, 25)
# set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息
stp.set_debuglevel(1)
# 登录邮箱,传递参数1:邮箱地址,参数2:邮箱授权码
stp.login(mail_sender,mail_license)
# 发送邮件,传递参数1:发件人邮箱地址,参数2:收件人邮箱地址,参数3:把邮件内容格式改为str
stp.sendmail(mail_sender, mail_receivers, mm.as_string())
print("邮件发送成功")
# 关闭SMTP对象
stp.quit()
注:按照自己的进行修改填写哦
测试效果
获取邮箱授权码教程
网易邮箱:登录邮箱——设置——POP3/SMTP/IMAP——开启服务(两个都可以)——验证后即可获得邮箱授权码
QQ邮箱:登录邮箱——设置——账户——POP3/IMAP/SMTP服务——开启服务——生产授权码
结尾
以上就是本期内容,如有问题留言或私信,会进行解答的哦,记得点赞关注加收藏