2012-04-03 12 views
18

Ho problemi nell'invio di e-mail con symfony2 e swiftmailer. Sono anche un po 'perso su come eseguire il debug di questo problema. Di seguito è riportato il codice. Per prima cosa sto creando un modulo da visualizzare. Su invio (richiesta-> metodo == post), quindi provo a inviare l'e-mail. Non ricevo errori e mi sta portando alla pagina di ringraziamento, tuttavia, non ricevo alcuna email. Ho provato su prod e dev. In dev ho aperto il profiler dopo l'invio e mostra 0 email. Qualsiasi aiuto è apprezzato! Grazie!Symfony2 Swiftmailer non in invio

public function contactAction(Request $request) 
{ 
    $defaultData = array('name' => 'Name', 'email' => 'Email', 'subject' => 'Subject', 'message' => 'Message'); 
    $form = $this->createFormBuilder($defaultData) 
     ->add('name', 'text') 
     ->add('email', 'email') 
     ->add('subject', 'text') 
     ->add('message', 'textarea') 
     ->getForm(); 

    if($request->getMethod() == 'POST') { 
     $form->bindRequest($request); 
     $data = $form->getData(); 
     $message = \Swift_Message::newInstance() 
      ->setSubject($data['subject']) 
      ->setFrom('[email protected]') 
      ->setTo('[email protected]') 
      ->setBody($this->renderView('AdaptiveSiteBundle:Default:email.txt.twig', array('name' => $data['name'], 'message' => $data['message']))) 
     ; 
     $this->get('mailer')->send($message); 

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

    return array("form" => $form->createView()); 
} 
+1

Se si desidera che il profiler mostri i messaggi inviati, è necessario rimuovere il reindirizzamento. –

+0

hai configurato un server di posta? – Flukey

+1

Non ho impostato un server di posta ... Qualche suggerimento su server/documentazione per questo? Sto usando Ubuntu. –

risposta

9

Potete trovare qui l'intera procedura su come inviare e-mail con Symfony2. L'ho appena provato sembra funzionare bene.

http://tutorial.symblog.co.uk/docs/validators-and-forms.html#sending-the-email

http://symfony.com/doc/current/email.html

+0

Buon tutorial, Gmail funziona per me ma non sono stato in grado di utilizzare la configurazione di localhost predefinita. –

+0

Funziona sul mio server locale ma non sul server remoto (online), cosa dovrei fare ??? – krachleur

+1

Controlla i parametri del tuo server remoto per il swiftmailer. Forse hai parametri personalizzati per gli ambienti dev e prod. –

4

Mi capita spesso di impostare la seguente configurazione nel config_dev.yml per -prevent- mail vengono inviati durante i test, forse hanno fatto lo stesso e si è dimenticato?

Se questo è in config_dev.yml, impostarla su false:

swiftmailer: 
    disable_delivery: true 
+0

No, ho controllato e Non ho disabilitato. Questo sta succedendo anche sulla produzione –

+0

Un altro colpo lungo, ma spesso non ho errori nei miei registri Sf2, che appaiono in /var/log/apache2/error.log, vedi qualcosa lì? (Scusa, come ho detto, campo lungo) – Dieter

+0

Dopo aver rimosso il reindirizzamento, vedo che un'email viene inviata attraverso il profiler. Non lo sto ancora ricevendo. Nulla nei registri apache, php o symfony –

22

Puoi post parameters.yml?

Assicurarsi inoltre che lo spooling sia disattivato in modo che l'e-mail possa essere inviata immediatamente. Se si dispone di una voce di spool sotto la configurazione swiftmailer, eliminarlo, per esempio:

 
swiftmailer: 
    transport: %mailer_transport% 
    host:  %mailer_host% 
    username: %mailer_user% 
    password: %mailer_password% 
    spool:  { type: memory } 

dovrebbe essere:

 
swiftmailer: 
    transport: %mailer_transport% 
    host:  %mailer_host% 
    username: %mailer_user% 
    password: %mailer_password% 
+2

Questo funziona per me visto che sto utilizzando il trasporto gmail – Rocco

+0

Grazie non ho visto l'errore (La connessione non può essere stabilita con l'host) – arsenik

0

config.yml

# Swiftmailer Configuration 
swiftmailer: 
    transport: smtp 
    encryption: ssl 
    auth_mode: login 
    host:  smtp.xx.eu 
    username: username 
    password: password 

regolatore/azione

$messageObject = \Swift_Message::newInstance() 
      ->setSubject('Subject') 
      ->setFrom('[email protected]') 
      ->setTo('[email protected]') 
      ->setBody('message'); 
$this->get('mailer')->send($messageObject); 
4

A parte la soluzione di cui sopra, suggerisco di rimuovere o dieexit dalla funzione in cui si usa il codice swiftmailer. Questo risolverà il tuo problema se il tuo codice è corretto.

+0

Sostituire il veloce e sporco 'die()' con 'return new Response()' ha funzionato per me. Grazie! –

+0

Grazie per aver risparmiato tempo –

Problemi correlati