in ,

cpanel 控制台小技巧!利用虛擬主機上的SMTP操作 PHPMailer 、聯絡我們或用wordpress 要寄信

PHP Mail()、PHPMailer都是程式寄信功能的一種,每間主機廠商的現制不太一樣,故**以下僅針對程式/表單的SMTP說明,一般的outlook的SMTP是不受影響的。以下範例,僅供參考**

如果您有表單功能,很多虛擬主機空間是不支援PHP Mail(),也不支援用外部SMTP發信 (例如ServerZoo 主機空間不能用gmail的SMTP發);僅支援該主機本地端SMTP驗證發信,這樣的話,您一定需要使用虛擬主機空間上提供的SMTP帳密,對即使你網址的MX在外地也一樣,故此時您便需要放程式的那台虛擬主機空間下去新增一組EMAIL帳號來用。

若是使用wordpress、joomla..等免費程式寄信,這會需要到他們後台,找到發信設定的地方,把phpmail改成smtp,然後輸入你在我們主機空間上新增的EMAIL帳號密碼,這樣便可以了。如果你MX在外地,您一樣需要再”我們”主機上新增好EMAIL帳號,然後在WordPress後臺那設定,此時SMTP主機可以輸入localhost 即可 (因為您MX已經在外地)。

以下為PHPMailer 範例分享(2020年6月2日驗證PHPmailer 5.28版本可行),主要用來驗證主機SMTP功能正常,教學僅供參考,查看修改用戶端的任何程式或程式架構還是需要由程式人員幫你查看喔

 

step1:
請先到cpanel控制台新增一個電子郵件帳號 (即使您的MX沒有指向web主機,也一樣新增)

新增後請記住密碼,然後編輯您程式如下方教學,把 SMTP打入www.您的網址.com 然後一樣用我們主機上產生的EMAIL帳密驗證寄出即可,請記得EMAIL帳號要連@後面都要打入

step2:
請先下載四個檔案,將這些檔案放在您要發信程式的資料匣下
class.phpmailer.php, class.pop3.php, class.smtp.php, PHPMailerAutoload.php
檔案下載處:https://github.com/PHPMailer/PHPMailer/releases/
(請盡量選擇最新版本)*基本上*只需上傳上方所列的四個php檔案,其它或可不理會(6.0版不適用)

step3:
然後您主要發信程式放在哪或如何修改,常見都為用戶端自行決定+處理或請貴單位的網管和程式人員處理,不同用戶的程式架構就會不同,此篇僅提供教學參考,無法取代或幫你查看修改使用者的任何程式或程式架構

簡易版的程式碼如下(僅供參考): //為說明,您可以將其刪除
PHP 5.6 之後的phpmailer 都會自動使用SSL,如果您沒有安裝SSL就需要按照官方提供的說明才會通,說明如範例內,但如果你用php 5.6以下版本就不會有此問題。

代碼:
‘ssl’ => array(
‘verify_peer’ => false,
‘verify_peer_name’ => false,
‘allow_self_signed’ => true
)
);

// 設定為 SMTP 方式寄信
$mail->IsSMTP();

// SMTP 伺服器的設定,以及驗證資訊
$mail->SMTPAuth = true;
$mail->Host = “mail.XXX.com”; //此處請填寫您的郵件伺服器位置,通常是mail.網址。如果您MX指到外地,那這邊填入www.XXX.com 即可
$mail->Port = 25; //常見主機的郵件伺服器port為 25

// 信件內容的編碼方式
$mail->CharSet = “utf-8”;

// 信件處理的編碼方式
$mail->Encoding = “base64”;

// SMTP 驗證的使用者資訊
$mail->Username = “123@XXX.com”; // 此處為驗証電子郵件帳號,就是您在web主機上新增的電子郵件帳號,@後面請務必一定要打。
$mail->Password = “XXXXOOOO”; //此處為上方電子郵件帳號的密碼 (一定要正確不然會無法寄出)

// 信件內容設定
$mail->From = “123@XXXX.com”; //此處為寄出後收件者顯示寄件者的電子郵件 (請設成與上方驗証電子郵件一樣的位址)
$mail->FromName = “系統測試”; //此處為寄出後收件者顯示寄件者的名稱
$mail->Subject = “PHPMailer寄信測試標題”; //此處為寄出後收件者顯示寄件者的電子郵件標題
$mail->Body = “這是一封測是信件哦!”; //信件內容
$mail->IsHTML(true);

// 收件人
$mail->AddAddress(“XXX@AAA.com”, “XXX系統通知信”); //此處為收件者的電子信箱及顯示名稱

// 顯示訊息
if(!$mail->Send()) {
echo “Mail error: ” . $mail->ErrorInfo;
}else {
echo “Mail sent”;
}
?>

常見問題

如果MAIL的MX不是指向我web的主機怎麼辦?
A:其實這個沒有影響,請您一樣到web主機的CPANEL下去新增一個EMAIL帳號,然後發信主機那邊打入www.YOURdomain.com ,如果您連WWW都還未指向到web的主機,請MAIL主機那邊改打成localhost,然後一樣用你web主機上產生的EMAIL帳密驗證寄出即可

以上不是很清楚該如何使用,請問該問誰?
A: 因為這也只是其中一種的方式,不見得要使用此,可以請詢問下你的程式人員即可

如遇到標題亂碼怎麼辦?
http://samsharehome.blogspot.tw/2009…ler-utf-8.html
http://www.song100e.com/solve-the-ph…rbage-problem/

引用:
$mail->Subject=”某某标题”;
那么,像这样的,你要改成这样:
$mail->Subject = “=?utf-8?B?”.base64_encode(“某某标题”).”?=”;

設定的方式其實蠻多樣化(如下面),但此篇若你想看更多細節可以看下PHPmailer 官方網站
https://github.com/PHPMailer/PHPMailer

若是使用程式的免費外掛,如WP Mail SMTP ?
可以試試看將SMTP改成您的主網址,port改用25試試;但該程式就不是github了,細節會需要詢問提供該程式的廠商

Written by 婷Z

Generation Z,Z世代,愛網路但不沉迷網路,最愛挑戰週末脫離手機4小時

文章有用就該推一下

164 Points
Upvote Downvote
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

PHP 5.3的 PHP Parse error: syntax error, unexpected T_GOTO

我的網站速度變慢了,是不是主機的問題?還是網路的問題?