2008-12-16 10 views
2

Tout d'abord, le serveur: Exchange 2003 sp2 fonctionnant sous Windows 2003 Server sp2En utilisant HTML Mime Mail pour PHP pour envoyer des courriels, mais ont besoin d'authentifier via serveur Exchange

J'ai un script qui envoie un courrier électronique à deux comptes de messagerie , un appelé étudiants @ et l'autre étant fs @ (faculté/personnel). Nous configurons ces deux comptes de messagerie pour n'accepter que les e-mails entrants des utilisateurs authentifiés sur le serveur d'échange, afin d'éviter le spam/courrier indésirable. Donc maintenant les emails envoyés par le script ne réussissent pas. J'ai l'email de retour-chemin en tant qu'utilisateur légitime, mais il n'est pas authentifié. J'ai remarqué que lorsque j'ai essayé d'envoyer un test via mon client de messagerie (Mail.app d'Apple) et que j'utilise l'email via leur serveur IMAP et non via l'échange, mon email a échoué aussi.

Voici le code pour envoyer l'e-mail:

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

Je n'ai jamais authentifié avec un serveur d'échange en utilisant le code HTML Mime Mail pour la classe PHP (http://www.phpguru.org/static/mime.mail.html) avant. Toute aide serait appréciée.

Peut-être il y a une autre classe PHP qui permet facilement l'authentification avec un serveur Exchange?

EDIT: Y a-t-il des catégories de courrier php là-bas qui authentifient correctement avec un serveur d'échange?

Une autre EDIT: L'Exchange Server utilise l'authentification NTLM et utilise Active Directory. J'espère que cela t'aides.

Répondre

4

Exchange prend en charge le mécanisme standard SMTP Auth, donc j'utiliser. Voici un exemple utilisant Pear::Mail de 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>"); 
} 
?> 
+0

Cela fonctionnerait si authentifié avec le serveur d'échange. Par correctement, je veux dire qu'il authentifie jusqu'aux standards d'échange. Le seul succès que j'ai eu à envoyer un e-mail à cette adresse e-mail est en utilisant Outlook ou la version webmail de Outlook. Quelque chose à faire avec échange. – Brad