文章笔记参考:Python教程
一、电子邮件的发件过程:
发件人email->MUA(mail user agent:邮件用户代理)->MTA(mail transfer agent:邮件传输代理)->MDA(mail delivery agent:邮件投递代理,也就是服务器)<-MUA<-收件人
二、使用SMTP协议发送邮件
Python支持SMTP,同时,在email包内包含了关于邮件收发的一些API,可以使用Python进行纯文本、HTML、以及带有附件的邮件传输。下面介绍有关的
两个主要模块:email和smtplib,不过还是先讲一些套路吧:
使用python正常发送一个邮件的套路就是:
1)导入包:from email.mime.text import MIMEText
2)定义发送端地址,密码,接收端地址
3)定义一个SMTP服务器地址
4)导入smtplib
5)在25(默认)端口打开服务器
6)在改服务端登录,并发送邮件
7)退出SMTP
1)导入包:from email.mime.text import MIMEText
2)定义发送端地址,密码,接收端地址
3)定义一个SMTP服务器地址
4)导入smtplib
5)在25(默认)端口打开服务器
6)在改服务端登录,并发送邮件
7)退出SMTP
步骤详解:
1)定义发件人地址、密码、收件人地址:
from_addr = input('From: ')
password = input('Password: ')
to_addr = input('To: ')
2)定义一个SMTP服务器地址,同时在25端口打开SMTP服务器,进行发件人登录动作,这里以新浪的SMTP服务器地址为例
smtp_server = input('SMTP server')
import smtplib
server = smtplib.SMTP(smtp_server, 25) # the default protocol is 25
server.set_debuglevel(1) # 只是用来打印调试信息的,如果设置为0,就不打印
server.login(from_addr, password) # login SMTP
3)定义邮件内容,并且发送出去
msg = MIMEText('hello world!', 'plain', 'utf-8')
# 收件人可以有多个,所以这是一个list,msg是一个Message结构,所以转成string
server.sendmail(from_addr, [to_addr], msg.as_string())
# 一定要退出服务器
server.quit()
以上这封邮件发送出去的话,不会在收件人处查看到详细的发件人地址以及其他头信息,如果要添加的话,可以像下面这样