Как я могу отправить изображение в тело письма с помощью SwiftMailer? - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь отправить изображение в теле письма с помощью SwiftMailer.Я использую SwiftMailer для отправки электронной почты для смены пароля и т. Д.

Я попытался использовать метод cid или также внедрить метод с использованием документации SwiftMailer.К сожалению, ни один из этих методов не работает.Я по-прежнему не получаю изображения в своем электронном письме.

Я использовал эту функцию, чтобы отправить электронное письмо для изменения пароля пользователя.

public function sendResettingEmailMessage(UserInterface $user)
{
$template = $this->parameters['template']['resetting'];
$url = $this->router->generate('fos_user_resetting_reset', array('token' => 
$user->getConfirmationToken()), UrlGeneratorInterface::ABSOLUTE_URL);

$context = array(
'user' => $user,
'confirmationUrl' => $url,
);
    $this->sendMessage($template, $context, $this->parameters['from_email']['resetting'], (string) $user->getEmail());                                        
}

Затем я использую эту функцию для созданиясообщение электронной почты:

protected function sendMessage($templateName, $context, $fromEmail, 
$toEmail)
{
    $template = $this->twig->load($templateName);
    $subject = $template->renderBlock('subject', $context);
    $textBody = $template->renderBlock('body_text', $context);
    $htmlBody = '';

    if ($template->hasBlock('body_html', $context)) {
        $htmlBody = $template->renderBlock('body_html', $context);
    }

    $message = (new \Swift_Message())
    ->setSubject($subject)
    ->setFrom($fromEmail)
    ->setTo($toEmail)
    ->setBody(
    '<html>' .
    ' <body>' .
    '  Here is an image <img src="' . 
    $message- 
    >embed(Swift_Image::fromPath('https://via.placeholder.com/350x150')) .
        '" alt="Image" />' .
        '  Rest of message' .
        ' </body>' .
        '</html>',
        'text/html' // Mark the content-type as HTML
    ); 

    return $this->mailer->send($message);
}

Вот мой email.html.twig:

{% trans_default_domain 'FOSUserBundle' %}
{% block subject %}
{%- autoescape false -%}
{{ 'registration.email.subject'|trans({'%username%': user.username, 
'%confirmationUrl%': confirmationUrl}) }}
{%- endautoescape -%}

{% endblock %}

{% block body_text %}


{% autoescape false %}
{{ 'registration.email.message'|trans({'%username%': user.username, 
'%confirmationUrl%': confirmationUrl}) }}

{% endautoescape %}

{% endblock %}
{% block body_html %}

{% endblock %}

Я ожидаю, что в моем письме я получу простой заполнитель внутри тела,Но в результате этот заполнитель никогда не появлялся в моем письме.У меня есть только тело с текстом без изображения.

Как я могу добавить этот заполнитель в тело моего письма?

Спасибо за ваши ответы.

1 Ответ

0 голосов
/ 13 февраля 2019

Согласно документации, не могли бы вы попробовать это:

$message->attach(
  Swift_Attachment::fromPath('https://via.placeholder.com/350x150')->setDisposition('inline')
)

И, пожалуйста, проверьте, установлен ли allow_url_fopen on в вашем php.ini

(https://swiftmailer.symfony.com/docs/messages.html)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...