【问题标题】:Send mails with Python and an IMAP/SMTP Server使用 Python 和 IMAP/SMTP 服务器发送邮件
【发布时间】:2017-08-31 16:04:25
【问题描述】:

我在使用我自己的 SMTP/IMAP 服务器通过 Python 发送电子邮件时遇到了一些问题。 这是代码:

import sys
import imaplib
import smtplib
import email
import email.header
import datetime

smtp_session = smtplib.SMTP(mail_server)
try:
    smtp_session.ehlo()
except :
    err = sys.exc_info()[0]


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

%s""" % (email_from, ", ".join([email_to]), "subject", "body")
try:
    smtp_session.sendmail(email_from, [email_to], message)
    smtp_session.quit()
except:
    err = sys.exc_info()[0]

if err != "" or err !=None:
    NagiosCode = 2
    NagiosMsg = "CRITICAL: Script execution failed : " + str(err)

好的,我有两个问题: 当我从脚本发送邮件时,我需要将邮件显示在发送邮件的邮箱的“已发送邮件”目录中。

我遇到的第二个问题:发送邮件时,我发现了这个异常:

<class 'smtplib.SMTPException'>

编辑:异常跟踪:

  File "checkIMAP_client.py", line 153, in <module>
    smtp_session.login(login, password)
  File "/usr/lib64/python2.6/smtplib.py", line 559, in login
    raise SMTPException("SMTP AUTH extension not supported by server.")
smtplib.SMTPException: SMTP AUTH extension not supported by server.

编辑: 看来我的 SMTP 服务器不需要身份验证。 但是程序仍然返回一个空异常。

代码已更新。

【问题讨论】:

  • 除非您的 SMTP 服务器为您执行此操作,否则您需要连接到您的 IMAP 服务器并将电子邮件“存储”到您帐户的已发送文件夹中。至于您收到的即时异常-该期望还告诉您什么-应该有一个描述或错误号来指示具体问题是什么-尝试不捕获异常并让它停止程序...
  • 我添加了跟踪。关于 IMAP 部分,该怎么做?顺便说一句,我可能需要用 Python 删除这些电子邮件,我在 IMAPlib python 文档中找不到如何做到这一点。
  • 对于 IMAP 位 - 您已经阅读了很多 RFC 3501... - 查看 STORE 命令。
  • 关于 AUTH 错误:在登录前尝试.starttls,后跟.ehlo。通常只允许通过加密通道进行身份验证。
  • 我的 SMTP 服务器上没有设置任何身份验证方法。我在我的代码中删除了关于身份验证的所有内容。感谢您的想法。

标签: python email python-2.6 smtplib imaplib


【解决方案1】:

所以对于我遇到的两个问题,感谢上面的 cmets,我找到了答案:

将我通过 SMTP 发送的电子邮件放入已发送目录的正确邮箱中: https://pymotw.com/2/imaplib/ 查找“上传消息”

异常问题: 我的 SMTP 服务器上没有设置身份验证方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-20
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    相关资源
    最近更新 更多