最近在做一個項目,需要有郵件發送的功能,伺服器郵件發送的話,伺服器上必須有能連結郵件伺服器,才能實作以下的步驟,現在就給大家分享一下,專門做了一個郵件的發送類
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>->CharSet = </code><code>'UTF-8'</code><code>; </code><code>//設定郵件編碼,預設ISO-8859-1,如果發中文此項必須設定,否則亂碼</code>
<code> </code><code>$mail</code><code>->IsSMTP(); </code><code>// 設定使用SMTP服務</code>
<code> </code><code>$mail</code><code>->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>->SMTPAuth = true; </code><code>// 啟用 SMTP 驗證功能</code>
<code> </code><code>$mail</code><code>->SMTPSecure = </code><code>'ssl'</code><code>; </code><code>// 使用安全協定</code>
<code> </code><code>$mail</code><code>->Host = </code><code>$config</code><code>[</code><code>'SMTP_HOST'</code><code>]; </code><code>// SMTP 伺服器</code>
<code> </code><code>$mail</code><code>->Port = </code><code>$config</code><code>[</code><code>'SMTP_PORT'</code><code>]; </code><code>// SMTP伺服器的端口号</code>
<code> </code><code>$mail</code><code>->Username = </code><code>$config</code><code>[</code><code>'SMTP_USER'</code><code>]; </code><code>// SMTP伺服器使用者名</code>
<code> </code><code>$mail</code><code>->Password = </code><code>$config</code><code>[</code><code>'SMTP_PASS'</code><code>]; </code><code>// SMTP伺服器密碼</code>
<code> </code><code>$mail</code><code>->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>->AddReplyTo(</code><code>$replyEmail</code><code>, </code><code>$replyName</code><code>);</code>
<code> </code><code>$mail</code><code>->Subject = </code><code>$subject</code><code>;</code>
<code> </code><code>$mail</code><code>->MsgHTML(</code><code>$body</code><code>);</code>
<code> </code><code>$mail</code><code>->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>) && </code><code>$mail</code><code>->AddAttachment(</code><code>$file</code><code>);</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>return</code> <code>$mail</code><code>->Send() ? true : </code><code>$mail</code><code>->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>=> </code><code>array</code><code>(</code>
<code> </code><code>'SMTP_HOST'</code> <code>=> </code><code>'smtp.aaa.com'</code><code>, </code><code>//SMTP伺服器</code>
<code> </code><code>'SMTP_PORT'</code> <code>=> </code><code>'465'</code><code>, </code><code>//SMTP伺服器端口</code>
<code> </code><code>'SMTP_USER'</code> <code>=> </code><code>'[email protected]'</code><code>, </code><code>//SMTP伺服器使用者名</code>
<code> </code><code>'SMTP_PASS'</code> <code>=> </code><code>'password'</code><code>, </code><code>//SMTP伺服器密碼</code>
<code> </code><code>'FROM_EMAIL'</code> <code>=> </code><code>'[email protected]'</code><code>, </code><code>//發件人EMAIL</code>
<code> </code><code>'FROM_NAME'</code> <code>=> </code><code>'ThinkPHP'</code><code>, </code><code>//發件人名稱</code>
<code> </code><code>'REPLY_EMAIL'</code> <code>=> </code><code>''</code><code>, </code><code>//回複EMAIL(留白則為發件人EMAIL)</code>
<code> </code><code>'REPLY_NAME'</code> <code>=> </code><code>''</code><code>, </code><code>//回複名稱(留白則為發件人名稱)</code>
<code> </code><code>),</code>
<code></code>
本文轉自 3147972 51CTO部落格,原文連結:http://blog.51cto.com/a3147972/1221287,如需轉載請自行聯系原作者