SMTP发送邮件python

2018-03-17  本文已影响0人  朱允见

小序一下

上干货

import smtplib,sys,re
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart

def sendMs():
    smtpserver = 'smtp.163.com'
    username = 'xxxx' #用户名
    password = 'xxx' #密码  这里的密码不是163.com 的登录密码而是,在设置里的授权密码
    msgRoot = MIMEMultipart('related')

    subject = '这是邮件内容'
    msgRoot['Subject'] = subject

    sender = 'zyjian@163.com'  # 发件人
    #收件人,这里是用的 “,” 把多个接收邮箱拼接起来
    receiver = '2394142087@qq.com,719307805@qq.com' 
    receiver_list = receiver.split(',')
    msgRoot['From'] = sender  #之前没有写From和To,发送邮件出现554错误
    #注意:这里接收的是 多个收件人 字符串类型
    msgRoot['To'] = receiver

    # 添加附件就是加上一个MIMEBase,从本地读取一个图片:
    with open('./form.html', 'rb') as f:
        # 设置附件的MIME和文件名,这里是png类型:
        mime = MIMEBase('html', 'png', filename='test.html')
        # 加上必要的头信息:
        mime.add_header('Content-Disposition', 'attachment', filename='test.html')
        mime.add_header('Content-ID', '<0>')
        mime.add_header('X-Attachment-Id', '0')
        # 把附件的内容读进来:
        mime.set_payload(f.read())
        # 用Base64编码:
        encoders.encode_base64(mime)
        # 添加到MIMEMultipart:
        msgRoot.attach(mime)

    smtp = smtplib.SMTP()
    smtp.connect('smtp.163.com')
    smtp.login(username, password)
      
    #注意:这里接收的是 多个收件人 数组类型
    smtp.sendmail(sender, receiver_list, msgRoot.as_string())
    smtp.quit()
    print("发送完毕")

if __name__ == '__main__':
    sendMs()

  1. 代码中的密码,是授权密码,这里我列举的是163邮箱,获取授权密码的步骤


    image.png
  2. 此种方式,创建邮件对象,不会报状态 554:垃圾邮件错误
  3. 附件也可增加多个
  4. 注意
    4.1这里接收的是 多个收件人 字符串类型
    msgRoot['To'] = receiver
    4.2 这里接收的是 多个收件人 数组类型
    smtp.sendmail(sender, receiver_list, msgRoot.as_string())
上一篇 下一篇

猜你喜欢

热点阅读