【Python】使用smtplib和email库可以实现Python脚本发送电子邮件

前言

        在 Python 有很多方向可以应用,比如爬虫、预测分析、GUI、自动化、图像处理、可视化等等,可能只需要十几行代码就能实现酷炫的功能。Python 是动态脚本语言,所以代码逻辑比 Java 要简要很多,实现同样的功能少写很多代码,而且Python 生态有众多的第三方工具库,只需要调用接口,就能使用复杂的功能。

        本期通过使用 smtplib 库和 email 库可以实现Python脚本发送电子邮件,并可以实现群发效果。

邮件说明(以网易163邮箱说明)

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服务——开启服务——生产授权码


结尾

        以上就是本期内容,如有问题留言或私信,会进行解答的哦,记得点赞关注加收藏

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小泽的熊先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值