如何解决使用Python发送邮件-错误代码-SMTPDataError:451,b 4.3.0邮件服务器暂时拒绝了邮件
在不使用任何功能的情况下非常简单地实现相同代码时,我能够毫无问题地发送邮件。但是,当我尝试使用某个功能发送邮件时,由于发件人帐户已被禁用,并且阻止了我的邮件和帐户,因此我收到邮件。
必须实现在函数中满足某些过滤器之后发送邮件的代码,以便可以在需要时将其用于发送邮件。
我的代码段:
import smtplib
def setup_mail():
global smtpObj,sender,receivers,message
sender = 'sample@gmail.com'
receivers = ['sample1@gmail.com','sample2@gmail.com']
message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
Subject: 1 MIN candle 15 points alert
TIME: watch out next 2 minutes
"""
smtpObj = smtplib.SMTP_SSL('smtp.gmail.com',465)
smtpObj.login("sample@gmail.com","samplepassword")
setup_mail()
def sending_mails(smtpObj):
smtpObj.sendmail(sender,message)
for i in range(3):
sending_mails(smtpObj);
print("Successfully sent email")
我得到的错误,
跟踪(最近一次通话最近一次):文件“ C:/Users/Arun/PycharmProjects/Astro/venv/Scripts/ZERODHA_DEV/sendmail.py”,第22行,位于send_mails(smtpObj)中;在send_mails smtpObj.sendmail(发送方,接收方,消息)中的文件“ C:/Users/Arun/PycharmProjects/Astro/venv/Scripts/ZERODHA_DEV/sendmail.py”,第20行,文件“ C:\ Python \ lib \ smtplib。 py“,行888,在sendmail中引发SMTPDataError(code,resp)smtplib.SMTPDataError:(451,b'4.3.0邮件服务器暂时拒绝了邮件。s77sm14888153pfc.164-gsmtp')
但是它可以与简单的代码一起工作,
import smtplib
global smtpObj,message
sender = 'sample@gmail.com'
receivers = ['sample1@gmail.com','sample2@gmail.com']
message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
Subject: 1 MIN candle 15 points alert
TIME: watch out next 2 minutes
"""
smtpObj = smtplib.SMTP_SSL('smtp.gmail.com',465)
smtpObj.login("sample@gmail.com","samplepassword")
for i in range(3):
smtpObj.sendmail(sender,message)
print("Successfully sent email")
解决方法
直接的问题是您的邮件缩进了;有效的SMTP邮件包含两个相邻的文字换行符,以便从正文中区分标题。
虽然您可以从ASCII字符串中组合简单的电子邮件,但对于现实世界中的现代电子邮件来说,这是站不住脚的。您真的要使用email
库(或更高级别的第三方包装程序或替换程序)来处理电子邮件封装的所有特殊情况,尤其是 如果您自己不是电子邮件和MIME方面的专家。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。