8722 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Aujourd'hui je veux communiquer entre une application web et des comptes Exchange. Pour cela j'utilise la librairie php-ews ( php ExchangeWebServices).

J'ai suivi le tuto du wiki : https://github.com/jamesiarmes/php-ews/wiki/Email:-Send-Email et j'ai réussi à faire çà :


//librairies ExchangeWebServices - php-ews
require_once('assets/librairies/php-ews/ExchangeWebServices.php');
require_once('assets/librairies/php-ews/NTLMSoapClient.php');
require_once('assets/librairies/php-ews/NTLMSoapClient/Exchange.php');
require_once('assets/librairies/php-ews/EWS_Exception.php');
require_once('assets/librairies/php-ews/EWSType.php');

require_once('assets/librairies/php-ews/EWSType/MessageType.php');
require_once('assets/librairies/php-ews/EWSType/EmailAddressType.php');
require_once('assets/librairies/php-ews/EWSType/BodyType.php');
require_once('assets/librairies/php-ews/EWSType/SingleRecipientType.php');
require_once('assets/librairies/php-ews/EWSType/CreateItemType.php');
require_once('assets/librairies/php-ews/EWSType/NonEmptyArrayOfAllItemsType.php');
require_once('assets/librairies/php-ews/EWSType/ItemType.php');

function sendMail($ews, $toAddresses, $fromAddress, $subject, $message) {
    $msg = new EWSType_MessageType();
    
    //destinataires
    $msg->ToRecipients = $toAddresses;
    
    //expéditeur
    $msg->From = new EWSType_SingleRecipientType();
    $msg->From->Mailbox = $fromAddress;
    
    //sujet
    $msg->Subject = $subject;
    
    //format
    $msg->Body = new EWSType_BodyType();
    $msg->Body->BodyType = 'HTML';
    
    //message
    $msg->Body->_ = $message;
    
    $msgRequest = new EWSType_CreateItemType();
    $msgRequest->Items = new EWSType_NonEmptyArrayOfAllItemsType();
    $msgRequest->Items->Message = $msg;
    $msgRequest->MessageDisposition = 'SendAndSaveCopy';
    $msgRequest->MessageDispositionSpecified = true;

    $response = $ews->CreateItem($msgRequest);
    //var_dump($response);
    return $response;
}

$host = '***';
$login = '***';
$password = '***';

//création du pont
$ews = new ExchangeWebServices($host, $login, $password);

if($ews){
    //destinataire(s)
    $toAddresses = array();

    $toAddresses[0] = new EWSType_EmailAddressType();
    $toAddresses[0]->EmailAddress = '***';
    $toAddresses[0]->Name = '***';

    //expéditeur
    $fromAddress = new EWSType_EmailAddressType();
    $fromAddress->EmailAddress = '***';
    $fromAddress->Name = '***';
    
    //sujet
    $subject = 'Test email';
    
    //corps du message (format HTML)
    $message = '<p style="color:#f49a20; font-size: 18px; font-weight: bold;">Test email message.</p>';

    $mail = sendMail($ews, $toAddresses, $fromAddress, $subject, $message);        

    if($mail){
        echo $mail;
    }else{
        echo "Une erreur s'est produite lors de l'envoi de l'email.";
    }
}else{
    echo "Erreur de connexion : veuillez vérifier vos identifiants.";
}


J'ai d'abord testé seul la création du pont ; il reconnaît bien mon utilisateur et se connecte. Mon problème est une erreur 500 sur "$response = $ews->CreateItem($msgRequest);" (dans la fonction).

Erreur Curl : The requested URL returned error: 500


Est ce que quelqu'un a déjà utilisé cette librairie ? Y'a t'il des ports à activer sur le serveur ?

Merci à tous et bonne année 2014.
Modifié par mini-truc (08 Jan 2014 - 14:50)