簡單指南:使用PHPMailer傳送測試郵件
P粉344355715
P粉344355715 2023-08-26 21:06:15
0
1
575
<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>
P粉344355715
P粉344355715

全部回覆(1)
P粉709644700

好的,明白了。主機公司提供了測試程式碼,他們的範例使用了smtp.domain.com。實際上,他們的smtp伺服器是mail,而不是smtp。我猜想當面對一個不存在的伺服器時,程式碼就會停止運行...

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!