使用phpmailer发送邮件
参考:http://www.cnblogs.com/bigzhangxy/archive/2008/06/16/1223229.html
http://blog.csdn.net/ggggqqqqihc/article/details/2335536
我自己工作中用到的代码总结一下:
1、下载phpmailer类库
2、发送邮件函数
//发邮件函数 function sendMail($to, $subject, $content) { global $Config; //smtp配置 include_once "/phpmailer/includes/classes/class.phpmailer.php";//引入phpmailer类库 $mail = new PHPMailer (); $mail->SetLanguage ( 'gb','/phpmailer/includes/classes/' ); $mail->IsSMTP (); // set mailer to use SMTP $mail->Host = $Config ['smtp_host']; // specify main and backup server $mail->IsHTML ( true ); $mail->SMTPAuth = true; // turn on SMTP authentication $mail->Username = $Config ['smtp_user']; // SMTP username $mail->Password = $Config ['smtp_passwd']; // SMTP password $mail->SMTPDebug = false; $mail->CharSet = $Config ['smtp_tocharset']; //'gb2312'; // 这里指定字符集! $mail->Encoding = "base64"; $mail->From = $Config ['smtp_from']; $mail->FromName = mb_convert_encoding ( $Config ['smtp_from_name'], $mail->CharSet, $Config ['smtp_charset'] ); $mail->AddAddress ( "$to", "" ); $mail->Subject = mb_convert_encoding ( $subject, $mail->CharSet, $Config ['smtp_charset'] ); $mail->Body = mb_convert_encoding ( $content, $mail->CharSet, $Config ['smtp_charset'] ); @$mail->Send (); }
在$Config中配置发送邮件的一些参数,如:
$Config['smtp_host'] = 'smtp.163.com'; //邮件服务器,这里使用网易的邮件服务器 $Config['smtp_user'] = 'xxx'; //用户名; 即网易邮件的用户名 $Config['smtp_passwd'] ='xxx' //密码;即网易邮件密码 $Config['smtp_from'] = 'xxx'; //发件人邮箱 $Config['smtp_from_name'] = 'xxx'; //邮件标题 $Config['smtp_tocharset'] = 'utf-8'; $Config['smtp_charset'] = 'utf-8';
3、发送邮件(例如:发送修改用户密码的邮件)
$memcache = new Memcache (); $memcache->connect ( $Config ['memcache'] ['host'], $Config ['memcache'] ['port'] ); $rcode = CreateRandomCode (); //产生随机码方法 $subject = "通过邮件重设密码"; $url = "http://xxx.com/resetpwdbyemail.php?uid=".$uid."&rcode=" . $rcode; //修改密码的地址 $filename = "changesuperpwdbyemail.php"; //邮件内容文件 $content = emailContents ( $filename, $passport, $url ); //组织邮件的内容 sendMail ( $email, $subject, $content ); //发送邮箱 $memcache->set ( $uid . '_rcode_' . $rcode, array ('passport' => $passport, 'email' => $email, 'rcode' => $rcode, 'clientinfo'=>$clientinfo ), false, 259200 ); //通过缓存来控制链接的有效性。
其中 changesuperpwdbyemail.php 文件内容如下:
<head> <title>通行证重设密码</title> </head> <body> 新爱的用户,您好:<br> <p>请您 <a href="{$url}">点击此处</a>更改密码</p> 如果点击链接不工作,请您选择并复制下面的链接,打开浏览器窗口并将其粘贴到地址栏中,然后点击“转到”按钮或键盘上的回车键。<br> 复制链接为:<br> {$url}<br> <p>为了确保您的账号安全,此链接仅3天内访问有效。<br> 如果改链接失效,请点击找回密码。<br><br> ------------------------------------------------------------------------<br> 请勿直接回复该邮件,更多帮助请访问:</p> </body> </html>
使用 emailContents 方法将上面文件内容的$url替换成修改密码的url,将文本内容作为邮件内容发送。
//取得模板页email function emailContents($filename, $passport, $url) { $contents = file_get_contents ( $filename ); $contents = str_replace ( '{$name}', $passport, $contents ); $contents = str_replace ( '{$url}', $url, $contents ); return $contents; }
收到的邮件内容如下:
新爱的用户,您好: 请您 点击此处更改密码 如果点击链接不工作,请您选择并复制下面的链接,打开浏览器窗口并将其粘贴到地址栏中,然后点击“转到”按钮或键盘上的回车键。 复制链接为: http://xxx.com/resetpwdbyemail.php?uid=19&rcode=31ef7aefdc8bb77f44e43198b55d605e7b4874f7 为了确保您的账号安全,此链接仅3天内访问有效。 如果改链接失效,请点击找回密码。 ------------------------------------------------------------------------ 请勿直接回复该邮件,更多帮助请访问: