You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PrestaShop模块中使用自定义模板发送邮件

PrestaShop自定义模板邮件发送失败解决方案

核心排查及修复步骤:

  • 验证邮件模板配置
    你调用的模板名为atomicseller,需要确认存在两个必填模板文件:
    1. 路径/mails/对应语言编码/atomicseller.html(HTML格式模板)
    2. 路径/mails/对应语言编码/atomicseller.txt(纯文本格式模板)
      若你使用自定义主题,也可以将模板放在/themes/当前主题名/mails/对应语言编码/目录下。两个模板缺一不可,同时要确保web服务运行用户对模板文件有读取权限(建议权限设置为644)。
  • 修正传参问题
    你当前代码未显式传入店铺ID,多店铺场景下会导致模板路径匹配错误,且发件人参数建议留空调用后台全局配置,避免和后台配置的发件人邮箱不一致被邮件服务商拦截,优化后的代码参考:
    $context = Context::getContext();
    $res = Mail::Send(
        (int)$orderLanguage->id,
        'atomicseller',
        $context->getTranslator()->trans(
            'Return label regarding order %s.',
            [$ref],
            'Emails.Subject',
            $orderLanguage->locale
        ),
        [
            '{order_ref}' => $ref,
            '{message}' => $eCont,
            // 补充模板默认必填的系统变量,避免渲染失败
            '{shop_name}' => $context->shop->name,
            '{shop_logo}' => $context->shop->getLogo(),
            '{shop_url}' => $context->shop->getBaseURL()
        ],
        'Pershin.alexey@list.ru',
        'Pershin Alexey',
        // 留空自动读取后台配置的发件人信息,避免校验失败
        null,
        null,
        null,
        null,
        _PS_MAIL_DIR_,
        true,
        // 显式传入店铺ID,避免多店铺场景下模板定位错误
        (int)$context->shop->id
    );
    
  • 查看具体错误日志
    调用发送方法后可以直接捕获Mail类的错误信息,定位具体问题:
    if (!$res) {
        $sendError = Mail::getError();
        // 可打印或写入日志查看具体错误原因
        var_dump($sendError);
    }
    
    常见错误包括SMTP配置异常、模板文件不存在、邮件地址格式被校验拦截等。
  • 验证全局邮件配置
    先进入PrestaShop后台「高级参数」-「电子邮件」页面,使用内置的测试邮件功能发送测试信,确认全局邮件配置正常。如果你使用Gmail作为发件人,需要在Google账号中开启「应用专用密码」,不能直接使用账号密码登录SMTP,否则会被Google的安全策略拦截。

内容的提问来源于stack exchange,提问作者lionking-123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:15:06