PHP實現郵件的自動發送

來源:互聯網
上載者:User

標籤:attribute   debug   .net   interval   影響   efault   deb   定時   nbsp   

最近做一個郵箱驗證的功能,研究了一會,搞定了郵件的自動發送。下面用qq郵箱作為示範,一步一步來解釋:

代碼

首先,就是做到郵件的發送,代碼如下:

[html] view plain copy 
  1. <?PHP  
  2. //郵件發送  
  3. require ‘./mailer/class.phpmailer.php‘;  
  4. require ‘./mailer/class.smtp.php‘;  
  5. date_default_timezone_set(‘PRC‘);//設定郵件發送的時間,如果不設定,則會顯示其他區的時間  
  6.   
  7. $mail = new PHPMailer();   
  8.   
  9. //是否啟用smtp的debug進行調試 開發環境建議開啟 生產環境注釋掉即可 預設關閉debug偵錯模式  
  10. $mail->SMTPDebug = 3;  
  11.   
  12. //使用smtp鑒權方式發送郵件,當然你可以選擇pop方式 sendmail方式等 本文不做詳解  
  13. //可以參考http://phpmailer.github.io/PHPMailer/當中的詳細介紹  
  14. $mail->isSMTP();  
  15.   
  16. //smtp需要鑒權 這個必須是true  
  17. $mail->SMTPAuth=true;  
  18.   
  19. //連結qq網域名稱郵箱的伺服器位址  
  20. $mail->Host = ‘smtp.qq.com‘;  
  21.   
  22. //設定使用ssl加密方式登入鑒權  
  23. $mail->SMTPSecure = ‘ssl‘;  
  24.   
  25. //設定ssl串連smtp伺服器的遠程伺服器連接埠號碼 可選465或587  
  26. $mail->Port = 465;  
  27.   
  28. //設定寄件者的主機域 可有可無 預設為localhost 內容任意,建議使用你的網域名稱,這裡為預設localhost  
  29. $mail->Hostname = ‘localhost‘;  
  30.   
  31. //設定發送的郵件的編碼 可選GB2312   
  32. $mail->CharSet = ‘UTF-8‘;  
  33.   
  34. //設定寄件者姓名(暱稱)可為任意內容,不影響回複(設定為qq暱稱即可)  
  35. $mail->FromName = ‘XXXX‘;  
  36.   
  37. //smtp登入的帳號 這裡填入qq號即可  
  38. $mail->Username =‘寄件者的QQ號‘;  
  39.   
  40. //smtp登入的密碼 這裡填入“獨立密碼” 若為設定“獨立密碼”則填入登入qq的密碼 建議設定“獨立密碼”  
  41. $mail->Password = ‘QQ郵箱的登入密碼‘;  
  42.   
  43. //設定寄件者郵箱地址 這裡填入上述提到的“寄件者郵箱”  
  44.   
  45. $mail->From = ‘寄件者的QQ郵箱‘;  
  46.   
  47. //郵件內文是否以html方式發送    
  48. $mail->isHTML(true);   
  49.   
  50. //設定收件者郵箱地址 該方法有兩個參數 第一個參數為收件者郵箱地址 第二參數為給該地址設定的暱稱 不同的郵箱系統會自動進行處理變動 這裡第二個參數的意義不大  
  51.   
  52. $mail->addAddress(‘收件者的QQ郵箱地址‘,‘QQ暱稱‘);  
  53.   
  54. //可添加多個收件者  
  55. //$mail->addAddress(‘[email protected]‘,‘XXXXX‘);  
  56.   
  57. //添加該郵件的主題  
  58. $mail->Subject = ‘這是一個PHPMailer發送郵件的樣本‘;  
  59.   
  60. //添加郵件內文   
  61. $mail->Body = "這是一個<b style=\"color:red;\">PHPMailer</b>發送郵件的一個測試案例";  
  62.   
  63. //為該郵件添加附件 該方法也有兩個參數 第一個參數為附件存放的目錄(相對目錄、或絕對目錄均可)   
  64. //第二參數為在郵件附件中該附件的名稱  
  65. $mail->addAttachment(‘./src/20151002.png‘,‘test.png‘);  
  66.   
  67. //同樣該方法可以多次調用 上傳多個附件  
  68. //$mail->addAttachment(‘./Jlib-1.1.0.js‘,‘Jlib.js‘);  
  69.   
  70. //發送命令 返回布爾值   
  71. //PS:經過測試,要是收件者不存在.若不出現錯誤依然返回true也就是說在發送之前   
  72. //自己需要些方法實現檢測該郵箱是否真實有效  
  73. $status = $mail->send();  
  74. //簡單的判斷與提示資訊  
  75. if($status)   
  76. {  
  77. echo ‘發送郵件成功‘.date(‘Y-m-d H:i:s‘);;  
  78. }  
  79. else  
  80. {  
  81. echo ‘發送郵件失敗,錯誤資訊未:‘.$mail->ErrorInfo;  
  82. }  
  83. ?>  

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

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

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

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

 

 

