使用HTML Mime Mail for PHP发送电子邮件,但需要通过Exchange服务器进行身份验证

使用HTML Mime Mail for PHP发送电子邮件,但需要通过Exchange服务器进行身份验证

问题描述:

First off, the server: Exchange 2003 sp2 running on Windows 2003 Server sp2

I have a script that sends email to two email accounts, one called students@ and the other being fs@ (faculty/staff). We are setting both those email accounts to only accept incoming email by authenticated users on the exchange server, to spare ourselves from spam/junk mail. So right now the emails being sent by the script are not successful. I have the return-path email as a legit user, but it is not authenticated. I noticed that when I tried sending a test via my mail client (Apple's Mail.app) and since I use email through their IMAP server and not through exchange, my email failed as well.

Here is the code for sending the email:

$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));

I have never authenticated with an exchange server using the HTML Mime Mail for PHP (http://www.phpguru.org/static/mime.mail.html) class before. Any help would be appreciated.

Maybe there is another PHP class that easily allows authentication with an Exchange server?

EDIT: Are there any php mail classes out there that authenticate properly with an exchange server?

Another EDIT: The Exchange Server uses NTLM authentication and uses Active directory. Hope this helps.

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

以下是发送电子邮件的代码: p>

  $ mail = new htmlMimeMail(); 
 $ message = $ today。$ announcements。$ food。$ coming; 
  $ mail-> setHTML($ message); 
 $ mail-> setSubject($ subject); 
 $ mail-> setSMTPParams('mail.domain.com',25,true,'user',' 通过); 
 $的MAIL-> setFrom( “no-reply@domain.com”); 
 $的MAIL-> setReturnPath( “webmaster@domain.com”); 
 
如果($消息)  
 $ mailresult = $ mail-> send(array($ emailto)); 
  code>  pre> 
 
 

我从未使用HTML Mime Mail对Exchange服务器进行身份验证 PHP( http://www.phpguru.org/static/mime.mail.html )之前的课程。 任何帮助将不胜感激。 p>

也许有另一个PHP类可以轻松地允许使用Exchange服务器进行身份验证? p>

编辑:是否有任何php邮件 那些使用交换服务器正确验证的类? p>

另一个编辑:Exchange Server使用NTLM身份验证并使用Active Directory。 希望这会有所帮助。 p> div>

Exchange supports the standard SMTP Auth mechanism, so I would use that. Here is an example using 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,

How 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>");
 }
?>