Python 3.x 用Python发送邮件-错误代码-SMTPDataError:451,b 4.3.0邮件服务器暂时拒绝了邮件

Python 3.x 用Python发送邮件-错误代码-SMTPDataError:451,b 4.3.0邮件服务器暂时拒绝了邮件,python-3.x,email,gmail,Python 3.x,Email,Gmail,当我不使用任何函数而非常简单地实现相同的代码时,我能够发送没有问题的邮件。但当我尝试使用某个功能发送邮件时,我收到的邮件是因为我的发件人帐户被禁用,并且它阻止了我的邮件和帐户 在函数中满足某些筛选器后,必须实现用于发送邮件的代码,以便可以在需要时使用该代码发送邮件 我的代码片段: import smtplib def setup_mail(): global smtpObj,sender,receivers,message sender = 'sample@gmail.com'

当我不使用任何函数而非常简单地实现相同的代码时,我能够发送没有问题的邮件。但当我尝试使用某个功能发送邮件时,我收到的邮件是因为我的发件人帐户被禁用,并且它阻止了我的邮件和帐户

在函数中满足某些筛选器后,必须实现用于发送邮件的代码,以便可以在需要时使用该代码发送邮件

我的代码片段:

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, receivers, message)
for i in range(3):
    sending_mails(smtpObj);
print("Successfully sent email")
导入smtplib
def setup_mail():
全局smtpObj、发送方、接收方、消息
发送者sample@gmail.com'
接收者=['sample1@gmail.com','sample2@gmail.com']
message=“”发件人:发件人
致:致人
主题:1分钟烛光15分警戒
时间:注意接下来的2分钟
"""
smtpObj=smtplib.SMTP_SSL('SMTP.gmail.com',465)
smtpObj.login(“sample@gmail.com“,“样本密码”)
设置邮件()
def发送邮件(smtpObj):
smtpObj.sendmail(发送者、接收者、消息)
对于范围(3)中的i:
发送电子邮件(smtpObj);
打印(“成功发送电子邮件”)
我犯的错误

回溯(最近一次调用):文件“C:/Users/Arun/PycharmProjects/Astro/venv/Scripts/ZERODHA_DEV/sendmail.py”,第22行,在发送邮件(smtpObj)中;文件“C:/Users/Arun/PycharmProjects/Astro/venv/Scripts/ZERODHA_DEV/sendmail.py”,第20行,发送邮件smtpObj.sendmail(发送者、接收者、消息)文件“C:\Python\lib\smtplib.py”,第888行,发送邮件引发SMTPDataError(代码,resp)smtplib.SMTPDataError:(451,b'4.3.0邮件服务器临时拒绝邮件。s77sm14888153pfc.164-gsmtp'))

但是它使用的是一个简单的代码

import smtplib

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")
for i in range(3):
   smtpObj.sendmail(sender, receivers, message)
   print("Successfully sent email")
导入smtplib
全局smtpObj、发送方、接收方、消息
发送者sample@gmail.com'
接收者=['sample1@gmail.com','sample2@gmail.com']
message=“”发件人:发件人
致:致人
主题:1分钟烛光15分警戒
时间:注意接下来的2分钟
"""
smtpObj=smtplib.SMTP_SSL('SMTP.gmail.com',465)
smtpObj.login(“sample@gmail.com“,“样本密码”)
对于范围(3)中的i:
smtpObj.sendmail(发送者、接收者、消息)
打印(“成功发送电子邮件”)

直接的问题是您的邮件缩进;有效的SMTP邮件包含两个相邻的文字换行符,用于将邮件头与正文分隔开来


虽然您可以从ASCII字符串组合简单的电子邮件消息,但这对于现实世界的现代电子邮件消息是不成立的。您确实希望使用
电子邮件
库(或更高级别的第三方包装器或替代品)来处理电子邮件消息封装的所有极端情况,特别是如果您不是电子邮件和MIME方面的专家。

下面是我得到的错误,回溯(最近的一次呼叫):文件“C:/Users/Arun/PycharmProjects/Astro/venv/Scripts/ZERODHA_DEV/sendmail.py”,在发送邮件(smtpObj)中第22行;文件“C:/Users/Arun/PycharmProjects/Astro/venv/Scripts/ZERODHA_DEV/sendmail.py”,在发送邮件smtpObj.sendmail(发送者、接收者、消息)文件“C:\Python\lib\smtplib.py”中第20行“,第888行,在sendmail raise SMTPDataError(代码,resp)smtplib.SMTPDataError:(451,b'4.3.0邮件服务器暂时拒绝邮件。s77sm14888153pfc.164-gsmtp')中,我没有提到,我已经在Gmail设置和位置中启用了第三方和验证码的访问权限。你确定你不仅仅达到了发送限制吗?您的问题在其他方面没有多大意义,SMTP服务器如何知道您正在使用函数是,未达到发送限制。当我运行这个程序时,它会在发送一次邮件后禁用我的帐户。因此,当它尝试第二次发送时会被阻止。我发现一个stackoverflow页面也面临同样的问题,但也没有人提出解决方案,奇怪的是,这种限制来自免费服务。如果你想要更专业的东西,你通常需要付费;请参考标签中我最近的一些回答,以了解具体示例。