羅德興老師的教學歷程檔案 - 107-2 資料庫系統實作 - 日四技資管三甲-Unit A- 寄信+註冊確認 (使用檔案非資料庫) |
|
|
日四技資管三甲-Unit A- 寄信+註冊確認 (使用檔案非資料庫)Unit A- 寄信+註冊確認 (使用檔案非資料庫) 1. 以下兩支程式會使用到 gmail 的 SMTP, 故需準備好您 gmail 的帳密,且要將 其 帳戶存取權 變更為 低安全性應用程式 (參考本頁底下的 p.s.)。 2. 程式內使用 cc.cust.edu.tw/~dsluo 請改為 ccs.cust.edu.tw/~XXXXXX (XXXXXX 為您的學號) 3. 使用 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 可以選 PHPMailer 5.2.27 版。 解壓縮後,取出這四個檔案: class.phpmailer.php class.pop3.php class.smtp.php PHPMailerAutoload.php 在 php 程式碼的目錄中建一個子目錄,取名為 phpmailer,將這四個檔案放進去。 一、第一支寄信程式,可命名為 infosend6.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 = "XXXXXX@gmail.com"; //mail的帳號(需要完整的mail帳號,含@後都要填寫) $mail->Password = "XXXXXX"; //密碼 // 信件內容設定 $mail->From = "XXXXXX@gmail.com"; //需要與上述的使用者資訊相同mail $mail->FromName = "my-email 107XXXXXX"; //此顯示寄件者名稱 $mail->Subject = "信件標題"; //信件主旨 $mail->Body = "這是一封測試信!"; //信件內容 $mail->IsHTML(true); // 收件人 $mail->AddAddress("yyyy@yyy.yy.yyy.tw", "someone"); //此為收件者的電子信箱及顯示名稱 // 顯示訊息 if(!$mail->Send()) { echo "Mail error: " . $mail->ErrorInfo; } else { echo "Mail sent"; } ?> 二、第二支寄信+註冊確認 (使用檔案非資料庫) 程式,可命名為 infosend8.php <?php // 四、由於 localhost無法寄信,必須利用ccs才能寄信, // 但ccs上沒有MySQL,因此,將資料庫的部分改成檔案 // 範例程式 require_once("../phpmailer/PHPMailerAutoload.php"); $ccode=$_GET["ccode"]; $mailto=$_GET["mailto"]; $command=$_POST["command"]; if ($command=="" && $ccode=="") { display_first_page(); } elseif ($command=="註冊") { display_register_page(); } elseif ($command=="" && $ccode<>"") { display_confirm_page(); } function display_first_page() { echo "<html><body><center> <font color='red'><h1> 註冊後系統會寄一封確認信至您的信箱,開啟信箱後直接點擊超連結確認成功才能啟用帳號<br> </h1></font><table border=1 bordercolor='black' width=100%> <form method='post' action=''> <tr><td bgcolor='#ccccff'>電子郵件帳號</td> <td><input type='text' name='mailto' size=50></td></tr> <tr><td bgcolor='#ccccff'>姓名</td> <td><input type='text' name='cname' size=50></td></tr></table> <input type='submit' name='command' value='註冊'> </form></center></body></html>"; } function display_register_page() { global $mailto,$ccode,$cname,$subject,$message; $mailto=$_POST["mailto"]; $cname=$_POST["cname"]; if ($mailto=="" || $cname=="") { echo "電子郵件與姓名欄不能空白,請回前頁重新輸入"; die(); } // 儲存電子郵件帳號與密碼到檔案 $ccode=md5(uniqid(rand())); // 產生唯一的識別碼 //打開文件流 $fp=fopen("test.txt","w") or die("無法開啟檔案 Unable to open file!"); //向文件中寫入字符串 // fwrite($myfile, "Hello World"); fputs($fp,$mailto); fputs($fp,"\r\n"); fputs($fp,$ccode); fputs($fp,"\r\n"); fclose($fp); // 關閉文件 $filename=basename($_SERVER['PHP_SELF']); $message="$cname 君您好<br><br>"; $message.=" 請直接點擊下列超連結來確認此註冊信<br><br>"; $message.="<a href='http://cc.cust.edu.tw/~dsluo/mydb/$filename?ccode=$ccode&mailto=$mailto' > http://cc.cust.edu.tw/~dsluo/mydb/$filename?ccode=$ccode&mailto=$mailto </a>"; $subject = "註冊確認"; $m_ok = display_sendmail_page(); if(!$m_ok) { echo "$cname 君,寄送郵件有誤!! Mail error: "; } else { echo "$cname 君,您的確認信已寄出! "; } } function display_confirm_page() { echo "完成此程式作確認動作, 首先 get email 與 ccode<br> 再由stmd中查詢email並取出ccode與get出來的ccode比較<br> 如果ccode一樣則將valid設為Y表示註冊確認成功"; } function display_sendmail_page() { require_once("../phpmailer/PHPMailerAutoload.php"); global $mailto,$ccode,$cname,$subject,$message; $mailto=$_POST["mailto"]; $cname=$_POST["cname"]; if ($mailto=="" || $cname=="") { echo "電子郵件與姓名欄不能空白,請回前頁重新輸入"; die(); } // 儲存電子郵件帳號與密碼 $ccode=md5(uniqid(rand())); // 產生唯一的識別碼 $fp=fopen("test.txt","w"); fputs($fp,$mailto); fputs($fp,"\r\n"); fputs($fp,$ccode); fputs($fp,"\r\n"); fclose($fp); $filename=basename($_SERVER['PHP_SELF']); $message="$cname 君,歡迎您加入 <br><br>"; $message.=" 請直接點擊下列超連結來確認此註冊信<br><br>"; $message.="<a href='http://cc.cust.edu.tw/~dsluo/mydb/$filename?ccode=$ccode&mailto=$mailto' > http://cc.cust.edu.tw/~dsluo/mydb/$filename?ccode=$ccode&mailto=$mailto </a>"; $subject = "(標題) $cname 君 註冊確認"; // 產生 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 = "XXXXXX@gmail.com"; //mail的帳號(需要完整的mail帳號,含@後都要填寫) $mail->Password = "XXXXXX"; //密碼 // 信件內容設定 $mail->From = "XXXXXX@gmail.com"; //需要與上述的使用者資訊相同mail $mail->FromName = "my-email 107XXXX"; //此顯示寄件者名稱,您的學號 $mail->Subject = "$subject"; //信件主旨 $mail->Body = "$message"; //信件內容 $mail->IsHTML(true); // 收件人 $mail->AddAddress("$mailto", "$cname"); //此為收件者的電子信箱及顯示名稱 // 顯示訊息 if(!$mail->Send()) { echo "寄送郵件有誤!! Mail error: " . $mail->ErrorInfo; return false; } else { return true; echo "Mail sent. 謝謝 $cname 君,您的確認信已寄出! "; } } ?> p.s. 變更低安全性應用程式的帳戶存取權 為提升公司、學校或其他團體專用 Google 帳戶的安全性,我們會禁止部分低安全性應用程式存取 Google 帳戶。如果您嘗試登入這類型的帳戶,就會看到「密碼不正確」的錯誤訊息。這時有兩種解決方法:
|
|
中華科技大學數位化學習歷程 - 意見反應 |