views:

2766

answers:

2

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("[email protected]");
$mail->setReturnPath("[email protected]");

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.

+2  A: 

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 <[email protected]>";
$to = "Ramona Recipient <[email protected]>";
$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>");
 }
?>
Chase Seibert
This would work if it authenticated properly with the exchange server.By properly, I mean it authenticates up to the exchange standards. The only success I have had sending an email to this email address is by using outlook or the webmail version of outlook. Something to do w/ exchange.
Brad
A: 

Ok But, where is the MIME specification of the message, If I would like to send a multipart message?