【问题标题】:sending emails in python weird behaviour在 python 奇怪的行为中发送电子邮件
【发布时间】:2013-04-18 15:47:50
【问题描述】:

我正在编写一段代码,它定期从 4 个不同的帐户发送电子邮件,其中 2 个是 gmail 帐户,另外 2 个是 yahoo 帐户。当我开始编写代码时,我能够使用以下代码从两个 gmail 帐户发送所有电子邮件:

    def sendGmail(self, fromaddr, toaddr, username, password, 
        email_body, email_subject
    ):          
    # Build the email
    msg = MIMEText(email_body)
    msg['Subject'] = email_subject
    msg['From'] = fromaddr
    msg['To'] = toaddr

    try:
        # The actual mail send
        server = smtplib.SMTP('smtp.gmail.com:587')
        server.starttls()  
        server.login(username,password)  
        server.sendmail(fromaddr, toaddr, msg.as_string())  
        server.quit()
        print "email sent: %s" % fromaddr
    except Exception as e:
        print "Something went wrong when sending the email %s" % fromaddr
        print e

正如我所说,这段代码运行良好,现在我添加了 sendYahoomail(),这是一种不同的方法,我总是得到 (530, 'Access denied') 作为使用 sendGmail() 的异常。我很确定这与我的 Yahoo 方法无关,我可以使用 gmail 凭据从浏览器正确登录。

可能有什么问题,或者只是 Gmail 不希望我通过代码发送?

【问题讨论】:

    标签: python smtp gmail sendmail


    【解决方案1】:

    您可能会觉得这很有帮助:https://support.google.com/mail/answer/14257

    基本上,Google 检测到有人尝试从它认为不熟悉的服务器登录,并已将其阻止。上面的链接可让您尝试取消阻止它。

    有时它对我有用,有时对我有用。

    【讨论】:

      【解决方案2】:

      我用我的 Gmail 帐户(实际上它是一个 Google Apps 帐户,但应该是相同的)尝试了上面的代码,它对我来说很好用。我什至尝试了不正确的“发件人”标头,并且还在 SMTP 级别使用了不正确的源地址——Gmail 两次都允许我发送电子邮件,但似乎悄悄地修复了出口的标头。不过,您可能希望仔细检查您的发件人地址是否与您的用户名匹配。如果您目前只使用@之前的部分,也可以尝试使用完整的电子邮件地址作为用户名。

      我还尝试了不正确的密码并收到错误 535,这与您看到的不同。由于我启用了 2 因素身份验证,我还尝试了我的真实密码而不是特定于应用程序的密码,但仍然出现 535 错误(但显示“需要应用程序特定密码”的消息)。

      您的 ISP 是否设置了拦截与 Gmail 的 SMTP 连接的功能?似乎不太可能,尽管我的 ISP 曾经在端口 587 上阻止了对 Gmail 的访问,尽管端口 465 仍然有效。或许您可以尝试在端口 465 上使用 smtplib.SMTP_SSL 以防万一,看看是否能给您带来更多乐趣。

      您也可以尝试发送到不同提供商的地址,以防 Gmail 出于该原因拒绝发送(例如,如果其他提供商已被列入垃圾邮件黑名单)。此外,如果您的电子邮件可能看起来像垃圾邮件,请尝试使用接近真实电子邮件的邮件主题和正文进行编码,看看是否有帮助。

      【讨论】:

        猜你喜欢
        • 2013-08-19
        • 2019-02-19
        • 2017-07-08
        • 1970-01-01
        • 2017-04-09
        • 1970-01-01
        • 2023-01-19
        • 1970-01-01
        • 2022-10-13
        相关资源
        最近更新 更多