java - 如何使 javax.mail 使用本地 "sendmail"二进制文件?

标签 java email jakarta-mail sendmail sendmail.exe

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

javax.mail 本身或其他“插件”是否已经支持类似的功能?

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

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

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

最佳答案

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

关于java - 如何使 javax.mail 使用本地 "sendmail"二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61344937/

相关文章:

java - 无法通过包含 Mail 依赖项 jar 文件来运行 java 应用程序(作为 exec JAR)

java - 从 gae blobstore java 在浏览器中查看文本文件的内容

java - 如何分配json字符串内容并保持格式?

html - 电子邮件不会在 iPhone 上显示

ruby - Mandrill API 使用 send_at 发送预定电子邮件

java - 使用 jar 和文本文件输入运行 java 文件

java - 为什么我的 Google App Engine 项目不发送电子邮件?

java - OpenERP Jasper Reports导入外部库

java - 如何建立与DVR的连接并解码数据?

python - 为什么我不能使用此脚本向多个收件人发送电子邮件?