簡單指南:使用PHPMailer傳送測試郵件
<p>我在Debian/Bullseye上運行著一個本地的Apache2伺服器。我一直在努力讓PHPMailer起作用,但一直沒有成功。安裝PHPMailer似乎有兩種不同的方法-第一種是使用composer,這是我嘗試的第一種方法。它在網站的根目錄下創建了一個vendor資料夾,其中包括一個autoload.php文件,以及其他一些文件。該文件包含以下內容:</p>
<pre class="brush:php;toolbar:false;"><?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInitd359baac21f520c04e608f4eed750560::getLoader();</pre>
<p>這看起來不完整(沒有閉合標籤)。無論如何,我無法使“test.php”範例工作。 </p>
<p>另一種方法是從gethub網站下載.zip檔案並將其解壓縮到網站的根目錄。重新命名後,我得到了一個PHPMailer資料夾。使用“mailer.php”範例也沒有任何效果。 </p>
<p>在這兩種情況下,我都修改了smtp訊息,以使用網域名稱的實際帳戶資訊(發送電子郵件、登入密碼、smtp伺服器名稱、主機的smtp安全性和連接埠設定),但我甚至沒有收到拒絕郵件的回覆。什麼都沒有發生。我只看到一個空白的網頁。 </p>
<p>我確實有運行php,因為我之前使用過的一個php腳本仍然有效(來自我的測試站點-現在的實際站點堅持使用smtp,不讓我安裝PEAR模組)。</p>
<p>以下是我正在使用的mailer.php腳本-其中一些細節被隱藏:</p>
<pre class="brush:php;toolbar:false;"><?php
//將PHPMailer類別匯入到全域命名空間
//這些必須在腳本的頂部,而不是函數內部
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
//建立一個實例;傳遞'true'啟用異常
$mail = new PHPMailer(true);
Try
{
//伺服器設定
$mail->SMTPDebug = SMTP::DEBUG_SERVER; //啟用詳細偵錯輸出
$mail->isSMTP(); //使用SMTP傳送
$mail->Host = 'mail.<domain>.ca'; //設定要通過的SMTP伺服器
$mail->SMTPAuth = true; //啟用SMTP身份驗證
$mail->Username = 'mail@<domain>.ca'; //SMTP用戶名
$mail->Password = '<secret>'; //SMTP密碼
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //啟用隱式TLS加密
$mail->Port = 465; //要連接的TCP連接埠;如果設定了'SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS',請使用587
//收件者
$mail->setFrom('mail@<domain>.ca', ‘from me’);
$mail->addAddress('gary@<domain>.ca', ‘to me’); //新增一個收件者
// $mail->addAddress('Recipient@emailaddress.com'); //名稱是可選的
// $mail->addReplyTo('yourname@domain.com', ‘Your Name’);
// $mail->addCC('cc@example.com');
// $mail->addBCC('bcc@example.com');
//附件(選購)
// $mail->addAttachment('/var/tmp/file.tar.gz'); //新增附件
// $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); //選用名稱
//內容
$mail->isHTML(true); //將電子郵件格式設為HTML
$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';
$mail->send();
echo 'Message has been sent';
}
catch (Exception $e)
{
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
?></pre>
<p>TLS行來自託管公司,所以我認為它們是正確的。 </p>
<p>我已經註解掉了我在測試中不需要的選項,但它仍然不起作用。有人能找出我做錯了什麼嗎? </p>
<p>謝謝。 </p>