Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/11/2010, 11h37   #1
Invité de passage
 
Inscription : novembre 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 8
Points : 0
Points : 0
Par défaut Envoi d'un email avec Swift Mailer

Bonjour,

Je développe actuellement un projet avec Symfony (version 1.4, le plugin Swift Mailer est normalement intégré) et je rencontre un problème pour envoyer des emails.
J'ai codé une page de contact par le biais de laquelle un internaute devra pouvoir envoyer un message au site. Ce formulaire est très simple et est constitué d'un champ Nom/prénom/email/message.

Voici le code de mon actions.class

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public function executeIndex(sfWebRequest $request)
  {
		$this->form = new ContactForm();
 
 
		if ($request->isMethod('post'))
		{
			$this->form->bind($request->getParameter('contact'), $request->getFiles('contact'));
 
 
			if($this->form->isValid())
			{
				//$contact = $this->form->save();
 
				$values=$this->form->getValues();
 
				 $transport = Swift_SmtpTransport::newInstance('smtp.live.com', 587)
					->setUsername('mon_user_name')
					->setPassword('mon_mdp');
 
				$mailer = Swift_Mailer::newInstance($transport);
 
				$message = Swift_Message::newInstance()
					->setFrom('adresse_expediteur')
					->setTo('adresse_destinataire')
					->setBody($this->form->getValue('Message'));
					->setBody('Voila un beau message');
 
 
 
				$mailer->send($message); 
 
				$mailer = $this->getMailer();
 
				$this->getMailer()->composeAndSend(
				  'adresse_expediteur',
				  'adresse_destinataire',
				  'Subject',
				  'Body'
				);
 
				$this->redirect('contact/merci?'.http_build_query($values));
			}
		}
Évidemment, j'ai remplacé mon_user_name, mon_mdp, adresse_expediteur et adresse_destinataire par les valeurs correspondantes, mais cela ne marche pas.
Je n'arrive pas à localiser le problème. Auriez-vous une petite idée ?

Merci d'avance !
colimasson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 14h30   #2
Futur Membre du Club
 
Jean-Yves
Développeur Web
Inscription : mai 2007
Messages : 49
Détails du profil
Informations personnelles :
Nom : Jean-Yves
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2007
Messages : 49
Points : 17
Points : 17
Pour moi, vite fait, c'est ton ";" , aussi je suis pas sure que l'on puisse ajouter plusieurs ligne de "->setBody" ? Essaye avec une seule ligne pour tester si cela ne fonctionne toujours pas ?

->setBody($this->form->getValue('Message'));
->setBody('Voila un beau message');
jylac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 11h09   #3
Invité de passage
 
Inscription : novembre 2010
Messages : 8
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 8
Points : 0
Points : 0
Merci pour ta réponse, mais je crois en fait que le problème vient tout simplement du fait que je teste l'envoie en local...

A moins de m'inscrire sur un serveur web gratuit, je ne vois pas de moyen de tester l'envoi d'email en local. Auriez-vous une idée ?
Et si jamais, connaissez-vous des serveurs web gratuits pas mal pour faire mes tests ?

Merci d'avance !
colimasson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 22h47   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Tu peux paramétrer swift pour qu'il utilise un serveur un smtp avec ou sans authentification.

Ceci doit te permettre d'envoyer depuis ton poste, pour peu que tu sois connecté à internet.

Si non, des hébergements de qualités capable de travailler avec symfony et qui donnent un libre accès à l'envoie de mail, non, je ne connais pas. Même en payant, c'est déjà pas évident...
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 18h01   #5
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 77
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 77
Points : 12
Points : 12
En local avec une connexion internet, il suffit de configurer ton fichier php.ini

Tu fixes le smtp et le port que tu utilises
Dans ce même fichier tu décommentes la ligne contenant " openssl "
Tu redémarre le serveur.

sur symfony 1.4 tu peux aussi configurer l'envoi d'email ainsi:
dans le fichier factories.yml
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
prod:
  logger:
    class:   sfNoLogger
    param:
      level:   err
      loggers: ~
 
  mailer:
    class: sfMailer
    param:
      logging:           %SF_LOGGING_ENABLED%
      charset:           %SF_CHARSET%
      delivery_strategy: realtime
      transport:
        class: Swift_SmtpTransport
        param:
          host:       host utilisé
          port:       port utilisé
          encryption: ssl
          username:   s'il y en a un
          password:   s'il y en a un
et dans ton action
Code :
1
2
3
4
5
6
7
8
9
10
 
$mailing = $this->getMailer()->compose(
					$sender,
					$receiver,
					$objet,
					'')->
                                        setBody($body, 'text/html');
 
 
 $this->result = $this->getMailer()->send($mailing);
Relances ton script; si ça ne marche pas va faire un tour et tu reviens , tu auras les idées plus clair!
lepopol est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h11.


 
 
 
 
Partenaires

Hébergement Web