SMTP(SimpleMailTransferProtocol)即简单邮件传输协议,是一套用于将邮件从源地址传输到目的地址的规则,它控制着信件的传输方式.Python的smtplib提供了一种非常方便的发送电子邮件的方式。它只是简单封装了smtp协议。1.准备用于发送邮件的邮箱账号准备好邮箱账号和邮箱登录授权码。不同类型邮箱获取授权码的方式类似。这里我们以QQ邮箱为例,演示获取授权码的步骤:第一步:通过网页登录QQ邮箱,找到帮助中心第二步:在帮助中心选择“客户端设置”第二个问题:然后按照相应的要求获取授权码并保存。2、发送邮件的基本步骤发送邮件的步骤与手动发送邮件的步骤基本相同:登录邮箱->准备邮件内容->发送邮件。2.1登录邮箱importsmtplib1。连接邮箱服务器连接对象=smtplib.SMTP_SSL(服务器地址,邮箱服务端口)-服务器地址:smtp.163.com(163邮箱),smtp.qq.com(qq邮箱)-邮箱服务端口:465或252.loginemailconnectionobject.login(emailaccount,authorizationcode)2.2准备数据数据是指要发送的内容。邮件内容的构建需要涉及到另一个库email,可以用来构建邮件主题和各种形式的邮件内容(包括文本内容、图片内容、html内容、附件)等。首先简单说一下email主题和电子邮件内容。文本内容,以及其他形式的内容将在后面的邮件内容中详细说明。从email.mime.multipart导入MIMEMultipart从email.mime.text导入MIMEText从email.header导入Header1。创建邮件对象mailobject=MIMEMultipart()2。setmailsubjectsubjectobject=Header(emailtitle,encodingmethod).encode()MailObject['Subject']=SubjectObject3.设置邮件发件人MailObject['From']='Username'4.设置MailReceiverMailObject['To']='ReceiverPerson1;收件人2;收件人3...'5。添加文本内容Textcontentobject=MIMEText(content,type,encodingmethod)-content:是一个文本字符串-type:plain(简单文本内容),html(超文本)mailobject.attach(textobject)2.3发送邮件3.各类邮件发送实例连接对象。sendmail(sender,recipient,mailobject.as_string())连接对象。quit()3.1普通文本内容邮件这种邮件只有普通文本信息,没有超文本,没有图片,也没有附件:#1.连接邮箱服务器con=smtplib.SMTP_SSL('smtp.163.com',465)#2.登录邮箱con.login('XXXX@163.com','XXXXX')#2.准备数据#创建邮件对象msg=MIMEMultipart()#设置邮件主题subject=Header('retrievepassword','utf-8').encode()msg??['Subject']=subject#设置邮件发件人msg['From']='XXXX@163.com'#设置邮件接收者msg['To']='726550822@qq.com'#添加添加文本text=MIMEText('忘记密码,需要找回密码','plain','utf-8')msg??.attach(text)#3.发送邮件con.sendmail('xxxx@163.com','726550822@qq.com',msg.as_string())con.quit()3.2超文本文件,文字更丰富有趣。我们日常生活中从各大平台收到的邮件都是这种类型的邮件,核心代码格式如下:fromemail.mime.textimportMIMETexthtmltextobject=MIMEText(htmlcontentstring,'html',encodingmethod)mailobject.attach(htmltextobject)具体代码:importsmtplibfromemail。mime.multipart从email.mime.text导入MIMEMultipart从email.header导入MIMETextimportHeadercon=smtplib.SMTP_SSL('smtp.163.com',465)con.login('xxxx@163.com','xxxxxx')msg=MIMEMultipart()subject=Header('找回密码','utf-8').encode()msg??['Subject']=subjectmsg['From']='xxxx@163.com'msg['To']='726550822@qq.com'#添加html内容content="""我是文中标题
邮件正文描述文字1
邮件正文2的描述文字
百度图片百度"""html=MIMEText(content,'html','utf-8')msg??.attach(html)#发送邮件con.sendmail('xxxx@163.com','726550822@qq.com',msg.as_string())con.quit()3.3发送附件除了文本内容,有时还需要将各种文件以附件的形式单独发送。发送附件的核心代码如下:fromemail.mime.textimportMIMETextfileobject=MIMEText(filebinarydata,'base64',encodingmethod)fileobject["Content-Disposition"]='attachment;filename="filename"'mailobject.attach(fileobject)具体代码:importsmtplibfromemail。mime.multipartimportMIMEMultipartfromemail.mime.textimportMIMETextfromemail.mime.imageimportMIMEImagefromemail.headerimportHeaderfromemail.mime.messageimportMIMEMessagefromcopyimportdeepcopycon=smtplib.SMTP_SSL('smtp.163.com',第465章subjectmsg['From']='xxxx@163.com'msg['To']='726550822@qq.com'#添加文件附件file1=MIMEText(open('files/test.txt','rb').read(),'base64','utf-8')file1["Content-Disposition"]='附件;filename="test.txt"'msg.attach(file1)file2=MIMEText(open('files/pyecharts.pdf','rb').read(),'base64','utf-8')file2["Content-Disposition"]='附件;filename="test.pdf"'msg.attach(file2)#发送邮件con.sendmail('xxxx@163.com','726550822@qq.com',msg.as_string())con.quit()