web-dev-qa-db-fra.com

Configuration de PHPMailer avec Office365 SMTP

J'essaie de configurer PHPMailer pour que l'un de nos clients puisse faire en sorte que les e-mails générés automatiquement proviennent de son propre compte. Je me suis connecté à leur compte Office 365 et j'ai constaté que les paramètres requis pour PHPMailer sont:

Host: smtp.office365.com
Port: 587
Auth: tls

J'ai appliqué ces paramètres à PHPMailer, mais aucun e-mail n'est envoyé (la fonction que j'appelle fonctionne bien pour notre propre courrier, qui est envoyé à partir d'un serveur externe (pas le serveur qui dessert les pages Web)).

"Host"      => "smtp.office365.com",
"port"      => 587,
"auth"      => true,
"secure"    => "tls",
"username"  => "[email protected]",
"password"  => "clientpass",
"to"        => "myemail",
"from"      => "[email protected]",
"fromname"  => "clientname",
"subject"   => $subject,
"body"      => $body,
"altbody"   => $body,
"message"   => "",
"debug"     => false

Quelqu'un sait-il quels paramètres sont nécessaires pour que PHPMailer envoie via smtp.office365.com?

10
JosephGarrone

Le code de @ nitin ne fonctionnait pas pour moi, car il manquait "tls" dans le paramètre SMTPSecure.

Voici une version de travail. J'ai également ajouté deux lignes commentées, que vous pouvez utiliser au cas où quelque chose ne fonctionnerait pas.

<?php
require 'vendor/phpmailer/phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.office365.com';
$mail->Port       = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth   = true;
$mail->Username = '[email protected]';
$mail->Password = 'YourPassword';
$mail->SetFrom('[email protected]', 'FromEmail');
$mail->addAddress('[email protected]', 'ToEmail');
//$mail->SMTPDebug  = 3;
//$mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; //$mail->Debugoutput = 'echo';
$mail->IsHTML(true);

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}
17
bgazzera

Essayez ça, ça marche bien pour moi, je l'utilise depuis si longtemps

$mail = new PHPMailer(true);
$mail->Host = "smtp.office365.com";
$mail->Port       = 587;
$mail->SMTPSecure = '';
$mail->SMTPAuth   = true;
$mail->Username = "email";   
$mail->Password = "password";
$mail->SetFrom('email', 'Name');
$mail->addReplyTo('email', 'Name');
$mail->SMTPDebug  = 2;
$mail->IsHTML(true);
$mail->MsgHTML($message);
$mail->Send();
4
Nitin Muchhadiya

J'ai eu le même problème lorsque nous sommes passés de Gmail à Office365.

Vous DEVEZ d'abord configurer un connecteur (soit un relais SMTP ouvert ou un envoi client). Lisez ceci et il vous dira tout ce que vous devez savoir pour autoriser Office365 à envoyer des e-mails:

https://technet.Microsoft.com/en-us/library/dn554323.aspx

2
Martin Stevens