Mail:Send 使用自定义模块和电子邮件模板
Mail:Send with Custom Module and Email Template
我目前正在创建一个模块来在 hookActionProductCancel 上执行一组代码。模块运行很好,我想在执行后发送一封电子邮件。
$template_path = $this->local_path . 'mails/';
Mail::Send((int)(Configuration::get('PS_LANG_DEFAULT')),
'xxx', //need to change the template directory to point to custom module
'Subject',
array(
'{aaa}' => $bbb,
'{bbb}' => $ccc,
'{ccc}' => $ddd,
'{ddd}' => $eee
),
$to,
null, null, null);
我已经创建了模板并将文件放置如下:
- ../mails/en/xxx.html
- ../mails/en/xxx.txt
虽然我了解以上电子邮件模板的默认导航,但如何使用放置在我的自定义模块目录中的模板?
我已经创建了一个目录 - ../modules/custommodule/mails/ 并放置了两个文件,但我没有成功指向它。
感谢任何指导。谢谢。
您可以在 Mail::Send() 中指定模板路径。
您可以看到第 11 个参数是 $template_path
,所以您只需指定它(如果您从主模块 class 调用发送方法,您可以使用 $this->local_path . 'mails/'
)。 $template_path
参数必须是服务器文件路径而不是 URI,因为该方法使用 file_exists()
来检查模板是否存在。方法将从您的模块路径中提取它实际上是一个自定义模块模板。
现在该方法将首先检查您是否有邮件模板
themes/shop_theme/modules/mymodule/mails/iso_lang/xxx.html
然后在
modules/mymodule/mails/iso_lang/xxx.html
并加载它找到的第一个模板。 txt文件也是如此。
编辑:
如何正确执行方法:
Mail::Send(
(int)(Configuration::get('PS_LANG_DEFAULT')),
'xxx', //need to change the template directory to point to custom module
'Subject',
array(
'{aaa}' => $bbb,
'{bbb}' => $ccc,
'{ccc}' => $ddd,
'{ddd}' => $eee
),
$to,
null,
null,
null,
null,
null,
$this->local_path . 'mails/' // 11th parameter is template path
)
是的,我同意 'TheDrot' 你必须正确传递第 11 个参数,如果你遇到
的错误
$this->local_path . 'mails/'
不如试试
$this->module->getLocalPath().'mails/'
我目前正在创建一个模块来在 hookActionProductCancel 上执行一组代码。模块运行很好,我想在执行后发送一封电子邮件。
$template_path = $this->local_path . 'mails/';
Mail::Send((int)(Configuration::get('PS_LANG_DEFAULT')),
'xxx', //need to change the template directory to point to custom module
'Subject',
array(
'{aaa}' => $bbb,
'{bbb}' => $ccc,
'{ccc}' => $ddd,
'{ddd}' => $eee
),
$to,
null, null, null);
我已经创建了模板并将文件放置如下:
- ../mails/en/xxx.html
- ../mails/en/xxx.txt
虽然我了解以上电子邮件模板的默认导航,但如何使用放置在我的自定义模块目录中的模板?
我已经创建了一个目录 - ../modules/custommodule/mails/ 并放置了两个文件,但我没有成功指向它。
感谢任何指导。谢谢。
您可以在 Mail::Send() 中指定模板路径。
您可以看到第 11 个参数是 $template_path
,所以您只需指定它(如果您从主模块 class 调用发送方法,您可以使用 $this->local_path . 'mails/'
)。 $template_path
参数必须是服务器文件路径而不是 URI,因为该方法使用 file_exists()
来检查模板是否存在。方法将从您的模块路径中提取它实际上是一个自定义模块模板。
现在该方法将首先检查您是否有邮件模板
themes/shop_theme/modules/mymodule/mails/iso_lang/xxx.html
然后在
modules/mymodule/mails/iso_lang/xxx.html
并加载它找到的第一个模板。 txt文件也是如此。
编辑:
如何正确执行方法:
Mail::Send(
(int)(Configuration::get('PS_LANG_DEFAULT')),
'xxx', //need to change the template directory to point to custom module
'Subject',
array(
'{aaa}' => $bbb,
'{bbb}' => $ccc,
'{ccc}' => $ddd,
'{ddd}' => $eee
),
$to,
null,
null,
null,
null,
null,
$this->local_path . 'mails/' // 11th parameter is template path
)
是的,我同意 'TheDrot' 你必须正确传递第 11 个参数,如果你遇到
的错误$this->local_path . 'mails/'
不如试试
$this->module->getLocalPath().'mails/'