【问题标题】:Python send simple mailPython 发送简单邮件
【发布时间】:2021-01-17 19:40:12
【问题描述】:

我正在尝试编写一个在某些情况下必须发送简单电子邮件的简单脚本。 我有以下脚本,如果我只使用这个脚本,效果很好。

import smtplib

mail_user = '123@123.com'
mail_password = 'password'

sent_from = mail_user
to = ['reciever@address.com']
subject = 'My subject'
body = 'Hello mail.'

email_text = """\
From: %s
To: %s
Subject: %s

%s
""" % (sent_from, ", ".join(to), subject, body)

try:
    server = smtplib.SMTP_SSL('mail.123.com', 465)
    server.ehlo()
    server.login(mail_user, mail_password)
    server.sendmail(sent_from, to, email_text)
    server.close()

    print 'Email sent!'
except:
    print 'Something went wrong...'

问题是当我尝试将此代码放入 def 并从电子邮件外部调用时缺少标题,我的意思是电子邮件到达时没有发件人也没有主题。发件人为空,主题为空,但我只有正文。 当我发送到另一个域时,我也无法收到邮件,但我认为这是因为另一个域拒绝没有标头的邮件,当仅使用脚本时,邮件也会到达其他域。

import smtplib

def sendMail():

  mail_user = '123@123.com'
  mail_password = 'password'

  sent_from = mail_user
  to = ['reciever@address.com']
  subject = 'My subject'
  body = 'Hello mail.'

  email_text = """\
  From: %s
  To: %s
  Subject: %s

  %s
  """ % (sent_from, ", ".join(to), subject, body)

  try:
    server = smtplib.SMTP_SSL('mail.123.com', 465)
    server.ehlo()
    server.login(mail_user, mail_password)
    server.sendmail(sent_from, to, email_text)
    server.close()

    print 'Email sent!'
  except:
    print 'Something went wrong...'

sendMail();

当我将此代码放入 def 时有什么区别?为什么会这样?我做错了什么?

感谢您的帮助。

【问题讨论】:

    标签: python function sendmail


    【解决方案1】:

    在您的函数版本中,您的电子邮件标题已缩进

    email_text = """\
      From: %s
      To: %s
      Subject: %s
    
      %s
      ...
    

    在此字符串中,To:Subject: 现在缩进了。

    【讨论】:

      【解决方案2】:
      def sendMail():
      

      调用它:

      sendMail()
      

      不是 SendMail()

      【讨论】:

      • 问题不在于,我在这里只用大写字母犯了一个错误,我已经在问题中更正了。谢谢。
      • 是否可以查看控制台的输出以了解它报告错误的位置?
      • 两个代码相同,但制表符或空格缩进可能不同。检查缩进(空格)而不是(制表符)
      猜你喜欢
      • 2014-09-11
      • 1970-01-01
      • 2012-10-11
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多