首页 > 代码库 > ThinkPHP中邮件发送功能

ThinkPHP中邮件发送功能

初次使用thinkphp框架,开发一个邮件发送功能,由于对框架不熟悉折腾了几个小时终于成功了,以下是代码记录。

此函数只能在ThinkPHP中使用且需要phpmailer扩展的支持;
phpmail的下载地址:
https://code.google.com/a/apache-extras.org/p/phpmailer

将phpmailer解压后放置扩展放置到第三方类库扩展目录下: ThinkPHP/Extend/Vendor/文件夹下即可,并使用vendor方法来导入。更详细介绍参考:http://document.thinkphp.cn/manual_3_2.html#lib_extend

步骤1:创建think_send_mail方法

 /**
 * 系统邮件发送函数
 * @param string $to    接收邮件者邮箱
 * @param string $name  接收邮件者名称
 * @param string $subject 邮件主题 
 * @param string $body    邮件内容
 * @return boolean 
 */
function think_send_mail($to, $name, $subject = ‘‘, $body = ‘‘){
    vendor(‘PHPMailer.class#phpmailer‘); //从PHPMailer目录导class.phpmailer.php类文件
    $mail = new \PHPMailer;//此处必须加“\”号否则报错

        // Inform class to use SMTP
        $mail->IsSMTP();

        // Enable this for Testing
        $mail->SMTPDebug  = 2;

        // Enable SMTP Authentication
        $mail->SMTPAuth   = true;

        // Host of the SMTP Server
        $mail->Host = ‘smtp.126.com‘;//SMTP服务器用户名

        // Port of the SMTP Server
        $mail->Port = 25;//SMTP服务器端口

        // SMTP User Name
        $mail->Username   = "my_email_test@126.com";//邮箱地址

        // SMTP User Password
        $mail->Password = "********";//邮箱密码

        // Set From Email Address
        $mail->SetFrom("my_email_test@126.com", $name);

        // Add Subject
        $mail->Subject= $subject;

        // Add the body for mail
        $mail->MsgHTML($body);

        // Add To Address
        $mail->AddAddress($to, $name);


        // Finally Send the Mail
        return $mail->Send() ? true : $mail->ErrorInfo;
}

步骤2:在控制器调用即可

namespace Account\Controller;
use Think\Controller;
class AccountController extends Controller {
    //调用发送邮件功能
public function getPwd(){
        
         $toEmail =$_POST[‘email‘];
         $subJect=‘邮件主题‘;
         $body=‘邮件内容‘;
         $name=‘发件人名称‘;
         $result=$this->think_send_mail($toEmail,‘sever‘,$subJect,$body);
         if($result)
             echo "ok";
         else
             echo "failed";

    }
   
}