使用Python smtplib库在线发送电邮
本节转自https://freeaihub.com/article/send-email-with-python.html,前往该页可在线进行邮件的发送练习
使用Python完成电子邮件的发送很容易,但许多人往往因为smtp服务的相关设置问题而失败,本节将使用Python的smptlib库,通过在线方式完成电子邮件的发送,同时着重说明邮件授权码如何获得。
创建邮件附件所需文件
#创建一个文件,一个图片
!echo 'my python email' > test.txt
!wget https://www.freeaihub.com/images/python.png
导入smtplib和email库
import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
import os,time
配置信息
什么是授权码?
授权码是邮箱用于登录第三方客户端的专用密码。适用于登录以下服务:POP3/IMAP/SMTP等服务。
不同的邮件服务商获取授权码的方法不同,以下为获取方法,注意,是获得发送人邮箱的授权码。
#在这里填入信息
sender = '' #发送人邮箱,你自己的邮件如yourname@126.com
authcode = '' #发送人邮箱授权码
receivers = '' #收件人的邮箱,例如yourfriendname@126.com
smtpserver='' # 例如smtp.126.com
smtpport=465 #smtp服务端口,通常为465,可根据邮箱服务的信息进行更改
subject = 'python发邮件测试' #主题
content = 'python smtplib模块和email模块自动发送的邮件' #正文
撰写邮件
#初始化信息对象
msg = MIMEMultipart()
msg['Subject'] = subject
msg['From'] = sender
msg['To'] = receivers
msg.attach(MIMEText('使用python smtplib模块和email模块自动发送邮件测试','plain','utf-8'))
#构造附件1,传送当前目录下文件
file_att1 = MIMEText(open('test.txt','rb').read(),'base64','utf-8') # rb以二进制方式读取
# file_att1["Content-Type"] = 'application/octet-stream'
# filename为附件名称,可以任意写,写什么名字,邮件中显示什么名字
file_att1["Content-Disposition"] = 'attachment; filename = "test.txt" '
#将附件添加到MIMEMultipart中
msg.attach(file_att1)
#图片附件
img_file = open(os.getcwd()+"/python.png",'rb').read()
msg_img = MIMEImage(img_file)
msg_img.add_header('Content-Disposition','attachment', filename = "python.png")
msg_img.add_header('Content-ID', '<0>')
msg.attach(msg_img)
#使用循环,连续发送5次验证效果
for i in range(5):
try:
s = smtplib.SMTP_SSL(smtpserver,smtpport)
s.login(sender,authcode)
s.sendmail(sender,receivers,msg.as_string())
print('发送成功')
except Exception:
print('发送失败')
time.sleep(10)
本节案例麻烦的地方在于如何从邮件服务商处正常获得授权码,smtp服务器地址,端口等信息,耐心配置,您一定可以成功实现使用python在线发送邮件。