使用 OpenCart 2.1.1.1 在 PHP 中发送附件

2023-11-21

了解 OpenCart 2.0.1.1 的人知道如何实现 system/libary/mail.php 中的以下 addAttachment 函数:

public function addAttachment($filename) {
  $this->attachments[] = $filename;
}

进入catalog/controller/information/contact.php - 以便默认联系表单还可以包含附件上传功能?我试过了,但没有骰子。

if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
  unset($this->session->data['captcha']);

$mail = new Mail($this->config->get('config_mail'));
$mail->setTo($this->config->get('config_email'));
$mail->setFrom($this->request->post['email']);
$mail->setSender($this->request->post['name']);
$mail->setSubject(sprintf($this->language->get('email_subject'), $this->request->post['name']));
$mail->setText(strip_tags($this->request->post['enquiry']));
$mail->addAttachment($this->request->post['file']);
$mail->send();
$this->response->redirect($this->url->link('information/contact/success'));
}

您不能直接将文件传递给$mail->addAttachment($this->request->post['file']);

首先你需要上传文件

//catalog/view/theme/default/template/information/contact.tpl

<div class="form-group">
    <label class="col-sm-2 control-label" for="input-file">File</label>
    <div class="col-sm-10">
        <button type="button" id="button-upload" data-loading-text="Uploading.." class="btn btn-default btn-block"><i class="fa fa-upload"></i> <?php echo 'Upload'; ?></button>
        <input type="hidden" name="file" value="" id="file"/>
    </div>
</div>

现在我们需要上传脚本来上传文件

//before footer in catalog/view/theme/default/template/information/contact.tpl
<script>
    $('button[id^=\'button-upload\']').on('click', function() {
        var node = this;

        $('#form-upload').remove();

        $('body').prepend('<form enctype="multipart/form-data" id="form-upload" style="display: none;"><input type="file" name="file" /></form>');

        $('#form-upload input[name=\'file\']').trigger('click');

        timer = setInterval(function() {
            if ($('#form-upload input[name=\'file\']').val() != '') {
                clearInterval(timer);

                $.ajax({
                    url: 'index.php?route=tool/upload',
                    type: 'post',
                    dataType: 'json',
                    data: new FormData($('#form-upload')[0]),
                    cache: false,
                    contentType: false,
                    processData: false,
                    beforeSend: function() {
                        $(node).button('loading');
                    },
                    complete: function() {
                        $(node).button('reset');
                    },
                    success: function(json) {
                        $('.text-danger').remove();

                        if (json['error']) {
                            $(node).parent().find('input').after('<div class="text-danger">' + json['error'] + '</div>');
                        }

                        if (json['success']) {
                            alert(json['success']);

                            $(node).parent().find('input').attr('value', json['code']);
                        }
                    },
                    error: function(xhr, ajaxOptions, thrownError) {
                        alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
                    }
                });
            }
        }, 500);
    });
</script>

现在终于可以将附件文件传递给邮件功能了

