我正在使用方法中的下一个代码发送一种电子邮件:
$message = \Swift_Message::newInstance('smtp.gmail.com', 465, 'ssl')
->setSubject($this->translator->trans("Invitación a la comunidad %community%", array(
'%community%' => $community->getNiceName()
)))
->setFrom('manolez@gmail.com', 'contact') // TODO DRY
->setTo($email)
->setReplyTo($inviter->getEmail(), $inviter->getFullName())
->setContentType('text/html')
->setBody($this->templating->render(
'ProInvitationsBundle:Invitations:inviteEmail.html.twig',
array('community' => $community, 'inviter' => $inviter)));
我想在身体上嵌入一个图像,所以我可以这样做:
$message = \Swift_Message::newInstance('smtp.gmail.com', 465, 'ssl')
->setSubject($this->translator->trans("Invitación a la comunidad %community%", array(
'%community%' => $community->getNiceName()
)))
->setFrom('manolez@gmail.com', 'contact') // TODO DRY
->setTo($email)
->setReplyTo($inviter->getEmail(), $inviter->getFullName())
->setContentType('text/html')
->setBody('<html><head></head><body>Here is an image <img src="' .
$message->embed(Swift_Image::fromPath('http://site.tld/logo.png')) .
'" alt="Image" />' .
' Rest of message' .
' </body></html>');
但是这样,$message
还没有定义,我也无法渲染我的模板。想知道如何将图像嵌入到我定义的模板中吗?
答案 0 :(得分:5)
试试这个:
$message = \Swift_Message::newInstance();
$imgUrl = $message->embed(Swift_Image::fromPath('http://site.tld/logo.png'));
$message->setSubject($this->translator->trans("Invitación a la comunidad %community%", array(
'%community%' => $community->getNiceName()
)))
->setFrom('manolez@gmail.com', 'redConvive') // TODO DRY
->setTo($email)
->setReplyTo($inviter->getEmail(), $inviter->getFullName())
->setBody($this->templating->render(
'ProInvitationsBundle:Invitations:inviteEmail.html.twig',
array('community' => $community, 'inviter' => $inviter, 'url'=>$imgUrl)
), 'text/html');
有关如何使用SwiftMailer的更多详细信息,Read the Documentation总是好的
更新
要将图像包含在树枝模板中,您可以像使用任何其他树枝变量一样使用它:
<img src="{{ url }}">
答案 1 :(得分:0)
我只是想补充一下Sehael的回答。
这是您生成完整网址的方式。您可以使用请求服务获取基本URL:
$request = $this->container->get('request');
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$url = $baseurl . '/img/logo.png';