尝试向gmail python发送电子邮件时出错

时间:2018-02-15 11:41:11

标签: python email mime

大家好我是python的新手。我正在尝试将图像发送到我的Gmail帐户并获得以下错误,有人可以帮助我。 我搜索过并搜索过,找不到我尝试更换端口的答案。

我打开了谷歌不太安全的应用程序,不知道还能做什么。

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email import encoders
import os

gmail_user = "you@gmail.com"
gmail_pwd = "pass"

to = "you@gmail.com"
subject = "Report"
text = "Picture report"
attach = 'web.png'

msg = MIMEMultipart()

msg['From'] = gmail_user
msg['To'] = to
msg['Subject'] = subject

msg.attach(MIMEText(text))

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

mailServer = smtplib.SMTP("smtp.gmail.com", 465)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login(gmail_user, gmail_pwd)
mailServer.sendmail(gmail_user, to, msg.as_string())
# Should be mailServer.quit(), but that crashes...
mailServer.close()  

  Traceback (most recent call last):
  File "C:\Users\scott\Desktop\PYTHON NEW\newemail.py", line 31, in <module>
    mailServer = smtplib.SMTP("smtp.gmail.com", 465)
  File "C:\Users\scott\AppData\Local\Programs\Python\Python36-32\lib\smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "C:\Users\scott\AppData\Local\Programs\Python\Python36-32\lib\smtplib.py", line 337, in connect
    (code, msg) = self.getreply()
  File "C:\Users\scott\AppData\Local\Programs\Python\Python36-32\lib\smtplib.py", line 393, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed

我已将端口更改为587并出现了不同的错误

Traceback (most recent call last):
  File "C:\Users\scott\Desktop\PYTHON NEW\newemail.py", line 35, in <module>
    mailServer.login(gmail_user, gmail_pwd)
  File "C:\Users\scott\AppData\Local\Programs\Python\Python36-32\lib\smtplib.py", line 729, in login
    raise last_exception
  File "C:\Users\scott\AppData\Local\Programs\Python\Python36-32\lib\smtplib.py", line 720, in login
    initial_response_ok=initial_response_ok)
  File "C:\Users\scott\AppData\Local\Programs\Python\Python36-32\lib\smtplib.py", line 641, in auth
    raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (534, b'5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbt4\n5.7.14 ah5smKPNBMdR8EDhHji_lOLermVkofD0XZiYZtx04cUZGJIvjm6scA9FeCEhJhB--aeW58\n5.7.14 O3uS9IVuNfqKe4HYqXgdBMbvtMSOSSMM4oGYwlvDIoXpIK0IJYKSyAfvPyPcjiF8Q_Es4n\n5.7.14 33gUceqr9ZjlNI066kXt-uTq2V39X6YUS2-ixCCKfoozS9zoQ1KJuLSWU1IhB3gTsGtB9m\n5.7.14 N-AEdgucbByvuI7zr2KG-DZwlvrWw> Please log in via your web browser and\n5.7.14 then try again.\n5.7.14  Learn more at\n5.7.14  https://support.google.com/mail/answer/78754 b65sm27550600wrd.26 - gsmtp')

3 个答案:

答案 0 :(得分:1)

您的代码可以缩短为两行:

import smtplib
mailServer = smtplib.SMTP("smtp.gmail.com", 465)

如果你得到smtplib.SMTPServerDisconnected,这意味着你的问题与代码无关。有些东西阻止了你的网络连接到端口465。

答案 1 :(得分:0)

端口465上的SMTP服务器正在侦听加密的TLS连接。客户端不应该使用STARTTLS启动加密,因为TLS从一开始就处于活动状态。该SMTP命令用于端口587,SMTP服务器正在侦听明文连接。

答案 2 :(得分:-2)

你可以使用flask_mail库发送邮件。这里只是快速回顾.. “

from flask_mail import Mail, Message
app.config['SECRET_KEY'] = 'your secretkey'
app.config['MAIL_SERVER'] = 'smtp.gmail.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USERNAME'] = 'your gmail id'
app.config['MAIL_PASSWORD'] = 'and its password'
mail = Mail(app)
msg = Message(subject=subject, sender=(master().user(), 
app.config['MAIL_USERNAME']), recipients=[recipients])
msg.body = "%s %s" % (body, msg.sender)
if html is not None:
    msg.html = str(html)
mail.connect()
mail.send(msg)

***注意: - 不要忘记关闭两步验证,同时启用“登录时允许安全性较低的应用”。安全&gt;设备活动&amp;安全事件