zoukankan      html  css  js  c++  java
  • phpmailer 发送邮件

    使用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天内访问有效。
    如果改链接失效,请点击找回密码。
    
    ------------------------------------------------------------------------
    请勿直接回复该邮件,更多帮助请访问:
  • 相关阅读:
    MySQL:Mysql字符串截取函数SUBSTRING的用法说明
    windows2003+iis6.0+php(fastcgi)5.3+wincache+memcached
    apache 80端口未被占用,启动不了的问题
    服务器端口大全
    UCenter 表结构
    “来自客户端名 a 的远程会话超出了所允许的失败登录最大次数。强行终止了会话。”原因及解决方法
    开发云应用从何入手?
    Building Nutch: Open Source Search
    Nutch0.9加入ICTCLAS 支持中文分词等(转)
    OWL解惑 :AllValuesFrom与Range的区别 关于Domain和Range
  • 原文地址:https://www.cnblogs.com/wuheping/p/2850773.html
Copyright © 2011-2022 走看看