羅德興老師的教學歷程檔案 - 111-2 三甲 ASP & DB - 寄信程式實作 |
|
|
寄信程式實作以下兩支程式係使用 gmail, 故需準備好您 gmail 的帳密。一、 請將以下寄信程式存成 mailto.php 實作寄信功能 <?php include_once("class.phpmailer.php"); include_once("class.smtp.php"); // 請先將以上兩個 class 儲存在同一個目錄 $mailto="dsluo@cc.cust.edu.tw"; $subject="寄信測試 主旨 您的 學號"; $message="寄信測試 訊息 您的 姓名"; $from="您的姓先生小姐(羅老師)"; $attfile="test.docx"; // 附加檔案名稱,請存在 /ftp 下 mailto($mailto,$subject,$message,$from,$attfile); function mailto($mailto,$subject,$message,$from,$attfile) { // $from : 寄信者 // $mailto : 寄給誰 // $subject : 信件主旨 // $message : 信件內容 // $attfile : 附檔 //$mailto="ven@cc.cust.edu.tw";// for testing $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 = "utf8"; //設定郵件編碼 $mail->Username = "luoxxxx@gmail.com"; //設定你的gmail驗證帳號 $mail->Password = "xyz1234"; //設定你的gmail驗證密碼 $mail->From = "luoxxxx@gmail.com"; //設定你的gmail寄件者信箱 $mail->FromName = "$from"; //設定寄件者姓名 $mail->Subject = $subject; //設定郵件標題 $mail->Body = $message; //設定郵件內容 $mail->IsHTML(true); //設定郵件內容為HTML // $mail->SMTPDebug = 1; // enables SMTP debug information (for testing) // 1 = errors and messages // 2 = messages only $target="./ftp/$attfile"; if ($attfile!=""){ $mail->AddAttachment($target); // 夾檔 } $mail->IsHTML(true); //設定郵件內容為HTML $mail->AddAddress($mailto,$cname); //設定收件者郵件及名稱 $mail->AddAddress($mailto,$cname); //設定收件者郵件及名稱 if (!$mail->Send()) { echo "錯誤囉! Wrong!!"; return false; } { echo "成功了! Successful!!"; return true; } } ?> 二、 使用 PHPMailer 用 smtp 寄信 (資料來源:http://heavenchou.buddhason.org/node/326) SMTP 是簡單郵件傳輸協定(Simple Mail Transfer Protocol) ,這是在 Internet 上傳送 email 的一個協定,意思就是可以用它來寄信。 再度上網查詢,得知可以安裝一個套件 PHPMailer 就可以在 PHP 使用 smtp 寄信。問題來了,我不是主機的擁有者,無法直接安裝此套件。所幸後來找到有人有類似的問題,找到了只要複製幾個重要的檔案,就可以執行的方法了。 下載 PHPMailer PHPMailer 可在此下載 https://github.com/PHPMailer/PHPMailer/releases 因為我使用的是 PHP 5.3 ,所以選 PHPMailer 5.2.27 版。(當時以為 PHPMailer 6.X 是給 PHP 6.X 使用的) 解壓縮後,取出這四個檔案: class.phpmailer.php class.pop3.php class.smtp.php PHPMailerAutoload.php 在 php 程式碼的目錄中建一個子目錄,取名為 phpmailer,將這四個檔案放進去。 撰寫由 GMail SMTP 寄信的程式 在 PHPMailer 的套件中就有不少例子,底下是抄自網路,修改後測試成功的程式碼。 請將以下寄信程式存成 mailto2.php 實作寄信功能 <?php require_once("phpmailer/PHPMailerAutoload.php"); // 產生 Mailer 實體 $mail = new PHPMailer(); // 設定為 SMTP 方式寄信 $mail->IsSMTP(); // SMTP 伺服器的設定,以及驗證資訊 $mail->Host = "smtp.gmail.com"; $mail->Port = 465; $mail->SMTPAuth = true; $mail->SMTPSecure = 'ssl'; // 信件內容的編碼方式 $mail->CharSet = "utf-8"; // 信件處理的編碼方式 $mail->Encoding = "base64"; // SMTP 驗證的使用者資訊 $mail->Username = "myemail@gmail.com"; //mail的帳號(需要完整的mail帳號,含@後都要填寫) $mail->Password = "password"; //密碼 // 信件內容設定 $mail->From = "myemail@gmail.com"; //需要與上述的使用者資訊相同mail $mail->FromName = "myemail"; //此顯示寄件者名稱 $mail->Subject = "信件標題"; //信件主旨 $mail->Body = "這是一封測是信!"; //信件內容 $mail->IsHTML(true); // 收件人 $mail->AddAddress("someone@gmail.com", "someone"); //此為收件者的電子信箱及顯示名稱 // 顯示訊息 if(!$mail->Send()) { echo "Mail error: " . $mail->ErrorInfo; } else { echo "Mail sent"; } ?> 執行後就可以用 gmail 的 smtp 主機寄信了。 有一點要注意,若是要用 gmail 的主機寄信,則 gmail 要設定成「低安全性應用程式存取權」,可在登錄 Google 帳號後,瀏覽此頁說明。 https://myaccount.google.com/lesssecureapps 撰寫由網站主機寄信的程式 上面是由 gmail smtp 寄信的測試,不過實際上還是希望由租用主機的 smtp 寄出,因此要修改一些資料。 首先要在租用的主機上建立一個信箱帳號,我以前都沒有建,因為我都直接把信件轉到 gmail,這次為了要使用主機的 smtp,因此建了帳號,設了密碼,再把上面測試的 php 程式碼修改相關的部份,所幸也測試成功了。 以上就是自行撰寫的 PHP 程式可以使用 smtp 寄信了
|
|
中華科技大學數位化學習歷程 - 意見反應 |