zoukankan      html  css  js  c++  java
  • python实现自动发邮件

      Python有两个内置库:smtplib和email,可以实现邮件功能,无需下载,直接import导入。

    • smtplib库负责发送邮件
    • Email库负责构造邮件格式和内容

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

    实验代码

     1 #Part 1:导入相关的库和方法
     2 #导入两个内置库
     3 import smtplib
     4 import email
     5 #负责构造文本
     6 from email.mime.text import MIMEText
     7 #负责构造图片
     8 from email.mime.image import MIMEImage
     9 #负责将多个对象集合起来
    10 from email.mime.multipart import MIMEMultipart
    11 from email.header import Header
    12 
    13 #Part 2:设置邮箱域名,发件人邮箱,邮箱授权码,收件人邮箱
    14 #SMTP服务器,这里使用163邮箱
    15 mail_host="smtp.163.com"
    16 #发件人邮箱
    17 mail_sender="**********@163.com"
    18 #邮箱授权码。各种邮箱的授权码皆可自行获得
    19 mail_license="********"
    20 mail_receivers=["**********@gmail.com"]
    21 
    22 #Part 3:构建MIMEMultipart对象代表邮件本身,可以往里面添加文本、图片、附件等
    23 mm=MIMEMultipart('related')
    24 
    25 #Part 4:设置邮件头部内容
    26 #邮件主题
    27 subject_content="python邮件测试"
    28 #设置发送者,严格遵守格式
    29 mm["From"]="sender_name<********@163.com>"
    30 #设置接收者,严格遵守格式
    31 mm["To"]="receiver_name<*********@gmail.com>"
    32 #设置邮件主题
    33 mm["Subject"]=Header(subject_content,'utf-8')
    34 
    35 #Part 5:添加正文文本
    36 # 邮件正文内容
    37 body_content = "你好,这是一个测试邮件!"
    38 # 构造文本,参数1:正文内容,参数2:文本格式,参数3:编码方式
    39 message_text = MIMEText(body_content,"plain","utf-8")
    40 # 向MIMEMultipart对象中添加文本对象
    41 mm.attach(message_text)
    42 
    43 #Part 6:添加图片
    44 # 二进制读取图片
    45 image_data = open('a.jpg','rb')
    46 # 设置读取获取的二进制数据
    47 message_image = MIMEImage(image_data.read())
    48 # 关闭刚才打开的文件
    49 image_data.close()
    50 # 添加图片文件到邮件信息当中去
    51 mm.attach(message_image)
    52 
    53 #Part 7:添加附件
    54 # 构造附件
    55 atta = MIMEText(open('sample.xlsx', 'rb').read(), 'base64', 'utf-8')
    56 # 设置附件信息
    57 atta["Content-Disposition"] = 'attachment; filename="sample.xlsx"'
    58 # 添加附件到邮件信息当中去
    59 mm.attach(atta)
    60 
    61 #Part 8:发送邮件
    62 # 创建SMTP对象
    63 stp = smtplib.SMTP()
    64 # 设置发件人邮箱的域名和端口,端口地址为25
    65 stp.connect(mail_host, 25)
    66 # set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息
    67 stp.set_debuglevel(1)
    68 # 登录邮箱,传递参数1:邮箱地址,参数2:邮箱授权码
    69 stp.login(mail_sender,mail_license)
    70 # 发送邮件,传递参数1:发件人邮箱地址,参数2:收件人邮箱地址,参数3:把邮件内容格式改为str
    71 stp.sendmail(mail_sender, mail_receivers, mm.as_string())
    72 print("邮件发送成功")
    73 # 关闭SMTP对象
    74 stp.quit()

    遇到的问题:

    smtp出现(500, b'Error: bad syntax')

    解决办法:

    https://blog.csdn.net/weixin_38428827/article/details/104223207

    运行成功:

    When you return with glory, you will be bathed in the golden rain.
  • 相关阅读:
    Mr. Frog’s Game(模拟连连看)
    Comparison of Android versions(strcmp的应用)
    Android热门网络框架Volley详解
    Android中你应该知道的设计模式
    从高德 SDK 学习 Android 动态加载资源
    Android中多线程下载列表的封装实现(含进度反馈)
    判断App是否在后台运行
    信息安全领域有哪些非常棒的资源?
    Android应用发布后的统计——百度移动统计的应用
    面试时,问哪些问题能试出一个Android应用开发者真正的水平?
  • 原文地址:https://www.cnblogs.com/DrunkYouth/p/14081155.html
Copyright © 2011-2022 走看看