(原文:https://www.cnblogs.com/fancy0158/p/10056091.html)

SMTP:简单传输协议,实在Internet上传输Email的事实标准。

Python的smtplib模块提供了一种很方便的途径来发送电子邮件,它对SMTP协议进行了简单的封装。

python中发送邮件除了SMTP模块外,还需用到email模块。email模块主要用来定义邮件的标题、正文、附件。

一、SMTP的方法

1、SMTP模块的方法

connect(host,port)

  • host:指定连接的邮箱服务器
  • port:指定连接服务器的端口号

login(user,passwork)

  • user:登陆邮箱用户名
  • password:登陆邮箱密码

sendmail(from_addr,to_addrs,msg,...)

  • from_addr:邮件发送者地址
  • to_addrs:收件人,字符串列表
  • msg:发送的消息

quit()方法:结束SMTP会话

2、email模块的方法

email.mime.text.MIMEText() 用来定义邮件正文

email.header.Header() 用来定义邮件标题

email.mime.multipart.MIMEMultipart() 定义邮件附件

二、自动发送HTML邮

 
# coding:utf-8

import unittest, time,smtplib
from email.mime.text import MIMEText
from email.header import Header

smtpserver = 'smtp.qq.com'
user = 'username@qq.com '
password = 'password'
sender = 'username@qq.com'
receiver = 'receive@163.com'
subject = 'Python email test'

#编写HTML类型的邮件正文
msg = MIMEText('<html><h1>Test! </h1></html>', 'html', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8')  #邮件主题

#连接发送邮件
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user, password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()
 

收到的邮件如下:

三、发送带附件的邮件

 
# coding:utf-8
import unittest, time,smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

smtpserver = 'smtp.qq.com'
user = 'username@qq.com '
password = 'password'
sender = 'username@qq.com'
receiver = 'receiver@163.com'

subject = 'Python email test'
sendfile = open('E://report//test.txt', 'rb').read()  #要发送的附件

# 发送带附件的邮件
attach = MIMEText(sendfile, 'base64', 'utf-8')
attach['Content-Type'] = 'application/octet-stream'
attach['Content-disposition'] = 'attachment; filename = "test.txt" ' #邮件上显示的附件名称

msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = subject
msgRoot['test']
msgRoot.attach(attach)

smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user, password)
smtp.sendmail(sender, receiver, msgRoot.as_string())
smtp.quit()
 

收到的邮件如下: