python 发邮件

Posted LilyoO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 发邮件相关的知识,希望对你有一定的参考价值。

1、导入所需要的模块

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.header import Header

2、设置smtplib所需的参数

# 下面的发件人,收件人是用于邮件传输的。
smtpserver = exmail.qq.com
username = ‘XXX@daydaycook.com
password = ***
sender = ‘XXX@daydaycook.com
# receiver=‘XXX@126.com‘ 单个收件人
# 多个收件人
receiver = [‘XXX@daydaycook.com, ***g@daydaycook.com]

3、构造邮件对象MIMEMultipart对象

subject = 中文标题
subject = Header(subject, utf-8).encode()
# 下面的主题,发件人,收件人,日期是显示在邮件页面上的。
# MIMEMultipart主要有三种类型:mixed、alternative、related
msg = MIMEMultipart(mixed) msg[Subject] = subject msg[From] = ‘XXX@daydaycook.com <XXX@daydaycook.com> # msg[‘To‘] = ‘XXX@126.com‘ # 收件人为多个收件人,通过join将列表转换为以;为间隔的字符串 msg[To] = ";".join(receiver) # msg[‘Date‘]=‘2012-3-16‘

4、构造文字内容

text = "嗨!
你好吗?
Here is the link you wanted:
http://www.baidu.com"
text_plain = MIMEText(text, plain, utf-8)
msg.attach(text_plain)

5、构造图片附件

send_image_file = open(r/Users/ddcuser/Downloads/true.jpeg, rb).read()
image = MIMEImage(send_image_file)
image.add_header(Content-ID, <image1>)
image["Content-Disposition"] = attachment; filename="testimage.png"
msg.attach(image)

6、构造html附件

# 发送正文中的图片:由于包含未被许可的信息,网易邮箱定义为垃圾邮件,报554 DT:SPM :<p><img src="cid:image1"></p>
html = """
<html>  
  <head></head>  
  <body>  
    <p>Hi!<br>  
       How are you?<br>  
       Here is the <a href="http://www.baidu.com">link</a> you wanted.<br> 
    </p> 
  </body>  
</html>  
"""
text_html = MIMEText(html, html, utf-8)
text_html["Content-Disposition"] = attachment; filename="text_html.html"
msg.attach(text_html)

7、构造压缩文件zip附件

sendfile = open(r/Users/ddcuser/Downloads/20191211160425_sendCredit_result.zip, rb).read()
text_att = MIMEText(sendfile, base64, utf-8)
text_att["Content-Type"] = application/octet-stream
# 附件可以重命名成aaa.zip
text_att.add_header(Content-Disposition, attachment, filename=aaa.zip)
msg.attach(text_att)

8、构造txt附件

sendfile = open(r/Users/ddcuser/Downloads/20191211160425_sendCredit_result.txt, rb).read()
text_att = MIMEText(sendfile, base64, utf-8)
text_att["Content-Type"] = application/octet-stream
# 附件可以重命名成aaa.txt
text_att.add_header(Content-Disposition, attachment, filename=aaa.txt)
msg.attach(text_att)

9、构造xls附件

sendfile = open(r/Users/ddcuser/Downloads/20191211160425_sendCredit_result.xls, rb).read()
text_att = MIMEText(sendfile, base64, utf-8)
text_att["Content-Type"] = application/octet-stream
# 附件可以重命名成aaa.xls
text_att.add_header(Content-Disposition, attachment, filename=aaa.xls)
msg.attach(text_att)

10、发送邮件

smtp = smtplib.SMTP()
# 发件人是腾讯企业邮箱,如果用其他邮箱需要修改参数
smtp.connect(smtp.exmail.qq.com)  
smtp.login(username, password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()

以上是关于python 发邮件的主要内容,如果未能解决你的问题,请参考以下文章

Python发邮件

python编码发邮件

python 发邮件

python中关于发邮件的示例

49. Python 发邮件

Python向多人发送、抄送带附件的邮件(含详细代码)