Python——简简单单的发邮件

Python——简简单单的发邮件

刚到新公司,这段时间一直在忙,本身有开发工作的任务,现在兼顾PM的角色,学习只能靠零散的时间了

前言:今天来分享一下使用python发邮件

代码示例:

# -*- coding: UTF-8 -*-

import smtplib

from email.mime.base import MIMEBase

from email import encoders

from email.header import Header

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

from email.utils import parseaddr, formataddr

def _format_addr(s):

name, addr = parseaddr(s)

return formataddr((Header(name, 'utf-8').encode(), addr))

# 第三方 SMTP 服务

mail_host="smtp.163.com" #设置服务器

mail_user="XXX@163.com" #用户名

mail_pass="********" #密码

sender = mail_user

receivers = ['XXX@163.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

# 邮件对象:

message = MIMEMultipart()

message['From'] = _format_addr('淘宝管理员 <%s>' % sender)

message['To'] = _format_addr('收件人 <%s>' % receivers[0])

message['Subject'] = Header('来自淘宝内部优惠券链接', 'utf-8').encode()

# 邮件正文是MIMEText:

message.attach(MIMEText('

枸杞蜂蜜新疆纯原蜜天然农家自产蜂蜜1000克黑枸杞蜜【包邮】点击链接

' +

'

' +

'', 'html', 'utf-8'))

# 添加附件就是加上一个MIMEBase,从本地读取一个图片:

with open('/Users/hsm/AI/Python/image/fengmi.png', 'rb') as f:

# 设置附件的MIME和文件名,这里是png类型:

mime = MIMEBase('image', 'png', filename='fengmi.png')

# 加上必要的头信息:

mime.add_header('Content-Disposition', 'attachment', filename='fengmi.png')

mime.add_header('Content-ID', '<0>')

mime.add_header('X-Attachment-Id', '0')

# 把附件的内容读进来:

mime.set_payload(f.read())

# 用Base64编码:

encoders.encode_base64(mime)

# 添加到MIMEMultipart:

message.attach(mime)

try:

smtpObj = smtplib.SMTP()

smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号

smtpObj.set_debuglevel(1) #设置为1,可以查看运行日志

smtpObj.login(mail_user,mail_pass)

smtpObj.sendmail(sender, receivers, message.as_string())

print "邮件发送成功"

except smtplib.SMTPException:

print "Error: 无法发送邮件"

运行结果:

Python——简简单单的发邮件

讲解:以上使用163做例子,

Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。

只要掌握了各种邮件类型的构造方法,正确设置好邮件头,就可以顺利发出。

构造一个邮件对象就是一个Messag对象,如果构造一个MIMEText对象,就表示一个文本邮件对象,如果构造一个MIMEImage对象,就表示一个作为附件的图片,要把多个对象组合起来,就用MIMEMultipart对象,而MIMEBase可以表示任何对象。它们的继承关系如下:

Python——简简单单的发邮件


展开阅读全文

页面更新:2024-03-05

标签:组合   收件人   新疆   枸杞   淘宝   蜂蜜   附件   文本   对象   邮箱   邮件   类型   链接   时间   数码   图片

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top