//catalog/controller/information/contact.php

    if($this->request->post['file']){
      $this->load->model('tool/upload');
      $upload_info = $this->model_tool_upload->getUploadByCode($this->request->post['file']);
      $phyname = DIR_UPLOAD.$upload_info['filename'];
      $temp_name = DIR_UPLOAD.$upload_info['name'];
      copy($phyname,$temp_name);
      $mail->AddAttachment($temp_name);
    }

    $mail->send();
    if(isset($temp_name)){
     unlink( $temp_name );
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 OpenCart 2.1.1.1 在 PHP 中发送附件 的相关文章

  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • Doctrine DQL 从 join 返回平面数组

    我通过 DQL 中的常规 LEFT JOIN 选择 3 个实体 它们通过连接表关联 连接表还定义了实体以及带注释的关系 查询执行没有问题 但我的结果作为平面数组返回 我期望一个包含三个实体作为每个索引的数组元素的数组 SELECT e1 e
  • PDO语法错误

    我在一个项目中使用 PDO 但提交时出现语法错误 这是我的代码
  • 谷歌日历手表过期时间超过1个月怎么办?

    我将我的 CRM 系统与 Google 日历同步 为此 我要求push notifications从我的用户 Google 日历到我的系统 我已经成功创建了手表 并将过期时间设置为2030年 但是当我收到手表事件的响应时 它显示手表的过期时
  • 使用“INSERT ... ON DUPLICATE KEY UPDATE”插入多条记录

    我的表结构 table marks 我的目标 我想用条件插入或更新多条记录 我目前正在通过此查询进行检查 第一步 SELECT FROM marks WHERE student 115 AND param 1 第二步 if records
  • 将 OAuth WRAP 访问令牌直接保存在客户端计算机上的 cookie 中吗?

    我计划建立一个可以访问 oauth 包装框架的网站 我正在考虑将访问令牌按原样存储在客户端计算机上 我不想在服务器上维护临时令牌等数据库 我应该做吗 或者我应该加密它 首先 为什么他们不使用 OAuth 2 0 您可以将 OAuth 凭据存
  • 在laravel中组合两个不同的无关系数据库表查询进行分页

    我的数据库中有两个不相关的表 我需要将它们合并 以便我可以将其放在我的搜索视图中 但我不知道是否可能 这是我的代码 这news and season表不相关 但它们具有相似的列 我试图将其放入一个对象中以便于分页 是否可以 search r
  • 使用 phpdocx 下载损坏的 .docx

    我有一个项目 我们使用 phpdocx pro 在模板中生成 docx 文件 我可以很容易地将数据输入到模板中 但是当下载文件并在 MS Word 2010 中打开时 程序报告无法打开文件 因为内容存在问题 详细信息是 文件已损坏 并且无法
  • file_get_contents 大文件上传

    我正在尝试使用 fsockopen 上传 2GB 以上的大文件 但 file get content 出现以下错误 我无法在内存中存储大文件 我需要分块发送数据 但不知道如何执行此操作 请问有人可以指导我吗 致命错误 允许的内存大小 134
  • Laravel - 急切加载 Eloquent 模型的方法(而不是关系)

    就像我们可以急切加载 Eloquent 模型的关系一样 有没有办法急切加载不是 Eloquent 模型的关系方法的方法 例如 我有一个 Eloquent 模型GradeReport它有以下方法 public function totalSc
  • Cakedc.users => 总是重定向到主页

    我在新的 Cakephp 安装上使用插件 CakeDC Users 我有两个控制器 PagesController php CardsController php Pages 有 1 个操作 Beta 它是主页 Cards 有两个操作 索引
  • 切换到 mysqli 是个好主意吗?

    我正在考虑为我的所有 php 项目切换到 mysqli 我的代码编写方式 我运行非常简单的网站并构建了自己的基本框架 我在所有网站上使用该框架 我在修改函数和类时不应该遇到太多问题 然而 我只听说过关于准备好的语句的积极的事情 除了一些关于
  • Laravel/00webhost 错误 404。在此服务器上找不到请求的 URL

    1 将我的文件上传到 000webhost 我将公用文件夹中的所有文件放置到公共 html然后我创建了一个名为laravel我在那里上传了所有其他文件 这是我的目录结构 laravel app 引导程序 config 公共 html 索引
  • yii2 中的自动完成

    在 Yii2 中 我希望当用户开始输入时 我的输入字段之一能够自动完成 下面是我的代码 它使用Jui Autocomplete 这是行不通的 当我打印我的数组时 我就像 Array 1 gt abc 2 gt xyz 4 gt pqr
  • ACL授权失败后ZF3重定向

    我有一个带有 ACL 的新 ZF3 应用程序 现在 我需要在未经授权的访问的情况下重定向到错误页面 例如 403 我认为最好的方法是触发一个事件 然后捕获它 但我失败了 全部都在我的用户模块中Module php 摘录 namespace
  • php如何生成动态list()?

    根据我的理解 这就是 list 的工作原理 list A1 A2 A3 array B1 B2 B3 所以在帮助下list 我们可以相应地从数组中分配值 这是我的问题 如何生成动态list 1 基于数据库返回结果 我不确定有多少 但我将其全
  • 使用 PHP 中的 GD 库在图像上绘图

    我创建了一个代码来生成随机图案图像 它创建一个具有给定宽度和高度的图像 并用 40x40 像素的小矩形填充它 这是我的代码
  • 点击 %40 变为 %2540

    当单击包含 符号的链接时 该网址给我 40 这就是我想要的 但是一旦我点击它 一秒钟后它就在我点击后变成了 2540 单击是在电子邮件内 然后定向到网站 其中 40 更改为 2540 我怎样才能让它停止变化 它现在得到这样的参数 email
  • PHP条件,如果当前页面,则链接突出显示[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个带
  • 通过 Sparkpost 发送 iCal 邀请

    我正在尝试使用 SparkPost 通过电子邮件以附件形式发送日历邀请 但收到电子邮件后邀请不会打开 我使用两个文件 calendarinvite php 来创建邀请 使用 Sendemail php 来发送电子邮件 calendarinv

随机推荐

  • 将部分视图渲染为字符串 MVC4

    我正在使用以下内容来呈现字符串的部分视图 protected string RenderPartialViewToString string viewName object model if string IsNullOrEmpty vie
  • 告知作业何时完成

    我正在寻找一种方法 从脚本内 判断 Kubernetes 作业何时完成 然后我想从容器中取出日志并执行清理 这样做的好方法是什么 最好的方法是跑步kubectl describe job
  • 如何检查对象中的对象是否存在

    似乎以下用于检查对象成员是否存在的技术会产生错误 因为在检查之前尚未声明 bar 父对象 这意味着我要么必须在检查之前声明它 要么使用两个 typeof 表达式 其中任何一个都是多余的代码 var foo newVal typeof foo
  • 如何为 Google Apps 脚本网络应用程序上的并发用户提供便利?

    我目前正在创建一个可以读取和写入 Google 表格的网络应用程序 它本质上是一个表单应用程序 它从 HTML 表单中获取输入 然后使用appendRow 以及随后使用getRange and setValue 将更多数据附加到该行 每行代
  • Application.DoEvents() 的替代方法

    我正在开发一个基于 webBrowser 控件的消息传递系统 以便我可以随心所欲地格式化文本 当用户离线并收到消息时 消息将被存储 并在用户重新登录时为每条消息发送一个事件 当我为网站设置默认 html 等时 我通常使用 while thi
  • Mongodb:查找不带点符号的子文档

    例如我们有集合 field subfield name field subfield phone 我可以找到没有点符号的文档吗 像这样 db test find field subfield regex 或者也许像这样 db test fi
  • Android 在设备睡眠时减慢前台服务速度

    几天来 我一直在努力解决以下问题 我想在屏幕关闭时使用 Android 设备上的重力传感器来计算运动模式 我正在使用在前台启动的绑定服务 带有 Android 8 的通知以使其保持运行 并且当屏幕打开时一切正常 即使应用程序没有在前台运行
  • 如何在Android中的菜单项上实现动态值[重复]

    这个问题在这里已经有答案了 我的操作栏中有一个菜单项 除了菜单项图像之外 我还需要显示一些与之相关的数字 这些数字会经常变化 我没有使用操作栏 sherlock 我不想用那个 除此之外 其他一切都工作正常 在所示图像中 白色图标颜色图标是我
  • 如何将动态生成的zip文件发送给客户端

    我正在寻找一种将请求响应生成的 zip 文件发送到客户端的方法 在此示例中 我将 JSON 字符串发送到 URL 该 URL 返回转换后的 JSON 字符串的 zip 文件 app route sendZip methods POST de
  • safari 中的 mp4 因 htaccess 身份验证失败

    在一个开发网站上 我一直在测试 mp4 文件在 safari 中的 html5 播放 即使没有正确的 MIME 类型声明 本机播放器也可以正常加载和播放 mp4 文件 但是 如果我将 AuthType Basic 添加到我的 htacces
  • 混合 React 和 Vue 是个好主意吗? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我的公司在另一个国家有一个开发团队 他们坚持使用 Vue 在我们现有的平台上构建新模块 我们的主要平台是一个基于 React 和 Redux 构建的单页面应用程序 仅基于团队技能的混合框架
  • 在 C 中什么时候应该使用 malloc,什么时候不应该使用?

    我了解 malloc 的工作原理 我的问题是 我会看到这样的事情 define A MEGABYTE 1024 1024 char some memory size t size to allocate A MEGABYTE some me
  • Oracle语法错误[重复]

    这个问题在这里已经有答案了 我在 Oracle 中遇到以下错误 SELECT FROM abcd WHERE name LIKE a LIMIT 10 ERROR at line 1 ORA 00933 SQL command not pr
  • Objective-C/Cocoa:检测所有按键

    是否可以在用户每次按键时运行一个方法 基本上我想在按下按键时发出类似 iPhone 或 iPad 上的声音 我不想检测我的窗口或某个控件中的按键 我想检测所有按键 例如当他们在 Safari 中输入或其他内容时 我不需要知道关键是什么 Th
  • 使用矩阵、欧拉角和/或四元数进行旋转表示有何优缺点? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 矩阵和欧拉角可能会受到万向
  • 使用 ActionBarSherlock 时 R 无法解决错误

    我正在尝试使用杰克 沃顿的动作栏夏洛克支持 Android 项目中的操作栏一直到 1 6 我正在开始使用video提供于常见问题解答页面但在视频 2 25 后 当他导入项目时 我得到了一大堆超过 200 个编译器错误 主要是处理一些 ove
  • 如何更改ggplot2中的默认配色方案?

    我想更改 ggplot2 中的默认配色方案 也就是说 我想在脚本中的某一点定义一种配色方案 例如 viridis 以便所有后续的 ggplot 图都将使用此配色方案 而无需调用 scale color viridis 每一次 我见过这个帖子
  • 网站上的 Google Chrome 扩展串行端口

    我使用 chrome serial 与 COM 端口上的设备进行通信 我需要在我的网站上提供基本的 javascript api 第一次尝试是使用 content script 消息传递 但我无法使用serial许可与content scr
  • 检测 iOS 应用程序的首次启动[重复]

    这个问题在这里已经有答案了 我正在尝试在 Swift 中找到一种方法来检测第一次启动 通常 您会向 NSUserDefaults 写入一个值来指示应用程序之前已启动 let launchedBefore NSUserDefaults sta
  • 使用 OpenCart 2.1.1.1 在 PHP 中发送附件

    了解 OpenCart 2 0 1 1 的人知道如何实现 system libary mail php 中的以下 addAttachment 函数 public function addAttachment filename this gt