php郵件自動發送

來源:互聯網
上載者:User

<?PHP  //郵件發送  require './mailer/class.phpmailer.php';  require './mailer/class.smtp.php';  date_default_timezone_set('PRC');//設定郵件發送的時間,如果不設定,則會顯示其他區的時間    $mail = new PHPMailer();     //是否啟用smtp的debug進行調試 開發環境建議開啟 生產環境注釋掉即可 預設關閉debug偵錯模式  $mail->SMTPDebug = 3;    //使用smtp鑒權方式發送郵件,當然你可以選擇pop方式 sendmail方式等 本文不做詳解  //可以參考http://phpmailer.github.io/PHPMailer/當中的詳細介紹  $mail->isSMTP();    //smtp需要鑒權 這個必須是true  $mail->SMTPAuth=true;    //連結qq網域名稱郵箱的伺服器位址  $mail->Host = 'smtp.qq.com';    //設定使用ssl加密方式登入鑒權  $mail->SMTPSecure = 'ssl';    //設定ssl串連smtp伺服器的遠程伺服器連接埠號碼 可選465或587  $mail->Port = 465;    //設定寄件者的主機域 可有可無 預設為localhost 內容任意,建議使用你的網域名稱,這裡為預設localhost  $mail->Hostname = 'localhost';    //設定發送的郵件的編碼 可選GB2312   $mail->CharSet = 'UTF-8';    //設定寄件者姓名(暱稱)可為任意內容,不影響回複(設定為qq暱稱即可)  $mail->FromName = 'XXXX';    //smtp登入的帳號 這裡填入qq號即可  $mail->Username ='寄件者的QQ號';    //smtp登入的密碼 這裡填入“獨立密碼” 若為設定“獨立密碼”則填入登入qq的密碼 建議設定“獨立密碼”  $mail->Password = 'QQ郵箱的登入密碼';    //設定寄件者郵箱地址 這裡填入上述提到的“寄件者郵箱”    $mail->From = '寄件者的QQ郵箱';    //郵件內文是否以html方式發送    $mail->isHTML(true);     //設定收件者郵箱地址 該方法有兩個參數 第一個參數為收件者郵箱地址 第二參數為給該地址設定的暱稱 不同的郵箱系統會自動進行處理變動 這裡第二個參數的意義不大    $mail->addAddress('收件者的QQ郵箱地址','QQ暱稱');    //可添加多個收件者  //$mail->addAddress('XXXX@qq.com','XXXXX');    //添加該郵件的主題  $mail->Subject = '這是一個PHPMailer發送郵件的樣本';    //添加郵件內文   $mail->Body = "這是一個<b style=\"color:red;\">PHPMailer</b>發送郵件的一個測試案例";    //為該郵件添加附件 該方法也有兩個參數 第一個參數為附件存放的目錄(相對目錄、或絕對目錄均可)   //第二參數為在郵件附件中該附件的名稱  $mail->addAttachment('./src/20151002.png','test.png');    //同樣該方法可以多次調用 上傳多個附件  //$mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');    //發送命令 返回布爾值   //PS:經過測試,要是收件者不存在.若不出現錯誤依然返回true也就是說在發送之前   //自己需要些方法實現檢測該郵箱是否真實有效  $status = $mail->send();  //簡單的判斷與提示資訊  if($status)   {  echo '發送郵件成功'.date('Y-m-d H:i:s');;  }  else  {  echo '發送郵件失敗,錯誤資訊未:'.$mail->ErrorInfo;  }  ?>

這樣就可以實現郵件的發送了。結果如下:

如果要實現自動發送郵件的話,那麼程式必須能自動的運行。程式在後台自動啟動並執行代碼如下:

<?php  ignore_user_abort(); // 後台運行  set_time_limit(0); // 取消指令碼已耗用時間的逾時上限  $interval=60*30;// 每隔半小時運行,這個間隔時間是可以隨著 需要進行修改  do{   XXXXX            //這裡是你要執行的代碼  sleep($interval); // 休眠半小時  }while(true);  ?>

將發送郵件的代碼和自動啟動並執行代碼結合起來,就可以實現郵件的自動發送:

<?php  //郵件發送  require './mailer/class.phpmailer.php';  require './mailer/class.smtp.php';  date_default_timezone_set('PRC');  ignore_user_abort();//後台運行  set_time_limit(0);//取消指令碼已耗用時間的逾時上限  $interval = 60*1;//每隔一分鐘運行一次(這個可以根據需要來進行調整)  do{  $mail = new PHPMailer();   $mail->SMTPDebug = 3;  $mail->isSMTP();  $mail->SMTPAuth=true;  $mail->Host = 'smtp.qq.com';  $mail->SMTPSecure = 'ssl';  $mail->Port = 465;  $mail->Hostname = 'localhost';  $mail->CharSet = 'UTF-8';    $mail->FromName = 'XXXX';    $mail->Username ='寄件者的QQ號';  $mail->Password = 'QQ郵箱的登入密碼';  $mail->From = '寄件者的QQ郵箱';  $mail->isHTML(true);     $mail->addAddress('收件者的QQ郵箱地址','QQ暱稱');    //$mail->addAddress('XXXX@qq.com','XXXXX');    $mail->Subject = '這是一個PHPMailer發送郵件的樣本';  $mail->Body = "這是一個<b style=\"color:red;\">PHPMailer</b>發送郵件的一個測試案例";  $mail->addAttachment('./src/20151002.png','test.png');  //$mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');  $status = $mail->send();  if($status)   {  echo '發送郵件成功'.date('Y-m-d H:i:s');;  }  else  {  echo '發送郵件失敗,錯誤資訊未:'.$mail->ErrorInfo;  }  sleep($interval);//休眠1minute  }while(true);  ?>

程式運行結果為:

要去掉上面這些資訊,

只保留“發送成功等資訊”

需要在這個檔案修改:class.smtp.PHP

最後得到結果顯示如下:

這樣就實現了郵件的自動發送。當然,根據以上代碼,還可以實現郵件的定時發送。這個的話,就不在此多敘述了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.