python发送邮件超时: smtplib.SMTPDataError: (451, b‘Error: queue file write error‘)

使用 smtplib 发送包含大附件邮件的时候,会报错误

smtplib.SMTPDataError: (451, b'Error: queue file write error')

基本是两个问题:

1、发送超时

2、文件太大

 

 

针对问题1

设置超时时间  class smtplib.SMTP(host=''port=0local_hostname=None, [timeout, ]source_address=None)

而我用的是 smtplib.STMP_SSL 也是完全一样的

 

针对问题2

 

将文件压缩就行了,最好是 50M 以下。

最后有一个注意的,如果你是 .xlsx 文件,解压后打开是错误的

建议直接生成 .xls 文件后压缩。

或者 解压后,将 .xlsx 重命名为 .xls 

 

 

最后,成功发送!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误通常是因为你没有在发送邮件之前连接到邮件服务器。在使用 smtplib 发送邮件时,你需要先使用 `smtplib.SMTP()` 方法连接到邮件服务器,然后再使用 `login()` 方法进行登录,最后才能使用 `sendmail()` 方法发送邮件。 下面是一个简单的示例代码,你可以参考一下: ``` import smtplib from email.mime.text import MIMEText # 邮件服务器地址和端口号 mail_host = 'smtp.xxx.com' mail_port = 465 # 发件人邮箱地址和密码 mail_user = 'sender@example.com' mail_password = 'password' # 收件人邮箱地址 recipients = ['recipient@example.com'] # 邮件内容 message = MIMEText('这是一封测试邮件。') message['Subject'] = '测试邮件' message['From'] = mail_user message['To'] = ','.join(recipients) # 连接邮件服务器并登录 smtp_obj = smtplib.SMTP_SSL(mail_host, mail_port) smtp_obj.login(mail_user, mail_password) # 发送邮件 smtp_obj.sendmail(mail_user, recipients, message.as_string()) # 断开连接 smtp_obj.quit() ``` 在上面的代码中,我们首先定义了邮件服务器的地址、端口、发件人邮箱地址和密码,以及收件人邮箱地址。然后创建了一封包含邮件内容的 MIMEText 对象,并设置了邮件的主题、发件人和收件人。接着使用 `smtplib.SMTP_SSL()` 方法连接到邮件服务器,并使用 `login()` 方法登录。最后使用 `sendmail()` 方法发送邮件,并使用 `quit()` 方法断开连接。 如果你仍然遇到 `smtplib.SMTPServerDisconnected: please run connect() first` 错误,可能是由于连接超时或网络问题造成的。你可以尝试增加连接超时时间或检查网络连接是否正常。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值