[html] view plain copy 
  1. <?php  
  2. //郵件發送  
  3. require ‘./mailer/class.phpmailer.php‘;  
  4. require ‘./mailer/class.smtp.php‘;  
  5. date_default_timezone_set(‘PRC‘);  
  6. ignore_user_abort();//後台運行  
  7. set_time_limit(0);//取消指令碼已耗用時間的逾時上限  
  8. $interval = 60*1;//每隔一分鐘運行一次(這個可以根據需要來進行調整)  
  9. do{  
  10. $mail = new PHPMailer();   
  11. $mail->SMTPDebug = 3;  
  12. $mail->isSMTP();  
  13. $mail->SMTPAuth=true;  
  14. $mail->Host = ‘smtp.qq.com‘;  
  15. $mail->SMTPSecure = ‘ssl‘;  
  16. $mail->Port = 465;  
  17. $mail->Hostname = ‘localhost‘;  
  18. $mail->CharSet = ‘UTF-8‘;  
  19.   
  20. $mail->FromName = ‘XXXX‘;  
  21.   
  22. $mail->Username =‘寄件者的QQ號‘;  
  23. $mail->Password = ‘QQ郵箱的登入密碼‘;  
  24. $mail->From = ‘寄件者的QQ郵箱‘;  
  25. $mail->isHTML(true);   
  26.   
  27. $mail->addAddress(‘收件者的QQ郵箱地址‘,‘QQ暱稱‘);  
  28.   
  29. //$mail->addAddress(‘[email protected]‘,‘XXXXX‘);  
  30.   
  31. $mail->Subject = ‘這是一個PHPMailer發送郵件的樣本‘;  
  32. $mail->Body = "這是一個<b style=\"color:red;\">PHPMailer</b>發送郵件的一個測試案例";  
  33. $mail->addAttachment(‘./src/20151002.png‘,‘test.png‘);  
  34. //$mail->addAttachment(‘./Jlib-1.1.0.js‘,‘Jlib.js‘);  
  35. $status = $mail->send();  
  36. if($status)   
  37. {  
  38. echo ‘發送郵件成功‘.date(‘Y-m-d H:i:s‘);;  
  39. }  
  40. else  
  41. {  
  42. echo ‘發送郵件失敗,錯誤資訊未:‘.$mail->ErrorInfo;  
  43. }  
  44. sleep($interval);//休眠1minute  
  45. }while(true);  
  46. ?>  


 

程式運行結果為:

 

要去掉上面這些資訊,

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

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

 

最後得到結果顯示如下:

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

參考文獻:

https://github.com/PHPMailer/PHPMailer

http://blog.csdn.NET/whq19890827/article/details/48630061

http://www.helloweba.com/view-blog-205.html

http://blog.jjonline.cn/phptech/162.html

http://blog.wpjam.com/m/phpmailer/

http://blog.51yip.com/php/910.html/comment-page-1


 

引用:http://blog.csdn.NET/whq19890827/article/details/48862039

 

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.