zoukankan      html  css  js  c++  java
  • 自动化发送邮件之SMTP

    一、思路

      1、若是QQ邮箱需要在设置-账户里面开启服务
      2、在python中smtplib库是专门用来处理邮件
      3、自动化邮件发送实操
        a、要处理的邮件主题,寄件人,收件人,邮件正文,附件,
        b、邮件正文,:文本信息,HTML信息,图片内容
        c、附件内容格式:txt,jpg,pdf,excel,doc
      4、发送邮件附件流程
        a、读取附件
        b、添加附件
         c、与内容一起发送
    二、代码实现
     1 import smtplib
     2 from email import encoders
     3 from email.mime.text import MIMEText  # 处理邮件内容的库 email.mime
     4 
     5 # 处理邮件附件 MIMEMUltipart,Header,MIMEBase
     6 from email.mime.multipart import MIMEMultipart
     7 from email.header import Header
     8 from email.mime.base import MIMEBase
     9 
    10 # 邮箱属性配置
    11 mailserver = 'smtp.qq.com'    # 邮箱服务端url,163邮箱就写smtp.163.com,非QQ邮箱一般使用SMTP,不需要有SSL
    12 userName_SendMail = '45614456@qq.com'   # 发件人
    13 userName_AuthCode = 'tnppuxjie'    # 邮箱发件授权码,qq邮箱需要授权码
    14 received_mail = ['468465456@qq.com', '4546546546@qq.com']   # 定义邮件的接收者,可以定义多个
    15 
    16 # 发送一封简单的邮件
    17 content = '这是一个文本信息内容'  # 定义发送内容
    18 email = MIMEText(content, 'plain', 'utf-8')    # 纯文本形式的邮件内容定义,通过MIMEText进行操作
    19 email['Subject'] = '这里写邮件主题'    # 定义邮件主题
    20 email['From'] = userName_SendMail    # 定义邮件发件人
    21 email['To'] = ','.join(received_mail)    # 定义接收人,接收人为多个用,分割
    22 
    23 
    24 # 发送一封HTML邮件
    25 content = '''
    26 <p>这是一封HTML文本的邮件</p>
    27 <p><a href='http://www.baidu.com'>点我啊</a></p>
    28 '''
    29 email = MIMEText(content, 'html', 'utf-8')
    30 email['Subject'] = '这里写邮件主题'  # 定义邮件主题
    31 email['From'] = userName_SendMail  # 定义邮件发件人
    32 email['To'] = ','.join(received_mail)  # 定义接收人,接收人为多个用,分割
    33 
    34 
    35 # 发送带有附件的邮件
    36 #附件配置邮箱
    37 
    38 email = MIMEMultipart()  # 只更换这项就OK
    39 email['Subject'] = '这里写邮件主题'    # 定义邮件主题
    40 email['From'] = userName_SendMail    # 定义邮件发件人
    41 email['To'] = ','.join(received_mail)    # 定义接收人,接收人为多个用,分割
    42 
    43 # 非图片附件
    44 att = MIMEBase('application','octet-stream')
    45 att.set_payload(open('文件名','rb').read())
    46 att.add_header('Contenet-Disposition','attachment',filename=Header('文件名.txt','gbk').encode())
    47 encoders.encode_base64(att)
    48 email.attach(att)
    49 
    50 
    51 # 图片附件
    52 att1 = MIMEBase('application','octet-stream')
    53 att1.set_payload(open('图片名.jpg','rb').read())
    54 att1.add_header('Contenet-Disposition','attachment',filename=Header('图片名.jpg','gbk').encode())
    55 encoders.encode_base64(att1)
    56 email.attach(att1)
    57 
    58 
    59 # 发送邮件
    60 smtp = smtplib.SMTP_SSL(mailserver, port=465)   # 连接服务
    61 smtp.login(userName_SendMail, userName_AuthCode)   # 登录,需要传入用户名和授权码
    62 smtp.sendmail(userName_SendMail, ','.join(received_mail), email.as_string())   # 转换成str类型
    63 
    64 
    65 # 关闭邮件
    66 smtp.quit()
     
  • 相关阅读:
    柔性数组
    2015阿里秋招当中一个算法题(经典)
    LAMP环境搭建
    JS和JQuery中的事件托付 学习笔记
    #17 Letter Combinations of a Phone Number
    码农生涯杂记_5
    【C++ Primer每日刷】之三 标准库 string 类型
    扎根本地连接未来 千米网的电商“红海”生存术
    poj 3356
    经验之谈—OAuth授权流程图
  • 原文地址:https://www.cnblogs.com/puti306/p/11831048.html
Copyright © 2011-2022 走看看