说起来还真不好意思.弄个邮件左左右右差不多弄了2周, 当然了, 我请了一周的假期.我们公司的邮件发不出去了, 原来的邮件是用的php自带的mail()函数.可能是配置问题吧.这个不是我要处理的问题, 暂且不去找原因了, 解决办法,就是用一个smtp 发邮件的插件,来处理,要发送的内容,主题都不用改动!
首先去网上下载一个phpmailer的插件,下载地址:
https://github.com/PHPMailer/PHPMailer/archive/master.zip
解压后的目录结构是这个样子的.这里面不是所有的都系有是游泳的, 我们只保留其中的几个文件class.phpmailer.php,class.smtp.php和phpMailerAutoload.php
如果只是用来测试的话, 我们就单独一个文件实例化这个phpmailer类,就可以发送邮件了, 下面是我做测试的时候的代码:
sendmail.php
<pre name="code" class="php"><?php
require_once('class.phpmailer.php');
require_once('class.smtp.php');
function SendMail($mailaddress,$headers){
$mail = new PHPMailer();
$mail->SMTPDebug = 100; // debug选项
$mail->CharSet = "UTF-8"; // 设置编码
$mail->IsSMTP();
$mail->SMTPAuth = true; // 设置为安全验证方式
$mail->Host = "smtp.qq.com"; // SMTP服务器地址
$mail->Username = "76119622@qq.com"; // 登录用户名
$mail->Password = "xubo"; // 登录密码
$mail->From = "76119622@qq.com"; // 发件人地址(username@163.com)
$mail->FromName = "测试名称";
$mail->WordWrap = 50;
$mail->IsHTML(true); // 是否支持html邮件,true 或false
$mail->AddAddress($mailaddress); //客户邮箱地址
$mail->Subject = '测试主题';
$mail->Body = '测试邮件内容使用phpmailer插件发送邮件.';
$mail->AddCustomHeader($headers);
if(!$mail->Send()){
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
return FALSE;
}
return TRUE;
}
//方法调用
$mailaddress = "xubo_sh@sina.com" ;
$headers='';
SendMail($mailaddress,$headers);
?>
这里我测试的只是一些发邮件的的常用功能,phpmailer本身也很强大有很多方法可以使用, phpmailer类的具体方法请参详:http://blog.csdn.net/teddrummer/article/details/4752134;
这样只要运行这个sendmail.php 就会向你指定的邮箱送邮件了.下一步是要在框架里面使用这个插件,大家用的框架可能不同, 所用使用的方法也不同,我说以下,在cakephp卡un框架中使用这个插件, 在cakephp使用这个插件有很多中方法, 可以在Appcontroller里面来调用, 也可以直接在要使用的controller里面require来调用,还可以用框架本身的App::uses或者App::import来调用插件,我用的是第二种方法,因为对cakephp框架不熟悉中间除了很多错误;首先要把这个插件放到app/vendor下面, 这个文件夹是专门用来存放第三方插件的, 之后我们在用的方法里面写一个方法来实例化这个phpmailer类实例化方法SendMail()和测试时候写的差不多, 就不在写了, 但是require_once要写在方法里面.之后在想要发邮件的时候来调用这个方法就可以了$this->sendmail(参数1,参数2)具体的要设置几个参数要可实际情况来修改SendMail()方法.