如何控制电子邮件的发送?

gab6jxml  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(441)

我正在尝试使用python发送电子邮件,但是如何确定电子邮件是否已发送?
我发送电子邮件的代码:

import smtplib

server = smtplib.SMTP_SSL("smtp.gmail.com",465)

server.login("me@gmail.com","pass")

server.sendmail("me@gmail.com","friend@gmail.com","message")

server.quit()

我试图得到如下输出:
如果邮件已发送: OK 如果邮件无法送达: BAD

sr4lhrrt

sr4lhrrt1#

tl;dr:如果您想要通知,请使用保证通知的服务(参考号)。
即使最新的rfc 2821可以强制(在纸面上)不删除电子邮件,正如在评论中提到的,您通常不知道收件人的邮件服务器何时收到邮件。您返回的唯一状态是您的smtp服务器发送了邮件,但由于机器出现故障或只是垃圾邮件过滤器,邮件可能在稍后的过程中被删除。
有反弹消息和各种其他黑客来对付它,例如:
远程资源(图像、iFrame等),如果您的邮件客户机至少有一点安全,将阻止此类http调用
这也是基于web的客户端默认失败的地方,除非它们也从消息中剪切此类资源,并且仅在您确认每个消息的使用情况后才显示。否则,它将只是一个链接或html元素,仅由您的浏览器解释(可能被加载项阻止),因此通过http/s请求进入并呼叫主页,甚至发送包含数据的表单。
outlook(和其他客户端)确认邮件阅读的功能-可以忽略/取消
电子邮件不是真正安全的,也没有任何保证,如果它甚至可以到达另一端,除了你使用一个更强大的邮件服务器,多年来已经证明它可以工作,这可能会稍微增加发送的机会。然而,任何让你知道对方收到消息的行动都完全取决于接收者从机器上通过的意愿/安全性/愚蠢性。
我打赌在同一个域中有(或者至少应该有)更好的内部邮件处理方式(bob@hello.tld -> jim@hello.tld)这可能会有更高的机会传递+一个适当的反弹消息,但你永远不会知道,也没有人会给你一个sla或任何类似的,无论是由于电子邮件的性质。
即使您尝试使用附件执行相同的呼叫总部操作,这一点也同样适用-可以通过防病毒、防火墙、仅在没有(公共)互联网访问的私人网络中、下载带有 POP3 (和离线阅读)等。

相关问题