用python发邮件

  python集成了邮件功能,可以满足各种发邮件的需求,这里以SMTP协议和QQ邮箱为例

  • 普通纯文字的邮件
from email.mime.text import MIMEText
from email.utils import formataddr
import smtplib

from_addr = "from@qq.com" #发件邮箱
password = "password"	#密码
to_addr = "接收邮箱"	
smtp_server = "smtp.qq.com" #邮箱服务器

msg = MIMEText("hello world", 'plain', 'utf-8')#plain表示纯文本 #html表示html邮件		
#msg = MIMEText("<html><body><h1>Hello</h1></body></html>", 'html', 'utf-8') 
msg['From'] = formataddr(("我是发件人哦", from_addr)) #formataddr用于构建邮件地址
msg['To'] = formataddr(("你是收件人", to_addr))   #收件人
msg['Subject'] = "小说更新啦"   #主题

try:	
    server = smtplib.SMTP_SSL(smtp_server, 465) #SMTP_SSL才能登陆QQ邮箱
    server.set_debuglevel(1) #打印交互信息
    server.login(from_addr, password) #登陆
    server.sendmail(from_addr, [to_addr], msg.as_string()) #发送邮件
    server.quit() #退出
    print("成功发送")
except smtplib.SMTPException as e:
    print('发送失败', e)

  • 收件人为多人时的设置方法
to_addr = "1@qq.com, 2@qq.com, 3@qq.com"
server.sendmail(from_addr, to_addr.split(','), msg.as_string()) 

  • 添加附件,并在邮件中显示图片
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formataddr
import smtplib

from_addr = "from@qq.com" #发件邮箱
password = "password"	#密码
to_addr = "接收邮箱"	
smtp_server = "smtp.qq.com" #邮箱服务器

msg = MIMEMultipart() #创建实例

msg['From'] = formataddr(("我是发件人哦", from_addr)) #formataddr用于构建邮件地址
msg['To'] = formataddr(("你是收件人", to_addr))   #收件人
msg['Subject'] = "小说更新啦"   #主题

#添加附件 test.txt
with open("test.txt", "rb") as f:
    txt = f.read()
txt11 = MIMEApplication(txt) 
txt11.add_header('Content-Disposition', 'attachment', filename="随便的名字")#filename就是收到邮件显示的名字
txt11.add_header('Content-ID', '11txt')
msg.attach(txt11)

#添加图片test.png
with open("png.txt", "rb") as f:
    pic = f.read()
part = MIMEApplication(pic)
part.add_header('Content-Disposition', 'attachment', filename="22.png")
part.add_header('Content-ID', '22') #设置好ID,在html中引用就能显示在正文
#part.add_header('X-Attachment-Id', '0')
msg.attach(part)

#添加html,在正文显示图片
msg.attach(MIMEText('<html><body><h1>Hello</h1>' +
    '<p><img src="cid:22"></p>' +
    '</body></html>', 'html', 'utf-8'))

try:	
    server = smtplib.SMTP_SSL(smtp_server, 465) #SMTP_SSL才能登陆QQ邮箱
    server.set_debuglevel(1) #打印交互信息
    server.login(from_addr, password) #登陆
    server.sendmail(from_addr, [to_addr], msg.as_string()) #发送邮件
    server.quit() #退出
    print("成功发送")
except smtplib.SMTPException as e:
    print('发送失败', e)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值