第十三章-电子邮件

邮件发送过程需要经过几部分

MUA(Mail User Agent)邮件用户代理, 是邮件发送时需要的电子邮件软件

MTA(Mail Transfer Agent)邮件传输代理, 邮件通过MUA发送, 经由MTA到达发送方邮件的服务商, 再有MTA到达接收方的邮件服务商

MDA(Mail Delivery Agent)邮件投递代理, MTA到达接收端最终的是MDA, 邮件会长期存储在的服务器叫做电子邮箱

编辑邮件的过程就是

  发送方, 编写MUA将邮件发送到MTA

  接收方, 编写MUA从MDA接受到邮件

具体过程如下

发件人 --> MUA --> MTA --> 若干个MTA --> MDA <-- MUA <-- 收件人

发送邮件时, MUA到MTA, MTA到MTA都是使用的是 SMTP(Simple Mail Transfer Protocol)

接受邮件时, MUA到MDA使用的一般有两种协议, 一个是POP(POST Office Protocol)常用的版本是POP3, 另一种是IMAP(Internet Message Access Protocol), 目前版本是4

1 SMTP发送邮件

  SMTP是发送邮件的协议

  在Python中有对SMTP协议的支持, 可以发送纯文本, HTML以及附件的邮件

  使用的是smtplib和email两个模块

  可以使用smtplib.SMTP传入SMTP服务器地址来形成smyp对象

  使用set_debuglevel来设置信息展示等级

  再登录系统

  使用sendmail()来发送邮件, 主要是配置邮件信息

    第一个参数是本地IP地址

    第二个是发送的目的地址, 因为可以发送给多个人, 所以该数据是列表类型

    第三个是具体的信息, 是一个MIME格式的内容

  具体配置的有主体内容, 格式, 编码格式, 来自的地址, 接受方, 邮件主题

  具体配置代码如下

from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr

import smtplib

def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))

from_addr = input('From: ')
password = input('Password: ')
to_addr = input('To: ')
smtp_server = input('SMTP server: ')

msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
print(type(msg))
msg['From'] = _format_addr('Python爱好者 <%s>' % from_addr)
msg['To'] = _format_addr('管理员 <%s>' % to_addr)
msg['Subject'] = Header('来自SMTP的问候……', 'utf-8').encode()

server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()

  

  

人若有恒 无所不成
原文地址:https://www.cnblogs.com/weihuchao/p/6807150.html