ecshop实现smtp发送邮件

使用ECShop的smtp方式发送邮件时,在cls_smtp类文件中,执行到get_data方法中的语句:

代码如下:

$line    = fgets($this->connection, 512);

;时,发生超时错误。

注释掉该函数的执行,直接发送邮件,则返回错误ehlo command failed。

但打印出链接数据时,确实连上了。

之前用别的程序发送邮件也是可以正常发送的,于是重新发送函数,改用phpmailer发送邮件。

代码如下:

function smtp_mail($name, $email, $subject, $content, $type = 1, $notification=false) {
     /* 如果邮件编码不是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);
        $shop_name = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $GLOBALS['_CFG']['shop_name']);
    }
    $charset   = $GLOBALS['_CFG']['mail_charset'];
    include_once ROOT_PATH . 'includes/phpmailer/class.phpmailer.php';
    $mail = new PHPMailer();
    $mail->From = $GLOBALS['_CFG']['smtp_user'];
    $mail->FromName = '云南***播有限公司';
    if ($GLOBALS['_CFG']['mail_service'] == 0) {
        $mail->isMail();
    } else {
        $mail->IsSMTP();
        $mail->Host = $GLOBALS['_CFG']['smtp_host'];
        $mail->Port = $GLOBALS['_CFG']['smtp_port'];
        $mail->SMTPAuth = !empty($GLOBALS['_CFG']['smtp_pass']);
        $mail->Username = $GLOBALS['_CFG']['smtp_user'];
        $mail->Password = $GLOBALS['_CFG']['smtp_pass'];
    }
    $mail->Encoding = "base64";
    //$mail->Priority     = $this->priority;
    $mail->CharSet      = $charset;
    $mail->IsHTML($type);
    $mail->Subject      = $subject;
    $mail->Body         = $content;
    $mail->Timeout      = 30;
    $mail->SMTPDebug    = false;
    $mail->ClearAddresses();
    $mail->AddAddress($email, $name);
    $mail->ConfirmReadingTo = $notification;
    $res = $mail->Send(); 
    if (!$res)
    {
        $GLOBALS['err']->add($mail->ErrorInfo);
        $GLOBALS['err']->add($GLOBALS['_LANG']['sendemail_false']);
        return false;
    }
    return true;
}

以上就是本文的全部内容了,希望小伙伴们能够喜欢。

(0)

相关推荐

  • ecshop 批量上传(加入自定义属性)

    下面是实现批量上传(加入自定义属性)思路以及实现的过程. 1.加入属性 之所以只能上传特定的属性,应该是批量上传的固定属性都来自于一张表.esc_goods表. 所以我们想假如自己的属性,必须要在esc_goods中加入自己的属性.比如这次加入的字段加 规格: goods_guige 代码:sql语句:alter table ecs_goods add goods_guige varchar(255) not null after goods_desc; 2.页面修改 位置: admin/tem

  • ecshop 订单确认中显示省市地址信息的方法

    先添加显示这些信息: 1.修改lib_order.php文件的get_consignee函数(1798行) 添加如下代码在return前面: 复制代码 代码如下: $sql = "select region_name from ".$GLOBALS['ecs']->table('region') . " where region_id in(".$arr['country'].",".$arr['province'].",&quo

  • PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子

    最近,一个项目要求做交通银行在线支付,ecshop本身没有这方面的接口,于是通过一些时间的专研,做了一个插件出来.有好的东西,当然要分享,在此特地分享出来,希望能够帮助到跟我一样有需要的人,为大家减轻一下开发的负担,也多请大家指出一些好的方法和建议,相互的学习.进步! 在使用插件之前,请配置好交通银行在线支付的环境(具体安装方法,交行提供的demo会有,也不是很难,注意好细节就行).安装好之后,请将把下面的插件源码和语言包源码按路径保存到相应文件,最后进入后台的支付模块安装即可. 插件源码(in

  • ecshop后台编辑器替换成ueditor编辑器

    1.Ueditor1.4.3下载(截止到2015-03-03最新版) 下载地址:http://ueditor.baidu.com/website/download.html 解决jquery冲突的jquery等相关文件下载 文件中已含js冲突修改文件,另外已修改php/config.json中的图处保存路径,用户也可以自行修改! 因为老杨用的是mac os系统,所以文件中有一些.DS_store文件,可以忽略或自行删除 下载地址:http://pan.baidu.com/s/1gdglb0J 密

  • 使ecshop模板中可引用常量的实现方法

    比如$smarty.const.'常量',这个就不能用. 其实模板引擎原理上并不复杂,只是把一些模板标签替换为php中的函数,变量,语法结构罢了. 这次要在ecshop模板中加入引用常量的功能,只需在函数make_var()中加入两行代码 复制代码 代码如下: function make_var($val) { if (strrpos($val, '.') === false) { if (isset($this->_var[$val]) && isset($this->_pa

  • ECSHOP在PHP5.5及高版本上报错的解决方法

    Ecshop却没来得及修改,如果在高版本的php虚拟主机上安装ecshop程序,出现兼容性问题. 小编在本地环境php5.5上安装出现以下两种报错提示: Only variables should be passed by reference php Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead-? 通过在网络上查找,小编发现并不是只能在低版本的php中安装

  • php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释

    复制代码 代码如下: function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id])) { return $cat_options[$spec_cat_id]; } /* 初始化关键参数: $level:当前子节点深度 $last_cat_id:当前父节点ID $options:带有缩进级别的数组 $cat_id_array:沿同一路径的

  • 比较discuz和ecshop的截取字符串函数php版

    下面先给出两个版本函数的源代码以及简单测试,最后我会给出一个实用性更强的字符串截取函数.需要注意的是:这里讨论的字符串截取问题都是针对UTF-8编码的中文字符串. discuz版本 复制代码 代码如下: /** * [discuz] 基于PHP没有安装 mb_substr 等扩展截取字符串,如果截取中文字则按2个字符计算 * @param $string 要截取的字符串 * @param $length 要截取的字符数 * @param $dot 替换截掉部分的结尾字符串 * @return 返

  • 万网独享主机Apache为Ecshop商城添加404页面的方法详解

    标题已经说的比较清楚,只针对这一种情况,希望给予遇到同样问题的人些许启发,缩短解决问题的时间. 相关信息: 万网独享主机/Linux操作系统/Apache/Ecshop商城/404页面设置,同样在win7系统/Apache上面也测试通过 一种问题解决方法: 1.首先在Apache的conf目录下面配置httpd.conf文件,找到#ErrorDocument 404 /missing.html,去除前面的#号即可,我的修改成了ErrorDocument 404 /404.html: 2.在站点的

  • ecshop实现smtp发送邮件

    使用ECShop的smtp方式发送邮件时,在cls_smtp类文件中,执行到get_data方法中的语句: 复制代码 代码如下: $line    = fgets($this->connection, 512); ;时,发生超时错误. 注释掉该函数的执行,直接发送邮件,则返回错误ehlo command failed. 但打印出链接数据时,确实连上了. 之前用别的程序发送邮件也是可以正常发送的,于是重新发送函数,改用phpmailer发送邮件. 复制代码 代码如下: function smtp_

  • java实现基于SMTP发送邮件的方法

    本文实例讲述了java实现基于SMTP发送邮件的方法.分享给大家供大家参考.具体实现方法如下: import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Tra

  • 在asp.NET 中使用SMTP发送邮件的实现代码

    核心代码: 复制代码 代码如下: public class Mail { #region 邮件参数 static public string accountName = System.Configuration.ConfigurationManager.AppSettings["SmtpAccountName"]; static public string password = System.Configuration.ConfigurationManager.AppSettings[

  • Go语言通过smtp发送邮件的方法

    本文实例讲述了Go语言通过smtp发送邮件的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (  "net/smtp"  "fmt"  "strings" ) /*  * user : example@example.com login smtp server user  * password: xxxxx login smtp server password  * host: smt

  • php基于socket实现SMTP发送邮件的方法

    本文实例讲述了php基于socket实现SMTP发送邮件的方法.分享给大家供大家参考.具体分析如下: php采用socket通过SMTP发送邮件. 用的是php的php-sockets扩展,可以发送纯文本和html格式的邮件.代码如下: 复制代码 代码如下: <?php /** * 邮件发送类 * 支持发送纯文本邮件和HTML格式的邮件 * @example * $config = array( *       "from" => "*****", * 

  • Laravel框架实现的使用smtp发送邮件功能示例

    本文实例讲述了Laravel框架实现的使用smtp发送邮件功能.分享给大家供大家参考,具体如下: 1..env文件中配置 MAIL_DRIVER=smtp MAIL_HOST=smtp.邮箱后缀 MAIL_PORT=邮件服务器发送端口 MAIL_USERNAME=发送方邮件地址 MAIL_PASSWORD=发送方邮箱生成的第三方登陆码 MAIL_FROM_ADDRESS=发送邮箱地址 MAIL_FROM_NAME=发送方名称 2.config目录下mail.php文件配置 可以不配置,因为会被.

  • C# SMTP发送邮件的示例

    在程序开发中通常有推送消息的需求,通常为短信服务,邮件,电话提醒. 短信及电话提醒通常需要向运营商购买服务调用接口,比较麻烦.邮件信息推送也是不错的选择,下面使用C#实现SMTP发送邮件 复制代码/// <summary> /// 发送邮件 /// </summary> /// <param name="M">发件内容</param> public static void LocalHostSend(SendMail M) { try {

  • Python基于SMTP发送邮件的方法

    在很多时候,使用 Python 发送邮件可能没有办法使用邮件服务器提供的 API,因为不是所有的邮件服务商都会提供 API 供客户使用的. 通常使用邮件 API 的邮件发送服务都需要额外的收费. 因此我们再邮件测试发送的时候,可能需要的是 SMTP 邮件发送服务,通常这个服务是所有邮件服务商都会提供的. 要使用 SMTP 邮件发送服务,你需要有下面的信息才可以完成和测试: SMTP 邮件服务器的地址,端口,登录用户名和登录用户密码 发送和接收邮件的地址 邮件的主题和正文 看起来是不是有点复杂,实

  • Python 使用SMTP发送邮件的代码小结

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一种很方便的途径发送电子邮件.它对smtp协议进行了简单的封装. Python创建 SMTP 对象语法如下: import smtplib smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] ) 参数说明: host: SMTP 服务器

  • Python实现SMTP发送邮件详细教程

    简介 Python发送邮件的教程本人在网站搜索的时候搜索出来了一大堆,但是都是说了一大堆原理然后就推出了实现代码,我测试用给出的代码进行发送邮件时都不成功,后面找了很久才找到原因,这都是没有一个详细的环境调试导致,所以今天特出一个详细的教程,一步一步从环境调试到代码实现整一个教程,希望对还在苦苦寻找解决方法却迟迟不能得到有效解决的人员一点帮助. SMTP协议 首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器.SMTP协议只能用来发送邮件,不能用

随机推荐