2014-02-14 29 views
1

我使用的方法中的下一個代碼發送一種電子郵件:

$message = \Swift_Message::newInstance('smtp.gmail.com', 465, 'ssl') 
     ->setSubject($this->translator->trans("Invitación a la comunidad %community%", array(
      '%community%' => $community->getNiceName() 
     ))) 
     ->setFrom('[email protected]', '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('[email protected]', '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沒有定義的,也是我無法呈現我的模板。任何想法如何實現將圖像嵌入到我定義的模板?

回答

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('[email protected]', '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

UPDATE

要在一根樹枝模板圖像,您可以使用它像任何其他樹枝變量:

<img src="{{ url }}"> 
+0

但是想調用'body'的模板。 – Manolo

+0

我已經更新了我的答案。 $ message-embed()函數返回你需要的東西,所以把它放入一個var並傳遞給模板。 – Sehael

+0

您可以添加Twig文件的代碼來顯示如何使用url嗎?你使用''標籤嗎? –

0

我剛剛希望補充塞爾的答案。

這是您如何生成完整的URL。您可以使用請求服務中獲得的基本URL:

$request = $this->container->get('request'); 
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath(); 

$url = $baseurl . '/img/logo.png'; 
相關問題