首页 > 解决方案 > 如何使 javax.mail 使用本地“sendmail”二进制文件?

问题描述

javax.mail用来创建电子邮件并将其呈现为文本表示。在某些情况下,我不想使用 SMTP 转发这些结果,但例如将它们通过管道传输到sendmail-binary。这在 shell 脚本中似乎很常见,我在 Perl 生态系统中也遇到过这种情况。

像这样的东西javax.mail本身或一些额外的“插件”已经支持了吗?

我没有看到任何这样的选项,只有 SMTP 或不同的网络相关协议。不过,还可以通过扩展Transport并在javamail.providers中注册它而不是 SMTP 来实现自定义传输。查看可用的源代码,我看到主机、端口、URL、已建立的连接等的许多概念,它们不太适合使用管道进行本地通信。我想知道是否能够覆盖默认行为,使其完全不针对网络工作。

那么,这种方法是否可以完全适用于与网络无关的传输,或者“传输”根本不是那样设计的?

如果我已经在使用javax.mail,那么尽可能合理地集成任何自定义可能是一个好主意。

标签: javaemailjakarta-mailsendmailsendmail.exe

解决方案


您应该能够编写自己的传输实现,使用管道将消息发送到本地 sendmail,但是使用 SMTP 将消息发送到本地 sendmail 守护程序要容易得多;只需将其发送到本地主机。


推荐阅读