点击进入在线实时咨询或给我们留言!

改造ECSHOP邮件函数为使用PHPMailer发邮件,支持发送附件

来源:子言网络  时间:2010-6-4 19:19:16  字体:    
1、下载最新版PHPMailer,解压后将class.phpmailer.php,class.pop3.php,class.smtp.php三个文件复制到/includes/目录下。
2、详细修改说明:
修改说明:改造原来的send_mail为使用phpmailer,支持发送附件
修改文件:/includes/lib_base.php
修改函数:function send_mail
替换函数代码为:
/* 
 * 邮件发送(采用PHPMailer类)
 *
 * @param: $name[string]        接收人姓名
 * @param: $email[string]       接收人邮件地址
 * @param: $subject[string]     邮件标题
 * @param: $content[string]     邮件内容
 * @param: $type[int]           0 普通邮件, 1 HTML邮件
 * @param: $notification[bool]  true 要求回执, false 不用回执
 * @param: $attach_file[string or array] 附件文件,可以是字串或文件路径数组
 *
 * @return boolean
 */
function send_mail_ex($name, $email, $subject, $content, $type = 0, $notification=false, $attach_file='')
{
    //AUTHOR: HTTP://WWW.G58.NET
    /* 如果邮件编码不是EC_CHARSET,创建字符集转换对象,转换编码 */
    if ($GLOBALS['_CFG']['mail_charset'] != EC_CHARSET)
    {
        $name      = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $name);
        $subject   = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $subject);
        $content   = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $content);
        $GLOBALS['_CFG']['shop_name'] = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], 
 
$GLOBALS['_CFG']['shop_name']);
    }
    $charset   = $GLOBALS['_CFG']['mail_charset'];
 $body             = eregi_replace("[\]",'',$content);
    
 require_once('class.phpmailer.php');
 $mail = new PHPMailer();
 
 /**
     * 使用smtp服务发送邮件
     */
    if ($GLOBALS['_CFG']['mail_service'] == 1 || !function_exists('mail'))
    {
     //smtp 发送时的参数
  $mail->IsSMTP(); // telling the class to use SMTP
  $mail->Host       = $GLOBALS['_CFG']['smtp_host']; // SMTP server 
  $mail->SMTPAuth       = true;
  $mail->Username       = $GLOBALS['_CFG']['smtp_user'];
  $mail->Password       = $GLOBALS['_CFG']['smtp_pass'];
  
  //检测环境
        if (empty($GLOBALS['_CFG']['smtp_host']) || empty($GLOBALS['_CFG']['smtp_port']))
        {
            // 如果没有设置主机和端口直接返回 false
            $GLOBALS['err'] ->add($GLOBALS['_LANG']['smtp_setting_error']);
 
            return false;
        }
        else
        {
            // 发送邮件
            if (!function_exists('fsockopen'))
            {
                //如果fsockopen被禁用,直接返回
                $GLOBALS['err']->add($GLOBALS['_LANG']['disabled_fsockopen']);
 
                return false;
            }
        }
    }
    //采用mail发送或SMTP发送时的共同参数
 $mail->CharSet    = $charset;
    $mail->From       = $GLOBALS['_CFG']['smtp_mail'];
 $mail->FromName   = $GLOBALS['_CFG']['shop_name'];
 $mail->Subject    = $subject;
 $mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, 
 
comment out and test
 $mail->MsgHTML($body);
 $mail->AddAddress($email, $name);
 //处理附件,判断是路径字串还是路径数组
 if($attach_file!=''){
  if(is_array($attach_file)){
   foreach($attach_file as $val){
    $mail->AddAttachment($val);             // attachment
   }
  }else{
   $mail->AddAttachment($attach_file);             // attachment
  }
 }
 
 if(!$mail->Send()) {
  $GLOBALS['err']->add($mail->ErrorInfo);
 } else {
  return true;
 } 
}
 
适用版本:>= 2.62
 
发布作者:http://www.g58.net
  
 
 
 

©2004-2010 版权所有 · 广州子言网络 [ 英文网店系统建设专家 ]

粤ICP备05066100号