2

コマンドで作ったサービスでメールを送ろうとしています。セキュリティにいくつかの変更を加えた後、問題が発生しています。コマンドを実行するたびに、次のエラーが表示されます。

[Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException]                                                
The security context contains no authentication token. One possible reason may be that there is no firewall configured for this URL. 

エラーが発生する場所を特定しました。それは、電子メールのテンプレートをレンダリングしようとしたときです。サービスでインスタンス化されたテンプレートを使用してみました。また、コマンドからテンプレートを渡してみました

$this->getContainer()->get('templating')

しかし、それでも両方とも同じエラーが発生します。

追加情報として、1 つのコマンドだけではなく、電子メールを送信するすべてのコマンドでこのエラーが発生します。

私が使用していた機能は次のとおりです。

public function createMessage($subject, $to, $template, array $atributes, array $from = array(), $returnPath = 'dev@domain.br', $replyTo = 'no-reply@domain.com.br', $templating = null)
{
    if (count($from) == 0) {
        $from = array('no-reply@domain.com.br' => 'Contact');
    }

    if ($templating == null) {
        $tpl = $this->templating->render($template, $atributes);
    } else {
        $tpl = $templating->render($template, $atributes);
    }

    $this->message = \Swift_Message::newInstance()
            ->setFrom($from)
            ->setReturnPath($returnPath)
            ->setReplyTo($replyTo)
            ->setContentType('text/html')
            ->setSubject($subject)
            ->setTo($to)
            ->setBody($tpl);

    return $this;
}

$tpl を入力しようとすると、エラーが発生します。

私もこの方法を試しました:

$message = \Swift_Message::newInstance()
        ->setSubject('Você foi bloqueado no sistema')
        ->setFrom('contato@mysite.com.br')
        ->setTo($usuario->getEmail())
        ->setCharset('UTF-8')
        ->setContentType('text/html')
        ->setBody($this->getContainer()->get('templating')->render('MyBundle:Email:template.twig'));
    $this->getContainer()->get('mailer')->send($message);

私のsecurity.yml

jms_security_extra:
    secure_all_services: false
    expressions: true

security:
    role_hierarchy:
        ROLE_ADMIN: [ROLE_USUARIO]
        ROLE_USUARIO:

    providers:
        user_db:
            entity: { class: MyNamespace\UserBundle\Entity\Usuario }

    encoders:
        MyNamespace\UserBundle\Entity\Usuario: plaintext

    firewalls:
        secured_area:
            switch_user: { role: ROLE_ADMIN, parameter: _become_him }
            pattern:    ^/
            anonymous: ~
            form_login:
                check_path: /login_check
                login_path: /login
            logout:
                path:   /logout
                target: /login

    access_control:
      - { path: ^/_wdt/, role: IS_AUTHENTICATED_ANONYMOUSLY }
      - { path: ^/_profiler/, role: IS_AUTHENTICATED_ANONYMOUSLY }

      - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }

      - { path: ^/adm, roles: ROLE_ADMIN }
      - { path: ^/, roles: ROLE_USUARIO }

テンプレート:

<!DOCTYPE html>
<html>
<head>
    <title>
        {% block title '' %}
    </title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
    <table style="width: 680px; font-family: Helvetica, Arial, sans-serif; color: #575756; font-size: 16px;">
        <tr>
            <td style="padding: 0 70px;">
                <img src="/img/email/logo.png" style="width: 160px;"/>
            </td>
        </tr>

        <tr style="background-color: #649cb0; line-height: 7px;">
            <td>&nbsp;</td>
        </tr>

        <tr>
            <td style="padding: 0 70px 20px 70px;">
                {% block content '' %}
            </td>
        </tr>

        <tr style="background-color: #649cb0;">
            <td style="padding: 0 70px;">
                <table style="width: 100%; margin-top: 5px;">
                    <tr>
                        <td style="width: 50%; text-align: left;">
                            <a target="_blank">
                                <img src="/img/email/acessar.png"  title="Acessar o sistema" alt="Acessar o sistema" />
                            </a>
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
</body>

上記を使用するテンプレート: {% extends 'NC8DigitalCRMBundle:Email:layout.html.twig' %}

{% block title %}Report{% endblock %}

{% block content %}
<h3 style="font-size: 20px; font-weight: normal;">Hello,</h3>

{% if qtdNaoDistribuidas > 0 %}
    <h4>Problems found.</h4>
{% else %}
    <h4>Everything is ok.</h4>
{% endif %}

{% endblock %}

そして、これが私のメールサービスです:

mybundle.email:
    class: MyNameSpace\MyBundle\Services\SendEmail
    arguments: [ "@doctrine.orm.entity_manager", "@templating", "@mailer", "@service_container" ]
4

0 に答える 0