天天看点

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,如需转载请自行联系原作者