天天看點

ThinkPHP郵件發送類

    最近在做一個項目,需要有郵件發送的功能,伺服器郵件發送的話,伺服器上必須有能連結郵件伺服器,才能實作以下的步驟,現在就給大家分享一下,專門做了一個郵件的發送類

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

<code>/**</code>

<code> </code><code>* 系統郵件發送函數</code>

<code> </code><code>* @param string $to    接收郵件者郵箱</code>

<code> </code><code>* @param string $name  接收郵件者名稱</code>

<code> </code><code>* @param string $subject 郵件主題</code>

<code> </code><code>* @param string $body    郵件内容</code>

<code> </code><code>* @param string $attachment 附件清單</code>

<code> </code><code>* @return boolean</code>

<code> </code><code>*/</code>

<code> </code><code>function</code> <code>think_send_mail(</code><code>$to</code><code>, </code><code>$name</code><code>, </code><code>$subject</code> <code>= </code><code>''</code><code>, </code><code>$body</code> <code>= </code><code>''</code><code>, </code><code>$attachment</code> <code>= null){</code>

<code>    </code><code>$config</code> <code>= C(</code><code>'THINK_EMAIL'</code><code>);</code>

<code>    </code><code>vendor(</code><code>'PHPMailer.class#phpmailer'</code><code>); </code><code>//從PHPMailer目錄導class.phpmailer.php類檔案</code>

<code>    </code><code>$mail</code>             <code>= </code><code>new</code> <code>PHPMailer(); </code><code>//PHPMailer對象</code>

<code>    </code><code>$mail</code><code>-&gt;CharSet    = </code><code>'UTF-8'</code><code>; </code><code>//設定郵件編碼,預設ISO-8859-1,如果發中文此項必須設定,否則亂碼</code>

<code>    </code><code>$mail</code><code>-&gt;IsSMTP();  </code><code>// 設定使用SMTP服務</code>

<code>    </code><code>$mail</code><code>-&gt;SMTPDebug  = 0;                     </code><code>// 關閉SMTP調試功能</code>

<code>                                               </code><code>// 1 = errors and messages</code>

<code>                                               </code><code>// 2 = messages only</code>

<code>    </code><code>$mail</code><code>-&gt;SMTPAuth   = true;                  </code><code>// 啟用 SMTP 驗證功能</code>

<code>    </code><code>$mail</code><code>-&gt;SMTPSecure = </code><code>'ssl'</code><code>;                 </code><code>// 使用安全協定</code>

<code>    </code><code>$mail</code><code>-&gt;Host       = </code><code>$config</code><code>[</code><code>'SMTP_HOST'</code><code>];  </code><code>// SMTP 伺服器</code>

<code>    </code><code>$mail</code><code>-&gt;Port       = </code><code>$config</code><code>[</code><code>'SMTP_PORT'</code><code>];  </code><code>// SMTP伺服器的端口号</code>

<code>    </code><code>$mail</code><code>-&gt;Username   = </code><code>$config</code><code>[</code><code>'SMTP_USER'</code><code>];  </code><code>// SMTP伺服器使用者名</code>

<code>    </code><code>$mail</code><code>-&gt;Password   = </code><code>$config</code><code>[</code><code>'SMTP_PASS'</code><code>];  </code><code>// SMTP伺服器密碼</code>

<code>    </code><code>$mail</code><code>-&gt;SetFrom(</code><code>$config</code><code>[</code><code>'FROM_EMAIL'</code><code>], </code><code>$config</code><code>[</code><code>'FROM_NAME'</code><code>]);</code>

<code>    </code><code>$replyEmail</code>       <code>= </code><code>$config</code><code>[</code><code>'REPLY_EMAIL'</code><code>]?</code><code>$config</code><code>[</code><code>'REPLY_EMAIL'</code><code>]:</code><code>$config</code><code>[</code><code>'FROM_EMAIL'</code><code>];</code>

<code>    </code><code>$replyName</code>        <code>= </code><code>$config</code><code>[</code><code>'REPLY_NAME'</code><code>]?</code><code>$config</code><code>[</code><code>'REPLY_NAME'</code><code>]:</code><code>$config</code><code>[</code><code>'FROM_NAME'</code><code>];</code>

<code>    </code><code>$mail</code><code>-&gt;AddReplyTo(</code><code>$replyEmail</code><code>, </code><code>$replyName</code><code>);</code>

<code>    </code><code>$mail</code><code>-&gt;Subject    = </code><code>$subject</code><code>;</code>

<code>    </code><code>$mail</code><code>-&gt;MsgHTML(</code><code>$body</code><code>);</code>

<code>    </code><code>$mail</code><code>-&gt;AddAddress(</code><code>$to</code><code>, </code><code>$name</code><code>);</code>

<code>    </code><code>if</code><code>(</code><code>is_array</code><code>(</code><code>$attachment</code><code>)){ </code><code>// 添加附件</code>

<code>        </code><code>foreach</code> <code>(</code><code>$attachment</code> <code>as</code> <code>$file</code><code>){</code>

<code>            </code><code>is_file</code><code>(</code><code>$file</code><code>) &amp;&amp; </code><code>$mail</code><code>-&gt;AddAttachment(</code><code>$file</code><code>);</code>

<code>        </code><code>}</code>

<code>    </code><code>}</code>

<code>    </code><code>return</code> <code>$mail</code><code>-&gt;Send() ? true : </code><code>$mail</code><code>-&gt;ErrorInfo;</code>

<code> </code><code>}</code>

此函數隻能在ThinkPHP中使用且需要phpmailer擴充的支援;

phpmailer擴充的放置目錄為 ThinkPHP/Extend/Vendor/PHPMailer/class.phpmailer.php

phpmail的下載下傳位址:

<a href="https://code.google.com/a/apache-extras.org/p/phpmailer" target="_blank">https://code.google.com/a/apache-extras.org/p/phpmailer</a>

使用此函數 必須在項目中加入以下配置項

<code>//郵件配置</code>

<code> </code><code>'THINK_EMAIL'</code> <code>=&gt; </code><code>array</code><code>(</code>

<code>    </code><code>'SMTP_HOST'</code>   <code>=&gt; </code><code>'smtp.aaa.com'</code><code>, </code><code>//SMTP伺服器</code>

<code>    </code><code>'SMTP_PORT'</code>   <code>=&gt; </code><code>'465'</code><code>, </code><code>//SMTP伺服器端口</code>

<code>    </code><code>'SMTP_USER'</code>   <code>=&gt; </code><code>'[email protected]'</code><code>, </code><code>//SMTP伺服器使用者名</code>

<code>    </code><code>'SMTP_PASS'</code>   <code>=&gt; </code><code>'password'</code><code>, </code><code>//SMTP伺服器密碼</code>

<code>    </code><code>'FROM_EMAIL'</code>  <code>=&gt; </code><code>'[email protected]'</code><code>, </code><code>//發件人EMAIL</code>

<code>    </code><code>'FROM_NAME'</code>   <code>=&gt; </code><code>'ThinkPHP'</code><code>, </code><code>//發件人名稱</code>

<code>    </code><code>'REPLY_EMAIL'</code> <code>=&gt; </code><code>''</code><code>, </code><code>//回複EMAIL(留白則為發件人EMAIL)</code>

<code>    </code><code>'REPLY_NAME'</code>  <code>=&gt; </code><code>''</code><code>, </code><code>//回複名稱(留白則為發件人名稱)</code>

<code> </code><code>),</code>

<code></code>

本文轉自 3147972 51CTO部落格,原文連結:http://blog.51cto.com/a3147972/1221287,如需轉載請自行聯系原作者