我们在 Jira 中遇到了一些与从两个 SAP 系统发送的电子邮件相关的问题。这些邮件无法正确处理,我猜是因为它们的正文为空。
不幸的是,发送电子邮件的 SAP 系统不是我们的,我们无法控制它们,也无法触发这些电子邮件的发送。
因此,我想知道:是否有一个软件/在线服务,我可以向其提供电子邮件消息的来源,然后让该服务再次发送该电子邮件?
我知道如果服务/软件使用的 SMTP 不负责发送域,那么就会出现问题,但我认为我们可以处理这个问题。
欢呼 Jens
答案1
您不需要在线服务。SMTP 相当简单;只需几行 Python 代码即可使用smtplibtelnet
(与大多数其他编程语言相同),并且可能更少地通过或手动完成netcat
(但是存在警告,因此我不推荐这样做)。
例如,斯瓦克斯是一个现有的直接与 SMTP 服务器通信的程序。通常它只会发出一个预设的“测试消息”,但您可以提供自己的消息内容,如下所示:
swaks --server foo.example.com --from "sender@foo" --to "recipient@bar" --data message.eml
请注意,SMTP 传送不会查看邮件数据中的“发件人:/收件人:”标头;它有单独的信封您需要自己提供“from”和“to”参数。
(标头仅用于显示,而 SMTP 信封仅用于传送。两者并不总是必须匹配,事实上,提供你自己 --from
地址取决于您的系统如何执行 SPF 和 DMARC 反垃圾邮件检查。)
以下是一个 Python 示例:
import smtplib
sender = "sender@foo"
rcpts = ["recipient@bar"]
data = open("message.eml", "r").read()
with smtplib.SMTP("foo.example.com") as conn:
conn.sendmail(sender, rcpts, data)
同样,Perl 有 Net::SMTP,PHP 有 PHPMailer,Rust 有 Lettre 等等。