在我的应用中,我们使用MS Exchange服务器发送电子邮件。但我们没有使用SMTP。我们必须在不使用SMTP的情况下发送邮件。
早些时候我发送带有SMTP的Gail服务器的邮件。但我没有找到任何解决方案,无需使用SMTP即可使用Exchange服务器发送邮件。
请为我推荐一个很好的解决方案
编辑: Php代码
<?php
// Set basic message parameters
$from = 'noreply@company.com';
$to = 'customer@example.com';
$subject = 'Test Message';
$message = 'Hello';
// Set additional headers for HTML email
$headers = 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\n";
$headers .= 'X-Mailer: PHP/' . phpversion() . "\n";
$headers .= 'From: ' . $from;
// Send mail
if (mail($to, $subject, $message, $headers)) {
echo 'Message sent';
} else {
echo 'Message sending failed';
}
?>
是否可以在不使用SMTP端口和主机的情况下发送邮件?
答案 0 :(得分:0)
基本上,如果不与SMTP服务器交互,您就无法发送电子邮件(可能会隐式发生)。
PHP的mail()
函数实际上在Linux / Unix环境中执行本机二进制文件(例如sendmail
命令,但在Windows上它需要一些配置才能正常工作 - 操作系统是哪个操作系统有吗?)。
因此,如果要使用相同的机制,请调用二进制sendmail
命令(ProcessBuilder
,Runtime.exec()
是Java中的朋友,或Scala中的scala.sys.process.package
答案 1 :(得分:0)
如果您的服务器上可以访问电子邮件,则可以使用Exchange Web服务发送电子邮件。
Here您可以下载EWS Java API。它很老(编码很差),但应该足以发送电子邮件。
答案 2 :(得分:0)
答案 3 :(得分:0)
我写了一个发现自己在Spark Pipelines中经常使用的函数,该函数使用sendmail函数(内置在几乎所有的Linux发行版中)并以HTML格式发送电子邮件。我主要在管理员已经配置了postfix(几乎所有)的情况下使用它。
它使用base64编码在scala中对html模板进行编码,然后在bash中无缝解码和执行,而不会因bash字符串插值与scala和流程执行相结合而带来任何麻烦。没有临时文件,只有纯粹的执行。
注意: 1)如果您在Spark集群模式下像我一样使用它,则应首先在所有数据节点上对其进行测试,因为它将从其中一个执行并失败。 2)我不需要stdout,因为我不需要它。如果确实这样做,则只需添加一个Stringbuffer并在message_success val的末尾使用记录器拆分输出。
import java.util.Base64
import java.nio.charset.StandardCharsets
import scala.sys.process._
def scalaSendMail(html_message: String, subject: String, to: Array[String], from: String=""): String = {
val message64 = Base64.getEncoder.encodeToString(html_message.getBytes(StandardCharsets.UTF_8))
val prepped_recipients = to.mkString(",")
val bash_wrapper = """(echo "From: """ + from + """";
echo "To: """ + prepped_recipients + """";
echo "Subject: """ + subject + """";
echo "Content-Type: text/html";
echo "MIME-Version: 1.0";
echo "";
echo """" + message64 + """" | base64 --decode
) | sendmail -t """
val mesage_success = Seq("sh", "-c", bash_wrapper).!!
return mesage_success
}