Rumah > Soal Jawab > teks badan
Saya cuba menyediakan PHPMailer supaya salah seorang pelanggan kami boleh menjana e-mel secara automatik daripada akaun mereka sendiri. Saya log masuk ke akaun Office 365 mereka dan mendapati bahawa tetapan yang diperlukan untuk PHPMailer ialah:
Host: smtp.off ice365.com Port: 587 Auth: tls
Saya telah menggunakan tetapan ini pada PHPMailer, tetapi tiada e-mel dihantar (fungsi yang saya panggil adalah untuk mel kami sendiri, yang dihantar dari pelayan luaran (bukan yang melayani halaman 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
Adakah sesiapa tahu tetapan apa yang diperlukan untuk PHPMailer hantar melalui smtp.offi ce365.com?
P粉1761515892023-10-17 10:00:21
Jadi saya sedang bergelut dengan isu ini. Saya boleh memberikan jawapan kepada soalan ini untuk akaun perusahaan dengan akses kepada Exchange Online dan Pusat Pentadbiran Microsoft.
TLDR: Pergi ke pusat pentadbir dan pilih pengguna yang ingin anda hantar mel. Kemudian selepas menyediakan "SMTP yang disahkan" lihat tetapan selepas "E-mel" dan "Aplikasi E-mel" dan hanya membolehkannya.
Masih tidak berfungsi? Saya telah membantu anda, berikut ialah cara saya membuatnya berfungsi sepenuhnya.
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 { }
Jika anda menggunakan MFA, pastikan anda menggunakan kata laluan apl a/61359150/14148981 seperti yang dinyatakan dalam https://stackoverflow.com/
Jalankan skrip
Saya harap ini membantu seseorang. Saya mengambil masa yang lama untuk mencari pilihan ini.
Dapatkan ringkasan semua langkah untuk kata laluan dan pengesahan apl:
P粉3950561962023-10-17 00:05:06
Kod
@nitin tidak berfungsi untuk saya kerana ia tiada "tls" dalam parameter SMTPSecure.
Ini adalah versi yang berfungsi. Saya juga telah menambah dua baris komen yang boleh anda gunakan jika masalah timbul.
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'; }