2

まず、サーバー: Windows 2003 Server sp2 で動作する Exchange 2003 sp2

私は、students@ と fs@ (faculty/staff) という 2 つの電子メール アカウントに電子メールを送信するスクリプトを持っています。両方のメール アカウントを、Exchange サーバーで認証されたユーザーからの受信メールのみを受け入れるように設定して、スパム/ジャンク メールから身を守ります。そのため、現在、スクリプトによって送信されている電子メールは成功していません。正当なユーザーとして return-path メールを持っていますが、認証されていません。メール クライアント (Apple の Mail.app) を介してテストを送信しようとすると、exchange ではなく IMAP サーバーを介してメールを使用しているため、メールも失敗することに気付きました。

メールを送信するためのコードは次のとおりです。

$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 ) クラスを使用して Exchange サーバーで認証したことはありません。どんな助けでも大歓迎です。

Exchange サーバーで簡単に認証できる別の PHP クラスがあるのではないでしょうか?

編集: Exchange サーバーで適切に認証される php メール クラスはありますか?

別の編集: Exchange Server は NTLM 認証を使用し、Active Directory を使用します。お役に立てれば。

4

1 に答える 1

5

Exchange は標準のSMTP 認証メカニズムをサポートしているので、私はそれを使用します。hereからPear::Mailを使用した例を次に示します。

<?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 に答える