【问题标题】:smtplib doesn't send an email | Pythonsmtplib 不发送电子邮件 | Python
【发布时间】:2021-04-26 13:34:48
【问题描述】:

没有收到错误,但也没有向收件人的电子邮件发送电子邮件。

使用我从 namecheap 收到的电子邮件(他们使用私人电子邮件)。

async def contents(self, email): 
    email = email.strip()
    message = MIMEMultipart()
    message["From"] = "config@hvh.monster"
    message["To"] = email
    message["Subject"] ="SCARY HVH CONFIGURATION"
    message["Bcc"] = email
    message.attach(MIMEText(open("scarychina.txt", "r+").read(), "plain"))
    with open("js.zip", 'rb') as attachment:
            part = MIMEBase("application", "octet-stream")
            part.set_payload(attachment.read())
    encoders.encode_base64(part)
    part.add_header("Content-Disposition", f"attachment; filename= js.zip",)
    message.attach(part)
    return str(message)

async def send_config(self, email: str):
    try:
        contents = await self.contents(email)
        server = smtplib.SMTP_SSL("mail.privateemail.com", 465, ssl.create_default_context())
        server.login("config@hvh.monster", email_pass)
        server.sendmail("config@hvh.monster", email, contents)
        print("Sent an email to " + email)
        server.quit() 
    except Exception as e:
        print(e)```

【问题讨论】:

  • 您是否尝试过发送更简单的消息,或发送到不同的电子邮件地址?如果您只是针对单个测试电子邮件帐户尝试这个复杂的案例,那么您有很多潜在的地方可能会出错。我建议你从一个简单的信息开始。如果这有效,那么您就知道它与消息的内容或您如何组合它有关。如果这也不起作用,那么您可以探索问题是否与您发送到的特定地址有关。
  • 您可以尝试的另一件事是提供错误的密码,或执行其他可能导致失败的操作。如果他们不这样做,那么您可能做错了应该导致错误的事情,但没有这样做,例如提供错误的密码。 - 分而治之。从简单开始。探索当你改变各种事物时会发生什么。
  • 检查server.sendmail的返回值 - 如果它是空的,那么消息正在发送。

标签: python smtplib


【解决方案1】:

我的邮箱可行,代码如下

import smtplib 
from email.mime.text import MIMEText
from email.utils import formataddr


class SendMail(object):
    def __init__(self, mail_title, mail_contain):
        self.sender='sender email'
        self.accepter='accepter email'
        self.mail_title = mail_title
        self.mail_contain = mail_contain

    def send_data(self):
        try:
            msg = MIMEText(self.mail_contain, 'html', 'utf-8')
            msg['From'] = formataddr(["sender name", self.sender])
            msg['To'] = ";".join(self.accepter)
            msg['Subject'] = self.mail_title
            server = smtplib.SMTP_SSL("smtp host",465)
            server.login(self.sender, "password")
            server.sendmail(self.sender, self.accepter, msg.as_string())
            server.quit()
        except Exception as e:
            print(e, 'send fail....')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 2023-02-11
    • 2019-12-04
    • 1970-01-01
    • 2020-09-19
    • 2011-02-12
    • 2017-09-20
    相关资源
    最近更新 更多