2015-07-21 70 views
0

我正在實現SwiftmailerBundle,並且一切看起來都很好,但如果發送郵件則不是。我想問問這些郵件存儲在Symfony2裏面的位置。我告訴我的代碼:郵件在Symfony2中的地址?

config.yml

# Swiftmailer Configuration 
swiftmailer: 
    transport: smtp 
    host:  smtp.live.com 
    username: [email protected] #my account 
    password: ******** #my password 
    spool:  { type: memory } 

TablasController.php

public function registroAction() 
{ 
    $peticion = $this->getRequest(); 
    $em = $this->getDoctrine()->getManager(); 
    $user = new User(); //creo el usuario 
    $datos = new Datos(); 
    $user->setDatos($datos); 
    $crearusuario = true; 
    $formulario = $this->createForm(new RegistroUsuarioType(), $user); 


    if ($peticion->getMethod() == 'POST') 
    { 
     $formulario->submit($peticion); 

     $newuser = $this->get('request')->request->get('username'); //recupero el usuario ingresado 
     $em = $this->getDoctrine()->getManager(); 
     $todos = $em->getRepository('AtajoBundle:User')->findByUsuario(); 

     foreach($todos as $todo) 
     { 
      if($todo == $newuser) 
      { 
       $crearusuario = false; 
      } 
     } 

     if ($formulario->isValid() and $crearusuario != false) { 
     $encoder = $this->get('security.encoder_factory')->getEncoder($user); 
     $user->setSalt(md5(time())); 
     $passwordCodificado = $encoder->encodePassword($user->getPassword(), $user->getSalt()); 
     $user->setPassword($passwordCodificado); 

     $em = $this->getDoctrine()->getManager(); 

     //si todo es correcto, busco el rol 'ROLE_USER' de la tabla ROLE.. 
     //y lo relaciono con el usuario. 

     $role = $em->getRepository('ProyectoSeguridadBundle:Role')->findByRole('ROLE_USER'); //busco el rol 
     $user->setRoles($role); //los relaciono 
     $em->persist($user); //persisto el usuario 
     $em->flush(); 

     $mail = $this->get('request')->request->get('email'); 
     $empresa = $this->get('request')->request->get('empresa'); 
     $cuit = $this->get('request')->request->get('cuit'); 
     $localidad = $this->get('request')->request->get('localidad'); 
     $calle = $this->get('request')->request->get('calle'); 
     $altura = $this->get('request')->request->get('altura'); 
     $telefono = $this->get('request')->request->get('telefono'); 
     $celular = $this->get('request')->request->get('celular'); 

     $message = \Swift_Message::newInstance() 
     ->setSubject('Bienvenido a LM Lavoc') 
     ->setFrom('[email protected]') 
     ->setTo($mail) 
     ->setBody(
     $this->renderView(
      'AtajoBundle:Mails:bienvenido.html.twig', 
      array('name' => $newuser, 'mail' => $mail, 'empresa' => $empresa, 'cuit' => $localidad, 
       'calle' => $calle, 'altura' => $altura, 'telefono' => $telefono, 'celular' => $celular) 
     )); 
     $this->get('mailer')->send($message); 

     return $this->redirect($this->generateUrl('home')); 
     } 
    } 

這是用戶記錄的功能,一切工作正常,更重要的是,信息存儲在數據庫中。問題不在於是否發送郵件,無論如何,正如我所見。我還想驗證config.yml中的設置是否正確,我使用hotmail,而不是主機和傳輸是否正確。謝謝大家!

+0

這個問題並不明顯,你的問題是什麼。 – zerkms

+0

郵件在symfony中保存的時候,是在什麼時候提交的? – Geronimo

+0

它們存儲在內存中,完全按照您的指定。它的類名是'Swift_MemorySpool' – zerkms

回答

0

選項1

有您問題相關的一個很好的食譜文章 http://symfony.com/doc/current/cookbook/email/dev_environment.html

這篇文章有很多方法可以知道是否正在發送電子郵件或者不(本地服務器上調試)


選項2

你可能想看看http://mailcatcher.me/ 一旦你安裝了這一點,你可以SMTP配置只是指向由mailcatcher提供了一個和查看所有您的應用程序在發送郵件


選項3

正如您的配置中所提到的,假脫機區正在使用內存。

嘗試將其更改爲基於文件的,並設置在交付之前的郵件將被存儲的路徑(你需要運行swiftmailer:spool:send命令真正發送的電子郵件)

config.yml

swiftmailer: 
    default_mailer: default 
    mailers: 
     delayed: 
      transport: %mailer_transport% 
      host:  %mailer_host% 
      username: %mailer_user% 
      password: %mailer_password% 
      port: %mailer_port% 
      spool: 
       type: file 
       path: "%kernel.root_dir%/spool" 
+0

謝謝,使用選項1,它工作正常。 – Geronimo