zoukankan      html  css  js  c++  java
  • 第十三章-电子邮件

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

    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()
    

      

      

    人若有恒 无所不成
  • 相关阅读:
    MYSQL limit用法
    mybaties mapping中if
    执行数据库同时又调接口
    WITH (NOLOCK)
    SpringMVC转发和重定向区别!
    MyBatis的foreach语句详解
    SSM mapper.xml
    win7与virtualbox中centos文件共享
    PBOC2.0中消费交易流程
    PBOC2.0协议中电子存折/电子钱包中圈存交易流程
  • 原文地址:https://www.cnblogs.com/weihuchao/p/6807150.html
Copyright © 2011-2022 走看看