Using HTML Mime Mail for PHP to send email, but need to authenticate through Exchange server

12,567

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>");
 }
?>
Share:
12,567
agucho
Author by

agucho

Web Application Developer, using PHP, CodeIgniter, Laravel, jQuery, html, css, js, Twitter Bootstrap, LESS, MySQL, rsync, git, ExpressionEngine add-on developer

Updated on June 19, 2022

Comments

  • agucho
    agucho almost 2 years

    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.