• python 发送邮件


    今天接触下python邮件发送
    中间遇到几个坑
    自己的实验文件名称不能是 email 否则就会报错文件冲突


    QQ 发送普通邮件


    import smtplib
    from email.mime.text import MIMEText
    from email.utils import formataddr

    my_sender = 'xxxxxxxx@qq.com' # 发件人邮箱账号
    my_pass = 'xxxxxxxxxxxxxxxx' # 发件人邮箱密码
    my_user = 'xxxxxxx@qq.com' # 收件人邮箱账号,我这边发送给自己


    def mail():
    ret = True
    try:
    msg = MIMEText('两相忘,自惆怅, 悲欢泪,心渐碎, 恨离愁,几杯浊酒泪直流', 'plain', 'utf-8') # 邮件内容
    msg['From'] = formataddr(["FromRunoob", my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
    msg['To'] = formataddr(["FK", my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
    msg['Subject'] = "送你一首诗" # 邮件的主题,也可以说是标题

    server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是25
    server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
    server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
    server.quit() # 关闭连接
    except Exception: # 如果 try 中的语句没有执行,则会执行下面的 ret=False
    ret = False
    return ret


    ret = mail()
    if ret:
    print("邮件发送成功")
    else:
    print("邮件发送失败")




    Python 简单发送邮件 / 发送带各种附件邮件

    写个自动发送邮件的python脚本。

    用脚本发送邮件思路是:登陆邮箱-->写邮件-->发送邮件

    发送邮箱设置:

    得开通自己邮箱的 SMTP 功能,具体可百度。

    以163网易邮箱为例: 设置 -->  POP3/SMTP/IMAP  -->  设置POP3/SMTP/IMAP 勾选保存

    一、发送简单邮件:

    用STMP库

    1.  
      import smtplib
    2.  
      #发送字符串的邮件
    3.  
      from email.mime.text import MIMEText
    4.  
      #处理多种形态的邮件主体我们需要 MIMEMultipart 类
    5.  
      from email.mime.multipart import MIMEMultipart
    6.  
      #处理图片需要 MIMEImage 类
    7.  
      from email.mime.image import MIMEImage
    8.  
       
    9.  
      #设置服务器所需信息
    10.  
      fromaddr = '137xxx@163.com'#邮件发送方邮箱地址
    11.  
      password = 'zzz'#密码(部分邮箱为授权码)
    12.  
      toaddrs = ['137xxx@163.com', '137xxxxx@qq.com']#邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
    13.  
       
    14.  
       
    15.  
      #设置email信息
    16.  
      #---------------------------发送字符串的邮件-----------------------------
    17.  
      #邮件内容设置
    18.  
      message = MIMEText('hello,ziqiiii','plain','utf-8')
    19.  
      #邮件主题
    20.  
      message['Subject'] = 'ziqiiii test email'
    21.  
      #发送方信息
    22.  
      message['From'] = sender
    23.  
      #接受方信息
    24.  
      message['To'] = receivers[0]
    25.  
      #---------------------------------------------------------------------
    26.  
       
    27.  
       
    28.  
      #登录并发送邮件
    29.  
      try:
    30.  
      server = smtplib.SMTP('smtp.163.com')#163邮箱服务器地址,端口默认为25
    31.  
      server.login(fromaddr,password)
    32.  
      server.sendmail(fromaddr, toaddrs, message.as_string())
    33.  
      print('success')
    34.  
      server.quit()
    35.  
       
    36.  
      except smtplib.SMTPException as e:
    37.  
      print('error',e) #打印错误

    二、发送各种带附件的邮件

    使用MIMEMultipart来标示这个邮件是多个部分组成的,然后attach各个部分。如果是附件,则add_header加入附件的声明。

    MIME有很多种类型,这个略麻烦,如果附件是图片格式,我要用MIMEImage,如果是音频,要用MIMEAudio,如果是word、excel,我都不知道该用哪种MIME类型了,得上google去查。

    最懒的方法就是,不管什么类型的附件,都用MIMEApplication,MIMEApplication默认子类型是application/octet-stream。

    1. import smtplib
      from email.mime.text import MIMEText
      from email.mime.image import MIMEImage
      from email.mime.multipart import MIMEMultipart
      from email.mime.application import MIMEApplication

      if __name__ == '__main__':
      fromaddr = 'xxxxxxxxxxx@qq.com'
      password = 'xxxxxxxx'
      # toaddrs = ['xxxxxxxxxx@qq.com', '137xxxx@qq.com']
      toaddrs = ['xxxxxxxxx7@qq.com']

      content = 'hello, this is email content.'
      textApart = MIMEText(content)
      图片
      imageFile = '1.png'
      imageApart = MIMEImage(open(imageFile, 'rb').read(), imageFile.split('.')[-1])
      imageApart.add_header('Content-Disposition', 'attachment', filename=imageFile)
      普通文件 txt、html、、、、
      pdfFile = 'D:\HTMLReport.html'
      pdfApart = MIMEApplication(open(pdfFile, 'rb').read())
      pdfApart.add_header('Content-Disposition', 'attachment', filename=pdfFile)
      zip文件
      zipFile = '算法设计与分析基础第3版PDF.zip'
      zipApart = MIMEApplication(open(zipFile, 'rb').read())
      zipApart.add_header('Content-Disposition', 'attachment', filename=zipFile)

      m = MIMEMultipart()
      m.attach(textApart)
      图片
      m.attach(imageApart)
      普通文件
      m.attach(pdfApart)
      zip文件
      m.attach(zipApart)
      m['Subject'] = 'title'

      try:
      server = smtplib.SMTP_SSL("smtp.qq.com", 465)
      server.login(fromaddr, password)
      server.sendmail(fromaddr, toaddrs, m.as_string())
      print('success')
      server.quit()
      except smtplib.SMTPException as e:
      print('error:', e) # 打印错误

  • 相关阅读:
    流程控制语句
    lminus
    TCL create list from file
    DFT 问答 III
    DFT 问答 II
    DFT 问答 I
    猜字符小游戏
    用户模式构造
    基元线程同步构造
    七大原则,24种设计模式
  • 原文地址:https://www.cnblogs.com/wutaotaosin/p/10433650.html
Copyright © 2020-2023  润新知