羅德興老師的教學歷程檔案 - 111-2 三甲 ASP & DB - 寄信程式實作
 

企業資訊與管理系
助理教授/日導
羅德興


歷程檔案 Portfolio

    寄信程式實作

    以下兩支程式係使用 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 寄信了
     
    全部共 0則留言
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

    中華科技大學數位化學習歷程 - 意見反應