zoukankan      html  css  js  c++  java
  • python邮件发送

    python发送邮件

    python中邮件发送可以使用smtplib模块,也可以使用第三方的yagmail模块。

    邮件收发简介

    • 假如从xx@126.com发送一份邮件至xx@sina.com。首先使用Foxmail等软件写好邮件发送,这些软件称为MUA(Mail User Agent,邮件用户代理)。

    • 邮件从MUA发出去之后,先发到MTA(Mail Transfer Agent,邮件传输代理),也就是邮件服务提供商。我们的邮件是从126.com发送的,所以先被投递到网易提供的MTA,再由网易的MTA发到对方服务商,也就是新浪的MTA。
      邮件到达新浪的MTA后,由于对方使用的是新浪的邮箱,因此新浪的MTA会将邮件投递至最终的目的地MDA(Mail Delivery Agent,邮件投递代理)。

    • 邮件到达MDA之后就会存放在某个服务器,我们将这个长期保存邮件的地方称为电子邮箱。

    • 编写程序发送邮件本质就是编写MUA把邮件发送到MTA;收取邮件就是编写MUA从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,优点是不但能收取邮件,还可以直接操作MDA上存储的邮件,比如从收件箱移动到垃圾箱等。

    另外使用python发送邮件时需要注意:

    • 大多数邮件服务商需要手动打开SMTP发信和POP收信功能。否则只能网页登录。
    • 邮件客户端大多数要求使用客户端授权密码,而不是邮箱密码。需要网页登录设置。

    smtplib
    python对SMTP支持的有smtplib和email2个模块,其中email负责构造邮件,smtplib负责发送邮件。

    • email构造邮件
    • smtplib发送邮件

    实例

    yagmail
    yagmail是一个第三方模块,点击yagmail可以在github查看该项目使用说明及源码。
    使用yagmail发送邮件简单方便,免去了构建邮件内容的繁琐步骤。

    安装
    python2和python3的安装如下

    pip install yagmail
    pip3 install yagmail

    使用
    实例化SMTP()类,然后调用send()方法即可。
    更多使用可以参考github项目主页说明。

    实例

    import yagmail
    args = {
    "user": "xxxx@163.com",
    "password": "xxxx",
    "host": "smtp.163.com",
    "port": "465"
    }
    emailList = ['xxx@qq.com']
    yag = yagmail.SMTP(**args)
    yag.send(to=emailList, subject="python邮件", contents="Thanks for your python email!", attachments="__init__.py")
    • to:收件人,多个收件人可以通过列表方式传递。
    • subject:邮件主题。
    • contents:邮件正文。
    • attachments:附件,可以使用绝对路径。此处表示该文件夹和代码在同一目录。

    另外,此处的contents可以传递列表,它可以自动识别文件格式。例如:
    上面发送修改为如下格式

    yag.send(to=emailList, subject="python邮件", contents=["Thanks for your python email!","__init__.py"])

    最后收到邮件效果和上面的代码一致。可自动将init.py识别为附件并添加。

    I am a slow walker,but I never walk backwards.
  • 相关阅读:
    SpringMvc 的小dome
    解决Eclipse加载Tomcat报错Could not load the Tomcat server configuration.The configuration may be corrupt or incomplete.
    【转载】理解java三层架构:持久层、业务层、表现层
    Eclipse 报错 org.springframework.context.support.AbstractApplicationContext refresh处理
    Eclipes 报错The ... package is not accessible解决
    Tomcat文件目录及用途
    MyBatis配置文件mybatis-config.xml中的mappers中引入映射文件的几种方式总结
    Mybatis中自动生成主键在mysql和Oracle当中的情况
    mybatis中int类型的判断问题分析
    Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 56; columnNumber: 17
  • 原文地址:https://www.cnblogs.com/jiangshanwang/p/9148846.html
Copyright © 2011-2022 走看看