繁体   English   中英

无法从 Ubuntu 上的 Gmail 通过 Python 发送电子邮件

[英]Unable to send email through Python from Gmail on Ubuntu

我在 Ubuntu 20 上运行 DigitalOcean 服务器并尝试发送通知电子邮件。 该代码在我通过浏览器手动登录到 gmail 帐户的 Windows 上运行良好。 但是在 Ubuntu 上,我收到 534 身份验证错误。 问题是 Google 不支持非 JavaScript 浏览器,因此我无法通过任何命令行登录,例如 Lynx 或 Links/Links2。

Traceback (most recent call last):
  File "test_mail.py", line 35, in <module>
    server.login(sender_email,password)
  File "/usr/lib/python3.8/smtplib.py", line 743, in login
    raise last_exception
  File "/usr/lib/python3.8/smtplib.py", line 732, in login
    (code, resp) = self.auth(
  File "/usr/lib/python3.8/smtplib.py", line 655, in auth
    raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (534, b'5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbu\n5.7.14 aRDSZeqgJKpUYAv2MTRm76Oo727636gw5NP42UvNlPQh0VEh8P07whxbnBOiG2MTq7HZ3\n5.7.14 dBDFINUjU1AZM8pqPiwKjer9l9JNmPdYv0DPu_aJAV3pwbKiI7rCBX1ouOqKJzlJ>\n5.7.14 Please log in via your web browser and then try again.\n5.7.14  Learn more at\n5.7.14  https://support.google.com/mail/answer/78754 h22sm1030609wmq.14 - gsmtp')
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
import os.path

sender_email = "myemail@gmail.com"
receiver_email = "targetmail@outlook.com"
password = "mypassword"
SUBJECT = 'test email'

msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = receiver_email
msg['Subject'] = SUBJECT
TEXT = 'This is my message'
msg.attach(MIMEText(TEXT, 'plain'))

file_location = 'test.xlsx'
filename = 'test.xlsx'

attachment = open(file_location, "rb")
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
msg.attach(part)

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(sender_email,password)
text = msg.as_string()
server.sendmail(sender_email, receiver_email, text)
server.quit()

您应该启用“不太安全的应用程序”访问(找不到文档链接,谷歌计划最终关闭此功能AFAIR)或使用“应用程序特定密码”( https://support.google.com/accounts/answer /185833 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM