import os import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.header import Header msg_from = 'xxxxx@qq.com' # 发送方邮箱地址。 password = 'xxxxx' # 发送方QQ邮箱授权码,不是QQ邮箱密码。 msg_to = 'xxxxx@qq.com' # 收件人邮箱地址。 subject = "接口测试报告" # 主题。 content = "附件为接口测试报告,注意查收" # 邮件正文内容。 msg = MIMEText(content, 'plain', 'utf-8') msg = MIMEMultipart() subject = Header('附件为接口测试报告,注意查收', 'utf-8').encode() msg['Subject'] = subject msg['From'] = msg_from msg['To'] = msg_to # 测试报告文件夹中最新的报告 path="F:/python_job/pythonProject2/reports/" # 获取文件夹中所有的文件(名),以列表形式返货 lists=os.listdir(path) # 按照key的关键字进行生序排列,lambda入参x作为lists列表的元素,获取文件最后的修改日期, # 最后对lists以文件时间从小到大排序 lists.sort(key=lambda x:os.path.getmtime((path+"\\"+x))) # 获取最新文件的绝对路径,列表中最后一个值,文件夹+文件名 file_new = os.path.join(path, lists[-1]) print(file_new) # 添加文件附件 file1 = MIMEText(open(file_new, 'rb').read(), 'base64', 'utf-8') file1["Content-Disposition"] = 'attachment; filename="testxxxx.html"' msg.attach(file1) try: client = smtplib.SMTP_SSL('smtp.qq.com', smtplib.SMTP_SSL_PORT) print("连接到邮件服务器成功") client.login(msg_from, password) print("登录成功") client.sendmail(msg_from, msg_to, msg.as_string()) print("发送成功") except smtplib.SMTPException as e: print("发送邮件异常") finally: client.quit()
二、配置qq邮箱SMTP服务器
要使用Python发送邮件,首先需要配置qq邮箱SMTP服务器。具体步骤如下:
1. 登录qq邮箱,进入“设置”页面。
2. 选择“账户”选项卡,找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”。
3. 在“SMTP”栏目中,找到“开启SMTP服务”,并开启该功能。
4. 根据提示设置SMTP服务器地址和端口号。
SMTP服务器地址:smtp.qq.com
SMTP服务器端口号:465(SSL加密)或587(TLS加密)
5. 设置发送方邮箱地址和密码,如果您还没有设置过授权码,则需要先设置授权码。授权码可以在qq邮箱的“安全中心”中进行设置。
三、Python实现发送邮件的步骤
1. 导入smtplib模块
在Python中,我们可以使用smtplib模块来实现发送邮件的功能。要使用smtplib模块,需要先导入该模块。
import smtplib
2. 创建SMTP对象
在连接SMTP服务器之前,我们需要先创建SMTP对象。创建SMTP对象的方法如下:
smtpObj = smtplib.SMTP_SSL('smtp.qq.com', 465)
其中,第一个参数是SMTP服务器地址,第二个参数是SMTP服务器端口号。如果您使用的是TLS加密,则应该使用smtplib.SMTP()方法。
3. 登录SMTP服务器
在创建SMTP对象之后,我们需要先登录SMTP服务器。登录SMTP服务器需要提供发送方邮箱地址和密码。登录SMTP服务器的方法如下:
smtpObj.login('sender@qq.com', 'password')
其中,第一个参数是发送方邮箱地址,第二个参数是发送方邮箱密码或授权码。
4. 发送邮件
在登录SMTP服务器之后,我们就可以开始发送邮件了。发送邮件需要提供收件人邮箱地址、邮件主题和邮件正文。发送邮件的方法如下:
mail_content = '这是一封Python发送的邮件。'
message = MIMEText(mail_content, 'plain', 'utf-8')
message['Subject'] = 'Python邮件测试'
message['From'] = 'sender@qq.com'
message['To'] = 'recipient@qq.com'
smtpObj.sendmail('sender@qq.com', 'recipient@qq.com', message.as_string())
其中,第一个参数是发送方邮箱地址,第二个参数是收件人邮箱地址,第三个参数是邮件内容。
5. 关闭SMTP连接
在发送完邮件之后,我们需要关闭SMTP连接。关闭SMTP连接的方法如下:
smtpObj.quit()
四、完整代码示例
下面是一个完整的Python发送邮件的代码示例:
import smtplib
from email.mime.text import MIMEText
# SMTP服务器地址和端口号
smtp_server = 'smtp.qq.com'
smtp_port = 465
# 发送方邮箱地址和密码
sender_email = 'sender@qq.com'
sender_password = 'password'
# 收件人邮箱地址
recipient_email = 'recipient@qq.com'
# 邮件主题和正文
mail_subject = 'Python邮件测试'
mail_content = '这是一封Python发送的邮件。'
# 创建SMTP对象
smtpObj = smtplib.SMTP_SSL(smtp_server, smtp_port)
# 登录SMTP服务器
smtpObj.login(sender_email, sender_password)
# 发送邮件
message = MIMEText(mail_content, 'plain', 'utf-8')
message['Subject'] = mail_subject
message['From'] = sender_email
message['To'] = recipient_email
smtpObj.sendmail(sender_email, recipient_email, message.as_string())
# 关闭SMTP连接
smtpObj.quit()