zoukankan      html  css  js  c++  java
  • Python学习笔记(十八)——发邮件的两种方法

    SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

    Python对SMTP支持有smtplibemail两个模块,email负责构造邮件,smtplib负责发送邮件。

    除了上面这种发邮件的方法,yagmail也可以更简单的来实现自动发邮件功能

    一、安装yagmail模块

    之前的文章中已经写明安装模块的方法有三种这里就不在进行阐述。如果需要请参考链接:https://www.cnblogs.com/beginner-boy/p/7247688.html

    二、使用yagmail发送邮件的简单步骤

    1、邮箱的配置:这里使用QQ邮箱进行说明

    首先登录QQ邮箱,然后找到设置>账户>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,开启POP3/SMTP服务,然后生成一个登录的授权码

    2、Python编写发送邮件的代码

      1、登录邮箱

      2、发送邮箱内容

    3、发邮件的简单示例

    1 import yagmail  #导入第三方模块
    2 user = '582238XXX@qq.com'  #邮箱的用户名
    3 password = '配置邮箱服务时获取的密码'  #邮箱的密码
    4 #登录邮箱
    5 login_mail = yagmail.SMTP(host='smtp.qq.com',user=user,password=password,smtp_ssl=True) #如果是QQ邮箱需要加入参数smtp_ssl=True,如果是其它邮箱则不用加
    6 #发送邮件内容
    7 login_mail.send(to='83648XXXX@qq.com',cc='11598XXXX@qq.com',subject='发邮件',contents='这是一个测试邮件信息!',attachments='发邮件.py')

    发邮件内容中的参数说明:

      to:目标人 ,如果想发送多个,那么直接写一个list列表即可实现
      cc:抄送人
      subject:主题
      contents:内容
      attachments:附件

    给多个用户发送邮件,则只需要在to参数后边加入一个list即可。如果是抄送多个人的时候也是添加一个list即可

    login_mail.send(to=['83648XXXX@qq.com',BB@.com,CC@.com],cc='11598XXXX@qq.com',subject='发邮件',contents='这是一个测试邮件信息!',attachments='发邮件.py')

    注意:使用Python源安装的yagmail文件,附件如果是中文的话则会显示乱码;可以使用如下链接的安装包即可解决该问题:https://pan.baidu.com/s/1bKHD2xNh-JZC3tOOVGipEQ 提取码:vr3a

    三、使用Python自带的smtplib模块 发送包含附件的邮件

    1、python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

    2、smtplib模块 发送邮件的步骤:

        1、创建一个SMTP对象

        2、连接SMTP服务器,端口一般是465

        3、登录自己的邮箱账号

        4、调用发送消息函数,参数:发件人、收件人、消息内容

        5、关闭连接

    3、实例

     1 import email.mime.multipart
     2 import email.mime.text
     3 import smtplib
     4 msg = email.mime.multipart.MIMEMultipart()  #创建消息对象
     5 msg['from'] = '5822XXXX@qq.com'  #指定发件人,即邮件头展示的内容
     6 msg['to'] =  '8364XXXXXX@qq.com'    #指定收件人,即邮件尾展示的内容
     7 msg['subject'] = '这是一个测试邮件!'  #写明邮件主题
     8 
     9 context = '''        
    10     <h1>老师好</h1>
    11     你好,
    12      这是一封自动发送的邮件。
    13       www.ustchacker.com hello
    14     '''          #定义邮件内容
    15 
    16 text = email.mime.text.MIMEText(_text=context, _subtype="html") #_text代表邮件内容,_subtype代表邮件内容的发送形式
    17 msg.attach(text)
    18 
    19 em = smtplib.SMTP_SSL()
    20 em.connect("smtp.qq.com", 465)
    21 em.login("5822XXXXX@qq.com", 'aabdlkdlddldld')
    22 em.sendmail(from_addr='5822XXXXX@qq.com', to_addrs='8364XXXXX@qq.com', msg=msg.as_string())
    23 em.quit()

    参考链接:

    https://blog.csdn.net/chinesepython/article/details/82465947

    https://blog.csdn.net/freesigefei/article/details/51313155?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

    https://www.cnblogs.com/fnng/p/7967213.html

  • 相关阅读:
    log4cxx在vs2013的静态编译
    windows下sqlite3静态库和动态库的编译
    iconv gbk字符转utf8字符
    wchar_t与char、wstring与string的相互转换
    获取当前时间并格式化
    快速获取文件大小
    cryptopp开源库的使用(二):base64加密
    cryptopp开源库的使用(零):windows下使用visual studio编译
    cryptopp开源库的使用(一):md5加密
    Docker 安装Oracle
  • 原文地址:https://www.cnblogs.com/beginner-boy/p/12566856.html
Copyright © 2011-2022 走看看