使用 PHP 程式碼來寄送 Mail

1.用PHP內建的mail()函式

一般在發信時入須要先設好您的mail-server,會有問題的大多是windows的系統.在使用這一個函式時如果出現找不到函式那就是您的mail-server相關設定沒有設好.您只要修改您的php.ini就可以了請找到這二行

SMTP = localhost ;
for win32 onlysendmail_from = me@localhost.com ;for win32 onlysmtp

必須要找一台可以提供relay的機器來發信有關主機請自己找相關文件.接下來我們開始談有關mail這一個函式在一封完整的信件中一定會有以下的幾個元件

1.收件人
2.主題
3.信件內容

以要發一封簡單的信件只要把值帶入mail()中就可以了。

例:
mail("收件人","信件主題", 信件內容[, 標頭]);

2.mb_send_mail

基本上mb_send_mail的用法與mail類似,只是mail函式必需隨這所使用的語言,適當地設定mail的檔頭部份所宣告的charset,以及檔頭部份、本文部份的編碼方式,但mb_send_mail可以自動進行這些處理,以下為mb_send_mail的原型與用法:

原型:

bool mb_send_mail ( string $to , string $subject , string $message [, string $additional_headers= NULL [, string $additional_parameter= NULL ]] )

用法:

mb_send_mail("收件人","信件主題", 信件內容[, 標頭]);


3.使用PHPMailer

在 PHP 中可以使用 mail() 函式進行信件的發送,但是前提是您必須使用一個不用驗證即可寄信的 SMTP。
如果您必須使用一個需要帳號、密碼來通過驗證的 SMTP,就不能使用 mail() 函式了。 如果您不想再額外的安裝 PEAR 函式庫,建議您可以採用 opensource 的類別:phpMailer。

phpMailer 官方網站http://phpmailer.codeworxtech.com/

您可以在此下載 phpMailer 的類別: http://phpmailer.codeworxtech.com/index.php?pg=sf&p=dl 建議您依據您使用的 PHP 版本來下載適合的類別。

下載完畢後請解壓縮到指定資料夾中, 其中重要的類別檔案為:, 請將這個檔案放置與寄發信件程式同一層。 以下為使用範例:

include("class.phpmailer.php"); //匯入PHPMailer類別

$mail= new PHPMailer(); //建立新物件
$mail->IsSMTP(); //設定使用SMTP方式寄信
$mail->SMTPAuth = true; //設定SMTP需要驗證
$mail->Host = "XXX.XXX.XXX.XXX"; //設定SMTP主機
$mail->Port = 25; //設定SMTP埠位,預設為25埠。
$mail->CharSet = "big5"; //設定郵件編碼

$mail->Username = "*********"; //設定驗證帳號
$mail->Password = "*********"; //設定驗證密碼

$mail->From = XXX@XXX.XXX.XXX; //設定寄件者信箱
$mail->FromName = "測試人員"; //設定寄件者姓名

$mail->Subject = "PHPMailer 測試信件"; //設定郵件標題
$mail->Body = "大家好, 這是一封測試信件! "; //設定郵件內容
$mail->IsHTML(true); //設定郵件內容為HTML
$mail->AddAddress(123@123, "test"); //設定收件者郵件及名稱

if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}

如此即可通過有驗證的SMTP了,另外phpMailer也可以透過Gmail 的SMTP 發信,其範例如下:

include("class.phpmailer.php"); //匯入PHPMailer類別

$mail= new PHPMailer(); //建立新物件
$mail->IsSMTP(); //設定使用SMTP方式寄信
$mail->SMTPAuth = true; //設定SMTP需要驗證
$mail->SMTPSecure = "ssl"; // Gmail的SMTP主機需要使用SSL連線
$mail->Host = "smtp.gmail.com"; //Gamil的SMTP主機
$mail->Port = 465; //Gamil的SMTP主機的SMTP埠位為465埠。
$mail->CharSet = "big5"; //設定郵件編碼

$mail->Username = "*********"; //設定驗證帳號
$mail->Password = "*********"; //設定驗證密碼

$mail->From = XXX@XXX.XXX.XXX; //設定寄件者信箱
$mail->FromName = "測試人員"; //設定寄件者姓名

$mail->Subject = "PHPMailer 測試信件"; //設定郵件標題
$mail->Body = "大家好,這是一封測試信件! "; //設定郵件內容
$mail->IsHTML(true); //設定郵件內容為HTML
$mail->AddAddress(123@123, "test"); //設定收件者郵件及名稱

if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}

一般來說這樣即可完成使用 Gmail 發信的動作了,但有幾個要注意的事項敘述如下:

1.其中要注意的是Gmail 的 SMTP主機固定位址是 smtp.gmail.com,必須使用 465 埠以 SSL 的方式來連線。
2.有許多朋友可能在測試時還是無法正確連線,若要使用 SSL 的方式進行連線,PHP 必須安裝 OpenSSL 的擴充程式,如此才能正確連線並使用 Gmail 執行寄信的動作。

留言

  1. zhuangasd7781@gmail.com2017年4月18日 凌晨12:26

    您好 照著您的步驟做 我這邊會出現Extension missing: openssl
    註解刪掉了 相關DLL也放到對應位置 還是出現錯訊息 請問該如何解決

    回覆刪除

張貼留言

這個網誌中的熱門文章

c語言-關於#define用法

CMD常用網管指令

PHP 與 JavaScript 之間傳值利用 json