Python 发送带有文件的QQ邮箱邮件

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值