0

在我的应用程序中,我们使用 MS 交换服务器发送电子邮件。但是我们没有使用 SMTP 。我们必须在不使用 SMTP 的情况下发送邮件。

早些时候,我使用带有 SMTP 的 Gail 服务器发送邮件。但我没有找到任何不使用 SMTP 来使用交换服务器发送邮件的解决方案。

请为此建议我一个好的解决方案

编辑: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 端口和主机的情况下发送邮件?

4

4 回答 4

0

Try exJello or Moonrug Exchange Connector.

于 2013-07-16T17:46:34.247 回答
0

如果在您的服务器上可以访问它们,您可以使用 Exchange Web 服务发送电子邮件。

在这里您可以下载 EWS Java API。它很旧(而且编码很差),但应该足以发送电子邮件。

于 2013-07-16T10:14:24.940 回答
0

基本上你不能在不与 SMTP 服务器交互的情况下发送电子邮件(可能会隐式发生)。

PHP的mail()功能实际上是执行一个本地二进制文件(例如,sendmailLinux/Unix 环境下的命令,但在 Windows 上它需要一些配置才能正常工作——你有哪个操作系统?)。

因此,如果您想使用相同的机制,请调用二进制sendmail命令(在 JavaProcessBuilderRuntime.exec()是您的朋友,或者在 Scala 中是scala.sys.process.package)。

于 2013-07-16T09:24:42.453 回答
0

我写了一个函数,我发现自己在 Spark Pipelines 中经常使用它,它使用 sendmail 函数(内置于几乎所有的 Linux 发行版中)并将电子邮件作为 HTML 发送。我主要在管理员已经配置后缀的情况下使用它(几乎所有)。

它使用 base64 编码在 scala 中对 html 模板进行编码,然后在 bash 中无缝解码和执行,而没有任何将 bash 字符串插值与 scala 和进程执行相结合所带来的巨大麻烦。没有临时文件,只是纯粹的执行。

注意:1)如果您像我一样在火花集群模式下使用它,您应该首先在所有数据节点上测试它,因为它将从其中一个执行并失败。2)我没有赶上标准输出,因为我不需要它。如果您只添加一个 Stringbuffer 并在 message_success val 的末尾使用记录器拆分输出。

发送 HTML 电子邮件

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
}
于 2020-02-19T22:17:46.837 回答