#! /usr/local/bin/python3
# -*- coding: utf-8 -*-
import time
import smtplib
from email.mime.text import MIMEText # 基本邮件模块
from email.header import Header # 带html内容模块
from email.mime.multipart import MIMEMultipart # 带附件模块
# 第三方 SMTP 服务
mail_host = "smtp.126.com" # SMTP服务器
mail_user = "ja***" # 用户名
mail_pass = "YHD**********AHJ" # 密码(这里的密码不是登录邮箱密码,而是授权码)
sender = 'ja***@126.com' # 发件人邮箱
receivers = ['1230*****@qq.com'] # 接收人邮箱,这里是数组,可以发送给多个邮箱
# ========== 以下是带附件邮件 ==========
mail_msg = '''
<p>Python 邮件发送测试...</p>
<p><a href="http://www.runoob.com">这是一个链接</a></p>
'''
message = MIMEMultipart()
message['From'] = "{0}".format(sender)
message['To'] = ",".join(receivers)
title = '发送时间为:{0}'.format(time_now) # 邮件主题
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')
#邮件正文内容
message.attach(MIMEText('这是菜鸟教程Python 邮件发送测试……', 'plain', 'utf-8'))
# 构造附件1,传送当前目录下的 1.txt 文件
att1 = MIMEText(open('1.txt', 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字
att1["Content-Disposition"] = 'attachment; filename="1_2.txt"'
message.attach(att1)
# ========== 以下是HTML邮件 ==========
# mail_msg = '''
# <p>Python 邮件发送测试...</p>
# <p><a href="http://www.runoob.com">这是一个链接</a></p>
# '''
# message = MIMEText(mail_msg, 'html', 'utf-8')
# message['From'] = "{0}".format(sender)
# message['To'] = ",".join(receivers)
# title = '发送时间为:{0}'.format(time_now) # 邮件主题
# message['Subject'] = title
# ========== 以下是纯文本邮件 ==========
# content = '这里是邮件正文,Hello World!\n第一封群发邮件哦\n'
# message = MIMEText(content, 'plain', 'utf-8') # 内容, 格式, 编码
# message['From'] = "{0}".format(sender)
# message['To'] = ",".join(receivers)
# title = '6-10发送时间为:{0}'.format(time_now) # 邮件主题
# message['Subject'] = title
# ========== 发送邮件部分 ==========
# try:
# smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启用SSL发信, 端口一般是465
# # smtpObj = smtplib.SMTP(mail_host, 25) # 非加密接口, 端口一般是25
# smtpObj.login(mail_user, mail_pass) # 登录验证
# smtpObj.sendmail(sender, receivers, message.as_string()) # 发送
# print("邮件发送成功")
# except smtplib.SMTPException as e:
# print(e)
3.7.4下测试通过
这里有4个组成部分,附件部分、html部分、标准邮件部分三选一,如果都开,就是后赋值的生效。
最后发送邮件部分是必须开的,否则发不出去:)
发送邮件用了两个接口一个是25,一个是465,可以按照喜好选用。