Python学习3

python有许多用途,今天我们来学习如何使用python发邮件。

我们可以通过不同的协议,使用邮箱发送邮件。今天我们以SMTP协议作为例子。

首先我们来看看SMTP的定义。

一般的免费邮箱都是支持该协议的

如果我们想在163邮箱打开SMTP服务,则如下图,设置使用SMTP服务。

然后本次测试所需要的Python模块如下

下面输入发件邮箱和收件邮箱

然后输入邮件内容。

msg使用偶见对象,包含发件人msg['From'],收件人信息msg['To'],邮件主题msg['Subject']和msg.attach()

_format_addr()只是一个格式化函数。

通过MIMEBase对象即可添加附件,下面是添加一个图片(img.png)附件的代码。

最后就是对SMTP服务器的一些设置

运行代码,就可以完成邮件发送。

完整的python代码,感兴趣的同学可以自己试试...

from email import encoders

from email.header import Header

from email.utils import parseaddr, formataddr

import smtplib

from_addr = '@163.com' #发送邮件的邮箱

password = '' #发送邮箱的密码,一般和登录密码不相同,163邮箱此密码需要重新设置

to_addr = '@qq.com' #接受邮件的邮箱

def _format_addr(s):

name, addr = parseaddr(s)

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

# 邮件对象:

msg = MIMEMultipart()

msg['From'] = _format_addr('Python爱好者 ' % from_addr)

msg['To'] = _format_addr('管理员 ' % to_addr)

msg['Subject'] = Header('来自SMTP的问候……', 'utf-8').encode()

# 邮件正文是MIMEText:

msg.attach(MIMEText('send with file...', 'plain', 'utf-8'))

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

with open('E:\img.png', 'rb') as f:

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

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

# 加上必要的头信息:

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

mime.add_header('Content-ID', '')

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

# 把附件的内容读进来:

mime.set_payload(f.read())

# 用Base64编码:

encoders.encode_base64(mime)

# 添加到MIMEMultipart:

msg.attach(mime)

server = smtplib.SMTP(smtp_server, 25)#SMTP服务器默认端口是25

server.set_debuglevel(1)

server.login(from_addr, password)#登录SMTP服务器

server.sendmail(from_addr, [to_addr], msg.as_string())#发送邮件

server.quit()

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180402G1PT5C00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券