8795 sujets

Développement web côté serveur, CMS

Bonjour,

Je souhaite généré l'envoi d'un email au webmester et à l'internaute une fois le formulaire PHP rempli et soumis.

Je tente d'utiliser Swift Mailer mais je ne parviens pas à adapter le code à mon usage perso.

Voici les 2 parties de code qui me pose problème, elles sont en rouge:

Je ne sais pas si je dois mettre mon hébergeur de site ou mon fournisseur d'accès internet et quelle extension .tld ou autre??

Il en va de même dans le code suivant avec : your@adress.tld


<?php
//Create a Swift instance
$swift =& new Swift(new Swift_Connection_SMTP("your_smtp_server.tld"));


//Try sending the email
$sent = $swift->send($message, "your@address.tld", $sender);
//Disconnect from SMTP, we're done
$swift->disconnect();

if ($sent)
{
header("Location: ./success.php");
exit();
}
else
{
header("Location: ./form.php?error=sending_failed");
exit();
}
?>

Merci de votre aide

Modifié par choupy (09 Jun 2010 - 12:47)
J'ai l'habitude d'utiliser Swift par l'intermédiaire de Symfony.
Je le configure généralement de la façon suivante :
$connection = new Swift_Connection_SMTP('localhost', 25);
Bonjour,

your_smtp_server.tld correspond simplement à l'adresse de ton serveur smtp (your smtp server).
Celle-ci est fournie par l'hébergeur mail que tu utilises. Généralement l'adresse est du type smtp.ton_domaine.ton_extension (ex : smtp.alsacreations.com) mais vérifie le avant d'utiliser une quelconque adresse.

L'utilisation de localhost ne fonctionnera (peut être!!! ce n'est pas toujours le cas) que si ton hébergeur te propose un serveur smtp.

Normalement, tu trouveras toutes les informations dans la FAQ de l'hébergeur.
Bonjour,

Merci pour vos réponses.
Je me bats encore avec Swift mailer.

J'ai adapté un script mais cela ne me permet pas de recevoir d'émail me donnant le nom prenom email de l'internaute qui vient de s'inscrire sur le site avec le formulaire de contact.

Je ne sais pas ce qui ne fonctionne pas.

//Load in the files we'll need
//Everything looks ok, we can start Swift

require_once "lib/Swift.php";
require_once "lib/Swift/Connection/SMTP.php";

//Enable disk caching if we can je ne comprends pas ce que c'est et si j'en ai besoin
if (is_writable("/tmp"))
{
Swift_CacheFactory::setClassName("Swift_Cache_Disk");
Swift_Cache_Disk::setSavePath("/tmp");
}

//Create a Swift instance
$swift =& new Swift(new Swift_Connection_SMTP("smtp.strato.com"));

//Create the sender from the details we've been given
$sender =& new Swift_Address($email, $nom, $prenom);

//Create the message to send
$message =& new Swift_Message("Nouveau contact: " . $phone );
$message->attach(new Swift_Message_Part($connu));
$message->attach(new Swift_Message_Part($msg));


//Try sending the email
$sent = $swift->send($message, "webmester@creative-handicap.org", $sender);
//Disconnect from SMTP, we're done
$swift->disconnect();



// - redirection vers une nouvelle page un message de confirmation

header('location:confirmation.php'); //redirection
exit();
/*
- afficher les messages d'erreurs se passe ds le formulaire html php
on ne met rien dans else
*/

}


Merci de votre aide

Choupy
je ne connais pas swift, mais setSavePath doit servir a définir un dossier temporaire pour tes pièces jointe, donc il est bien possible, que ce dossier n'existe pas et donc que cela ne fonctionne pas pour cette raison.

Autre chose c'est que si tu envois par smtp, il faut sûrement définir un login et un mot de passe d'une adresse qui doit exister.


$smtp =& new Swift_Connection_SMTP("smtp.strato.com", 25);//verifier si c'est bien 25 ton port smtp
$smtp->setUsername("tonmail@strato.com");
$smtp->setpassword("tonpass");

Modifié par matmat (09 Jun 2010 - 23:23)
Bonjour,

Je remercie matmat.

J'en suis encore à essayer de faire fonctionner swift mailer.

J'ai chargé la lib au même niveau que mon formulaire de contactet je l'ai renommée Swift.
J'aurai souhaité réaliser le smoke test avant mais je n'ai pas compris l'aide pour le faire.

Voici mon code dans mon formulaire contact pour la partie swift mailer. Je n'utilise plus Strato mais gmail.

<?php
//swift mailer

//Load in the files we'll need
//Everything looks ok, we can start Swift

require_once "lib/Swift.php";
require_once "lib/Swift/Connection/SMTP.php";

/*//Enable disk caching if we can
if (is_writable("/tmp"))
{
Swift_CacheFactory::setClassName("Swift_Cache_Disk");
Swift_Cache_Disk::setSavePath("/tmp");
}*/
$smtp =& new Swift_Connection_SMTP("smtp.gmail.com", 465, Swift_Connection_SMTP::ENC_TLS);
$smtp->setUsername("mon adresse@gmail.com");
$smtp->setpassword("mon mot de passe");
$swift =& new Swift($smtp);


//Create the sender from the details we've been given
$sender =& new Swift_Address($email, $nom);

//Create the message to send
$message =& new Swift_Message("Nouveau contact pour Créative Handicap: " . $nom . $prenom );
$message->attach(new Swift_Message_Part($connu));
$message->attach(new Swift_Message_Part($msg));
$message->attach(new Swift_Message_Part($email));
$message->attach(new Swift_Message_Part($phone));


//Try sending the email
$sent = $swift->send($message, "xxxx@gmail.com", $sender);
//Disconnect from SMTP, we're done
$swift->disconnect();



// - redirection vers une nouvelle page un message de confirmation

header('location:confirmation.php'); //redirection
exit();
/*
- afficher les messages d'erreurs se passe ds le formulaire html php
on ne met rien dans else
*/

}
?>


Merci de votre aide

Choupy
Re bonjour,

J'ai une nouvelle piste mais cela n'aboutit pas non plus.

require_once 'lib/swift_required.php';

// création du mode d'envoi de l'email
$transport = Swift_MailTransport::newInstance('smtp.strato.com',25)
//clf ajout
->setUsername('adresse mail du site crée chez strato')
->setPassword('mot de passe de l'adresse');
// création de la variable pour envoyer le mail
$mailer = Swift_Mailer::newInstance($transport);

// création du message
$subject = 'Nouvelle inscription confirmée';
$content = 'Féliciation '.$prenom.''.$nom.', votre message a bien été enregistré. Nous vous repondrons dans les meilleurs délais.';

$sender = array(' adresse email du site ' => 'Nom de l'expéditeur');

$recepient = array('$email' => '$nom');
$message = Swift_Message::newInstance($subject)
->setFrom($sender)
->setTo($recepient)
->setBody($content);


// envoi du mail
$result = $mailer->send($message);

J'effectue les tests en ligne mais je ne réceptionne pas d'email à l'adresse que je fournie lorsque je complète le champ email du formulaire.

Votre aide est la bienvenue.