【问题标题】:How to send mail in Python [duplicate]如何在 Python 中发送邮件 [重复]
【发布时间】:2020-01-08 09:47:49
【问题描述】:

我们编写了一个小 Python 程序,我们想在其中向我们的邮件地址发送邮件。我们有一些代码,但是当它即将完成时它会停止并打印错误消息。确切地说,它停在server.sendmail。当我们打印 config.EMAIL_ADDRESS 和 config.PASSWORD 时,我们会收到正确的凭据,所以这不是问题(配置是我们存储凭据的位置)。

我们在 ubuntu 服务器上使用 python3。

import config
import smtplib

def send_mail(subject, msg):
    try:
        server = smtplib.SMTP('smtp.gmail.com:587')
        server.ehlo()
        server.starttls()
        print (f'EMAIL = {config.EMAIL_ADDRESS} & PASSWORD = {config.PASSWORD}')
        server.login(config.EMAIL_ADDRESS, config.PASSWORD)
        message = 'Subject: {}\n\n{}'.format(subject, msg)
        server.sendmail(config.EMAIL_ADDRESS, config.EMAIL_ADDRESS, message)
        server.quit()
        print ("Successfully sent email")
    except SMTPException:
        print ("Error: unable to send email")

subject = "ALERT!!!"
msg = "LPN SENDER IKKE DATA!!! GØR NOGET VED DET!!!"

send_mail(subject, msg)

我们已经打开了 25 和 587 端口,这应该不是问题。我们不知道还能做什么。也许这里有人可以帮助我们。我们还需要建立安全连接。这安全吗?如果没有,我们可以做些什么来确保我们的邮件传输安全?

更新

错误代码

  File "Alarm.py", line 21, in send_mail
    server.sendmail(config.EMAIL_ADDRESS, config.EMAIL_ADDRESS, message)
  File "/usr/lib/python3.6/smtplib.py", line 855, in sendmail
    msg = _fix_eols(msg).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\xd8' in position 46: ordinal not in range(128)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "Alarm.py", line 48, in <module>
    send_mail(subject, msg)
  File "Alarm.py", line 25, in send_mail
    except SMTPException:
NameError: name 'SMTPException' is not defined

【问题讨论】:

  • 哦,我自己在使用 gmail 和 python 时遇到了问题!让我找到最终起作用的代码。
  • 谢谢!那太棒了!
  • 删除 try...except 或重新引发异常,以便您(以及我们,如果您在问题中发布完整的错误堆栈)了解 究竟是什么失败.
  • 过去我不得不打开“不太安全的应用程序访问”,但那是 ssl。 support.google.com/accounts/answer/6010255?hl=en
  • 根据错误消息并计算字符数,消息中的第 46 个字符是 Ø。也许这可以帮助:stackoverflow.com/questions/8329741

标签: python smtp


【解决方案1】:

上次我使用 Python 发送电子邮件时,问题是我没有为 gmail 帐户启用“不太安全的应用程序”。这不是未启用此功能导致的典型错误,但也许您仍然可以通过启用它来解决它。你可以在这里做:

https://www.google.com/settings/security/lesssecureapps

还应注意,如果有一段时间没有使用此设置,Google 会再次自动禁用此设置。

【讨论】:

  • 发现错误。错误是字母“Ø”。将文本翻译成英文,现在可以使用了!
猜你喜欢
  • 2016-08-12
  • 1970-01-01
  • 2012-12-31
  • 2014-07-16
  • 2012-04-17
  • 1970-01-01
  • 2013-05-26
  • 2012-05-22
  • 2017-12-08
相关资源
最近更新 更多