Python 简单发送邮件 / 发送带各种附件邮件
程序员文章站
2024-03-18 14:54:28
...
写个自动发送邮件的python脚本。
用脚本发送邮件思路是:登陆邮箱-->写邮件-->发送邮件
发送邮箱设置:
得开通自己邮箱的 SMTP 功能,具体可百度。
以163网易邮箱为例: 设置 --> POP3/SMTP/IMAP --> 设置POP3/SMTP/IMAP 勾选保存
一、发送简单邮件:
用STMP库
import smtplib
#发送字符串的邮件
from email.mime.text import MIMEText
#处理多种形态的邮件主体我们需要 MIMEMultipart 类
from email.mime.multipart import MIMEMultipart
#处理图片需要 MIMEImage 类
from email.mime.image import MIMEImage
#设置服务器所需信息
fromaddr = 'aaa@qq.com'#邮件发送方邮箱地址
password = 'zzz'#密码(部分邮箱为授权码)
toaddrs = ['aaa@qq.com', 'aaa@qq.com']#邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
#设置email信息
#---------------------------发送字符串的邮件-----------------------------
#邮件内容设置
message = MIMEText('hello,ziqiiii','plain','utf-8')
#邮件主题
message['Subject'] = 'ziqiiii test email'
#发送方信息
message['From'] = sender
#接受方信息
message['To'] = receivers[0]
#---------------------------------------------------------------------
#登录并发送邮件
try:
server = smtplib.SMTP('smtp.163.com')#163邮箱服务器地址,端口默认为25
server.login(fromaddr,password)
server.sendmail(fromaddr, toaddrs, message.as_string())
print('success')
server.quit()
except smtplib.SMTPException as e:
print('error',e) #打印错误
二、发送各种带附件的邮件
使用MIMEMultipart来标示这个邮件是多个部分组成的,然后attach各个部分。如果是附件,则add_header加入附件的声明。
MIME有很多种类型,这个略麻烦,如果附件是图片格式,我要用MIMEImage,如果是音频,要用MIMEAudio,如果是word、excel,我都不知道该用哪种MIME类型了,得上google去查。
最懒的方法就是,不管什么类型的附件,都用MIMEApplication,MIMEApplication默认子类型是application/octet-stream。
import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
if __name__ == '__main__':
fromaddr = 'aaa@qq.com'
password = 'password'
toaddrs = ['aaa@qq.com', 'aaa@qq.com']
content = 'hello, this is email content.'
textApart = MIMEText(content)
imageFile = '1.png'
imageApart = MIMEImage(open(imageFile, 'rb').read(), imageFile.split('.')[-1])
imageApart.add_header('Content-Disposition', 'attachment', filename=imageFile)
pdfFile = '算法设计与分析基础第3版PDF.pdf'
pdfApart = MIMEApplication(open(pdfFile, 'rb').read())
pdfApart.add_header('Content-Disposition', 'attachment', filename=pdfFile)
zipFile = '算法设计与分析基础第3版PDF.zip'
zipApart = MIMEApplication(open(zipFile, 'rb').read())
zipApart.add_header('Content-Disposition', 'attachment', filename=zipFile)
m = MIMEMultipart()
m.attach(textApart)
m.attach(imageApart)
m.attach(pdfApart)
m.attach(zipApart)
m['Subject'] = 'title'
try:
server = smtplib.SMTP('smtp.163.com')
server.login(fromaddr,password)
server.sendmail(fromaddr, toaddrs, m.as_string())
print('success')
server.quit()
except smtplib.SMTPException as e:
print('error:',e) #打印错误
参考自:
上一篇: AI算法实现五子棋
下一篇: Python利用email模块发送邮件