使用smtplib和SSL发送电子邮件,但接收方无法接收



我正在尝试使用smtplib和ssl将电子邮件从一封电子邮件发送到另一封电子邮件。显示已发送,但接收方没有电子邮件。我正在尝试两种不同的代码:

代码1:

import smtplib, ssl
port = 465
smtp_server = "myserver.com"
sender_email = "sender@myserver.com"
receiver_email = "receiver@gmail.com" 
password = "mypassword"
message = """
Subject: Hi there
This message is sent from Python."""
try:
context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message)
print("Sent..")
except:
print("Error!!")

代码2:

import smtplib
import os.path
from email.mime.text import MIMEText
msg = MIMEText("")
msg['Subject'] = "Hi there, This message is sent from Python."
s = smtplib.SMTP_SSL("myserver.com:465")
s.login("sender@myserver.com","mypassword")
s.sendmail("sender@myserver.com","receiver@gmail.com", msg.as_string())
s.quit()
print("done")

找不到问题。知道吗?

sendmail方法是一种低级方法,它假定消息文本的格式正确。并且您的消息不包含通常的To:From:标头。

send_message方法使用EmailMessage并对其进行正确格式化,因此使用起来更容易。我建议将您的代码更改为:

port = 465
smtp_server = "myserver.com"
password = "mypassword"
msg = MIMEText("This message is sent from Python.")
msg['Subject'] = "Hi there"
msg['From'] = "sender@myserver.com"
msg['To'] = "receiver@gmail.com" 
try:
context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
server.login(sender_email, password)
server.send_message(msg)
print("Sent..")

相关内容

最新更新