2

首先,服务器:在 Windows 2003 Server sp2 上运行的 Exchange 2003 sp2

我有一个脚本,可以将电子邮件发送到两个电子邮件帐户,一个名为 student@,另一个是 fs@(教师/员工)。我们将这两个电子邮件帐户设置为仅接受交换服务器上经过身份验证的用户的传入电子邮件,以使自己免受垃圾邮件/垃圾邮件的侵害。所以现在脚本发送的电子邮件不成功。我有作为合法用户的返回路径电子邮件,但它没有经过身份验证。我注意到,当我尝试通过我的邮件客户端(Apple 的 Mail.app)发送测试时,由于我通过他们的 IMAP 服务器而不是通过 Exchange 使用电子邮件,我的电子邮件也失败了。

这是发送电子邮件的代码:

$mail = new htmlMimeMail();
$message = $today.$announcements.$food.$upcoming;
$mail->setHTML($message);
$mail->setSubject($subject);
$mail->setSMTPParams('mail.domain.com', 25, true, 'user', 'pass');
$mail->setFrom("no-reply@domain.com");
$mail->setReturnPath("webmaster@domain.com");

if($message)
    $mailresult = $mail->send(array($emailto));

我以前从未使用 HTML Mime Mail for PHP ( http://www.phpguru.org/static/mime.mail.html ) 类向交换服务器进行身份验证。任何帮助,将不胜感激。

也许还有另一个 PHP 类可以轻松地通过 Exchange 服务器进行身份验证?

编辑:是否有任何 php 邮件类可以通过交换服务器正确验证?

另一个编辑:Exchange Server 使用 NTLM 身份验证并使用 Active Directory。希望这可以帮助。

4

1 回答 1

5

Exchange 支持标准的SMTP Auth机制,所以我会使用它。这是一个使用Pear::Mail from here的示例。

<?php
require_once "Mail.php";

$from = "Sandra Sender <sender@example.com>";
$to = "Ramona Recipient <recipient@example.com>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";

$host = "mail.example.com";
$username = "smtp_username";
$password = "smtp_password";

$headers = array ('From' => $from,
  'To' => $to,
  'Subject' => $subject);
$smtp = Mail::factory('smtp',
  array ('host' => $host,
    'auth' => true,
    'username' => $username,
    'password' => $password));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
  echo("<p>" . $mail->getMessage() . "</p>");
 } else {
  echo("<p>Message successfully sent!</p>");
 }
?>
于 2008-12-16T19:03:23.453 回答