使用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在线发送邮件。

posted @ 2020-06-09 09:13  freeaihub  阅读(253)  评论(0编辑  收藏  举报