Table of Contents
前言
邮件发送到接收流程:
发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- 收件人
MUA:Mail User Agent——邮件用户代理 如outlook
MTA:Mail Transfer Agent——邮件传输代理 outlook等软件会发给MTA
MDA:Mail Delivery Agent——邮件投递代理 邮件内容保存在MDA
当收件上登陆邮箱时会从 MDA 获取邮件内容
发邮件时,MUA和MTA使用的协议就是SMTP:
Simple Mail Transfer Protocol,后面的MTA到另一个MTA也是用SMTP协议。
收邮件时,MUA和MDA使用的协议有两种:
POP:Post Office Protocol,目前版本是3,俗称POP3;
IMAP:Internet Message Access Protocol,目前版本是4。
SMPT发送邮件
简单案例
使用如下
from email.mime.text import MIMEText # 负责构建邮件
# 参数一:邮件正文
# 参数二:邮件内容类型,plain代表纯文本
msg = MIMEText('Hello,send by Python..', 'plain', 'utf-8')
# 输入Email地址和口令
from_addr = input('From:')
password = input('Password:')
# 输入收件人地址:
to_addr = input('To:')
# 输入SMIP服务器地址:
smtp_server = input('SMTP server:') # 形如 smtp.qq.com 这是qq邮箱的smtp服务器地址
import smtplib # 负责发送邮件
# 连接SMTP服务器
server = smtplib.SMTP(smtp_server, 25) # SMTP 协议默认端口是25
# server = smtplib.SMTP_SSL(smtp_server, 465) 使用SSL协议的话 端口号就是465,SSL能够对传输内容以及用户名密码进行加密
# 使其可以打印出和SMTP服务器交互的所有信息,默认参数为false
server.set_debuglevel(1)
# 输入用户名密码登陆SMTP
server.login(from_addr, password)
# 发送邮件
# 参数一 发件人
# 参数二 收件人 可以有多个,是个list
# 参数三 邮件内容
server.sendmail(from_addr, [to_addr], msg.as_string()) # as_string将MIMEText转换成str
server.quit()
我是用qq邮箱向163邮箱发送的邮件,其中qq邮箱的密码不是我们登陆的密码,而是邮箱设置中的授权码。
收到的邮件如下:
注意如果使用了SSL,会出现在垃圾邮件中...并且无主题
没使用SSL 就可以在收件箱中看到
通过上面的图可以看出,邮件的 主题 均为 无主题,而发件人是我的qq号(我给抹了)。如果想更改主题和收件人以及发件人的内容,我们需要更改MIMEText对象的一些内容,如下: