使用python我想从我的应用程序发送电子邮件,但它显示错误
SMTP AUTH extension not supported by server
该计划的代码,
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
fromaddr = "test1@example.com"
toaddr = "test2@example.com"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "Test Mail"
body = "Test mail from python"
msg.attach(MIMEText(body, 'plain'))
server = smtplib.SMTP('smtp.example.com', 25)
server.ehlo()
server.starttls()
server.ehlo()
server.login(fromaddr, "password")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()
Telnet输出:
ehlo test1.example.com
250-hidden
250-HELP
250-SIZE 104857600
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-STARTTLS
250 OK
我需要对应用进行身份验证和发送邮件。
答案 0 :(得分:31)
登录和sendemail之前需要连接。
server = smtplib.SMTP('smtp.example.com', 25)
server.connect("smtp.example.com",465)
server.ehlo()
server.starttls()
server.ehlo()
server.login(fromaddr, "password")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()
答案 1 :(得分:0)
import smtplib
s = smtlib.SMTP('smtplib.gmail.com',587)
s.ehlo()
s.starttls()
s.login('frmaddr','password')
try:
s.sendmail('fromaddr','toaddr','message')
except:
print (failed)
答案 2 :(得分:0)
这可能只是我正在使用的服务器,但是即使实施了公认的解决方案,也遇到了与OP相同的错误。原来服务器不希望登录,因此在删除行server.login(fromaddr, "password")
之后,错误消失了并且可以正常工作。
答案 3 :(得分:0)
由于smtp.connect()
和smtp.ehlo()
自动调用它们,因此无需调用SMTP()
和smtp.starttls()
。只需将端口设置为587
而不是28
即可解决此问题。
供客户端使用,如果您对安全策略没有任何特殊要求,强烈建议您使用create_default_context()
函数来创建SSL上下文。它将加载系统的受信任CA证书,启用证书验证和主机名检查,并尝试选择合理的安全协议和密码设置。
通常,您将希望使用email
软件包的功能来构造电子邮件,然后可以通过send_message()
发送电子邮件。
import smtplib, ssl
from email.message import EmailMessage
msg = EmailMessage()
msg.set_content("The body of the email is here")
msg["Subject"] = "An Email Alert"
msg["From"] = "me@example.com"
msg["To"] = "you@example.com"
context=ssl.create_default_context()
with smtplib.SMTP("smtp.example.com", port=587) as smtp:
smtp.starttls(context=context)
smtp.login(msg["From"], "p@55w0rd")
smtp.send_message(msg)
答案 4 :(得分:0)
首先点击是允许您的gmail帐户通过其他应用程序发送电子邮件,请在此部分中允许:
https://myaccount.google.com/lesssecureapps
然后,您应该可以发送电子邮件
import json
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
msg = MIMEMultipart()
message = "This is an email"
password = "yourpasswordemailsender"
msg['From'] = "emailsender@gmail.com"
msg['To'] = "emailsended@gmail.com"
msg['Subject'] = "Title of email"
msg.attach(MIMEText(message, 'plain'))
server = smtplib.SMTP('smtp.gmail.com: 587')
server.starttls()
server.login(msg['From'], password)
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()
答案 5 :(得分:0)
您需要先登录“ starttls”。