当我在zf2中发送电子邮件时,翻译不起作用

塞萨尔

我使用的是来自zend Framework 2的邮件库,也使用的是翻译器功能。但是翻译只能在模板.phtml中使用,而不能在发送电子邮件的服务功能中使用,例如翻译电子邮件的主题时。这是我的服务函数内部的代码,用于发送电子邮件:

$mailFactory = $this->getDependency('mail');
$viewModel = new ViewModel(array(
    'variable' => $x
));
$viewModel->setTemplate('template.phtml');
$message = $mailFactory->prepareMessage($viewModel);
$message->getHeaders()
    ->addHeaderLine('MIME-Version', '1.0')
    ->addHeaderLine('Content-type', 'text/html; charset=UTF-8');
$message->setSubject($this->translate('Recover your password'));
$message->setEncoding("UTF-8");
$message->addTo($email, $fullname);
$transport = $mailFactory->getTransport();

return $transport->send($message);

该函数$this->translate('...')调用一个调用以下代码的类:return $this->translator->translate($text),这在我的所有应用程序中均能正常工作,但仅在我发送任何电子邮件时才起作用(除了template.phtml,该文件中的,翻译器正常工作)。我收到的所有邮件,主题均为英语(未翻译),内容为西班牙语(翻译)

位工作

您必须将翻译器传递给服务才能使用它。

因此,在key.module.config.php下,service_manager您可以使用工厂或初始化程序来实现。

工厂:

'service_manager' => array(
    'factories' => array(
        'YourNamespace\YourMailService' => function ($serviceManager) {
            $mailService = new YourNamespace\YourMailService();
            $mailService->setTranslator($serviceManager->get('translator'));
            return $mailService;
        },
    )
),

您需要setTranslator在服务类中使用该方法

初始化剂:

'service_manager' => array(
    'initializers' => array(
        function ($instance, $sm)
        {
            if ($instance instanceof \YourNamespace\TranslatorAwareInterface) {
                $instance->setTranslator($sm->get('translator'));
            }
        }
    ),
),

使用初始化程序,您需要接口TranslatorAwareInterface

namespace YourNamespace;

use Zend\Mvc\I18n\Translator;

interface TranslatorAwareInterface
{
    public function setTranslator(Translator $translator);
}

您的服务需要实现该接口:

class YourMailService implements TranslatorAwareInterface
{
    protected $translator;

    public function setTranslator(Translator $translator)
    {
        $this->translator = $translator;
    }
}

在这两种情况下,您都可以像这样使用翻译器:

$message->setSubject($this->translator->translate('Recover your password'));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spring Boot使用Thymeleaf作为模板发送电子邮件-配置不起作用

来自分类Dev

在Sharepoint Online 2013中发送电子邮件

来自分类Dev

我将如何使用python发送电子邮件?该代码不起作用

来自分类Dev

通过外部网络发送电子邮件不起作用

来自分类Dev

ZF2定义服务以发送电子邮件

来自分类Dev

如何在zf2中使用smtp发送电子邮件?

来自分类Dev

通过php发送电子邮件,为什么不起作用?

来自分类Dev

在symfony 2中发送电子邮件时出错[连接被拒绝#111]

来自分类Dev

在回叫中发送电子邮件时,Nodemailer不起作用

来自分类Dev

在.NET Task中发送电子邮件在控制台应用程序中不起作用

来自分类Dev

Powershell发送电子邮件时编码不起作用

来自分类Dev

当项目位于我的PC的虚拟服务器中时,Symfony2 Swiftmailer发送电子邮件,但是当我将其上传到共享主机时,它不会发送电子邮件

来自分类Dev

Magento:电子邮件模板中的翻译不起作用

来自分类Dev

使用Java GUI发送电子邮件:不起作用

来自分类Dev

在Sharepoint Online 2013中发送电子邮件

来自分类Dev

在MVC中发送电子邮件

来自分类Dev

Symfony2发送电子邮件不起作用

来自分类Dev

ZF2定义服务以发送电子邮件

来自分类Dev

Powershell发送电子邮件时编码不起作用

来自分类Dev

在J2EE中发送电子邮件

来自分类Dev

Codeigniter发送电子邮件不起作用

来自分类Dev

在R中发送电子邮件

来自分类Dev

在ActionMailer中发送电子邮件时出现TypeError

来自分类Dev

从php发送电子邮件不起作用

来自分类Dev

laravel电子邮件不起作用(已发送电子邮件,但未显示重置页面)

来自分类Dev

发送电子邮件不起作用使用heroku应用程序的Sendgrid和mail_form。我在Contacts#create中收到NoMethodError

来自分类Dev

AWS SES发送电子邮件不起作用

来自分类Dev

在 Codeigniter 2 中发送电子邮件时出错

来自分类Dev

在 aspnetboilerplate 中发送电子邮件不起作用

Related 相关文章

  1. 1

    Spring Boot使用Thymeleaf作为模板发送电子邮件-配置不起作用

  2. 2

    在Sharepoint Online 2013中发送电子邮件

  3. 3

    我将如何使用python发送电子邮件?该代码不起作用

  4. 4

    通过外部网络发送电子邮件不起作用

  5. 5

    ZF2定义服务以发送电子邮件

  6. 6

    如何在zf2中使用smtp发送电子邮件?

  7. 7

    通过php发送电子邮件,为什么不起作用?

  8. 8

    在symfony 2中发送电子邮件时出错[连接被拒绝#111]

  9. 9

    在回叫中发送电子邮件时,Nodemailer不起作用

  10. 10

    在.NET Task中发送电子邮件在控制台应用程序中不起作用

  11. 11

    Powershell发送电子邮件时编码不起作用

  12. 12

    当项目位于我的PC的虚拟服务器中时,Symfony2 Swiftmailer发送电子邮件,但是当我将其上传到共享主机时,它不会发送电子邮件

  13. 13

    Magento:电子邮件模板中的翻译不起作用

  14. 14

    使用Java GUI发送电子邮件:不起作用

  15. 15

    在Sharepoint Online 2013中发送电子邮件

  16. 16

    在MVC中发送电子邮件

  17. 17

    Symfony2发送电子邮件不起作用

  18. 18

    ZF2定义服务以发送电子邮件

  19. 19

    Powershell发送电子邮件时编码不起作用

  20. 20

    在J2EE中发送电子邮件

  21. 21

    Codeigniter发送电子邮件不起作用

  22. 22

    在R中发送电子邮件

  23. 23

    在ActionMailer中发送电子邮件时出现TypeError

  24. 24

    从php发送电子邮件不起作用

  25. 25

    laravel电子邮件不起作用(已发送电子邮件,但未显示重置页面)

  26. 26

    发送电子邮件不起作用使用heroku应用程序的Sendgrid和mail_form。我在Contacts#create中收到NoMethodError

  27. 27

    AWS SES发送电子邮件不起作用

  28. 28

    在 Codeigniter 2 中发送电子邮件时出错

  29. 29

    在 aspnetboilerplate 中发送电子邮件不起作用

热门标签

归档