Maison > Questions et réponses > le corps du texte
J'essaie de configurer PHPMailer pour qu'un de nos clients puisse générer automatiquement des e-mails à partir 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.off ice365.com Port: 587 Auth: tls
J'ai appliqué ces paramètres à PHPMailer, mais aucun e-mail n'est envoyé (la fonction que j'appelle concerne notre propre courrier, qui est envoyé depuis un serveur externe (pas celui qui dessert la page Web)).
"host" => "smtp.of fice365.com", "port" => 587, "auth" => true, "secure" => "tls", "username" => "clientemail@off ice365.com", "password" => "clientpass", "to" => "myemail", "from" => "clientemail@of fice365.com", "fromname" => "clientname", "subject" => $subject, "body" => $body, "altbody" => $body, "message" => "", "debug" => false
Est-ce que quelqu'un sait quels paramètres sont requis pour que PHPMailer envoie via smtp.offi ce365.com ?
P粉1761515892023-10-17 10:00:21
Je suis donc aux prises avec ce problème. Je peux fournir la réponse à cette question pour les comptes d’entreprise ayant accès à Exchange Online et Microsoft Admin Center.
TLDR : accédez au centre d'administration et sélectionnez l'utilisateur auquel vous souhaitez envoyer un e-mail. Ensuite, après avoir configuré "SMTP authentifié", regardez les paramètres après "E-mail" et "Application de messagerie" et activez-le simplement.
Vous ne travaillez toujours pas ? Je suis là pour vous, voici comment je l'ai fait fonctionner complètement.
SMTPDebug = SMTP::DEBUG_off; //SMTP $mail = new PHPMailer(true); //important $mail->CharSet = 'UTF-8'; //not important $mail->isSMTP(); //important $mail->Host = 'smtp.office365.com'; //important $mail->Port = 587; //important $mail->SMTPSecure = 'tls'; //important $mail->SMTPAuth = true; //important, your IP get banned if not using this //Auth $mail->Username = 'yourname@mail.org'; $mail->Password = 'your APP password';//Steps mentioned in last are to create App password //Set who the message is to be sent from, you need permission to that email as 'send as' $mail->SetFrom('hosting@mail.org', 'Hosting Group Inc.'); //you need "send to" permission on that account, if dont use yourname@mail.org //Set an alternative reply-to address $mail->addReplyTo('no-reply@mail.com', 'First Last'); //Set who the message is to be sent to $mail->addAddress('customer@othermail.com', 'SIMON MÜLLER'); //Set the subject line $mail->Subject = 'PHPMailer SMTP test'; //Read an HTML message body from an external file, convert referenced images to embedded, //convert HTML into a basic plain-text alternative body $mail->msgHTML(file_get_contents('replace-with-file.html'), __DIR__); //you can also use $mail->Body = "This is a body message in html" //Replace the plain text body with one created manually $mail->AltBody = 'This is a plain-text message body'; //Attach an image file //$mail->addAttachment('../../../images/phpmailer_mini.png'); //send the message, check for errors if (!$mail->send()) { echo 'Mailer Error: ' . $mail->ErrorInfo; } else { }
Si vous utilisez MFA, assurez-vous d'utiliser le mot de passe de l'application a/61359150/14148981 comme mentionné dans https://stackoverflow.com/
Exécutez le script
J'espère que cela aidera quelqu'un. Il m'a fallu beaucoup de temps pour trouver cette option.
Obtenez un résumé de toutes les étapes pour les mots de passe et l'authentification des applications :
P粉3950561962023-10-17 00:05:06
Le code de @nitin n'a pas fonctionné pour moi car il manquait "tls" dans le paramètre SMTPSecure.
Ceci est une version fonctionnelle. J'ai également ajouté deux lignes commentées que vous pouvez utiliser en cas de problème.
isSMTP(); $mail->Host = 'smtp.office365.com'; $mail->Port = 587; $mail->SMTPSecure = 'tls'; $mail->SMTPAuth = true; $mail->Username = 'somebody@somewhere.com'; $mail->Password = 'YourPassword'; $mail->SetFrom('somebody@somewhere.com', 'FromEmail'); $mail->addAddress('recipient@domain.com', '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 in bold!'; $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'; }