更改通过 Prestashop 中的联系表发送的电子邮件主题

问题描述 投票:0回答:2

我有一个问题,当客户通过网页上的联系表单给我们写信时,我想更改我们收到的电子邮件的主题。

我找到了更改它的行:

if (!Mail::Send($this->上下文->语言->id, '联系人', Mail::l('联系表中的消息').' [no_sync]',$var_list, $联系人->电子邮件,$联系人->姓名,空,空,

我想改成

Mail::l('联系表单中的消息 - 客户电子邮件')

有人知道我需要在那里写什么吗?

我尝试这样做,但它在主题中返回 0: Mail::l('联系表单的消息' - $contact->email),

prestashop prestashop-1.6
2个回答
1
投票
sprintf(Mail::l('Message from contact form - %s'), $contact->email)

您的线路将是

if (!Mail::Send($this->context->language->id, 'contact', sprintf(Mail::l('Message from contact form - %s'), $contact->email).' [no_sync]', $var_list, $contact->email, $contact->name, null, null,

一些细节:

Mail::l()
以当前语言翻译文本,它应该是静态文本,所以
Mail::l('Message from contact form' . $contact->email)
不是一个好的解决方案。

Mail::l('Message from contact form' - $contact->email)
无法工作,PHP 在翻译之前执行
'Message from contact form' - $contact->email
操作,所以翻译 0

Mail::l('Message from contact form - ') . $contact->email
可以工作,但不是一个好的做法,也许在其他语言中,电子邮件没有放在最后。此外,PrestaShop 对以空格结尾的文本的翻译很糟糕。

sprintf(Mail::l('Message from contact form - %s'), $contact->email)
使用静态文本“来自联系表单的消息 - %s”,并且 sprintf 将 %s 替换为客户的电子邮件。在其他语言中,%s 可以放置在它应该放置的位置,无需修改代码。


0
投票

或者你可以为此制作一个简单的模块并使用钩子:

hookActionEmailSendBefore 

在模块文件中使用类似这样的函数:

public function hookActionEmailSendBefore($params)
{
 if ($params['template'] == 'contact'  )
        {
            $emailClient= (string)$params['templateVars']['{email}'];
            
            $params['subject'] = $params['subject']." - ".$emailClient;
        }

}

我相信

contact
是用于此目的的模板名称,
$params['templateVars']['{email}']
将是客户的电子邮件。

$params['subject']
中 - 您可以根据需要修改邮件主题。

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.