Envoi de mail par PHP à partir d'un SMTP distant

Messages postés
55
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
3 octobre 2012
- - Dernière réponse : cs_AcarnanDragoon
Messages postés
55
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
3 octobre 2012
- 4 mai 2010 à 14:36
Bonjour à toutes et à tous,

Voila mon problème :

Je dois envoyer des mails de confirmation lors d'une inscription sur un site. Auparavant j'utilisais la fonction mail de php avec les informations relatives au SMTP de mes sites.

Dans le cas présent, le site sera sur un serveur n'ayant pas de serveur SMTP. On me fournit donc les informations nécessaire sur un autre serveur SMTP avec un login et mot de passe.

Problème, comment puis-je envoyé un mail à partir de php en utilisant le SMTP distant ?

Si vous avez des solutions je suis preneur, merci d'avance pour votre aide et bonne journée.
Afficher la suite 

11 réponses

Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
11
0
Merci
Salut,

La documentation à réponse à ce genre de question :
Options de configuration pour le mail

Il faut juste ne pas laisser "SMTP" sur "localhost" et c'est bon.
Commenter la réponse de TychoBrahe
Messages postés
55
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
3 octobre 2012
0
Merci
Bonjour et merci pour cette réponse rapide.

Ceci étant je n'ai pas accès au php.ini et le webmaster ne souhaite pas le modifier. je dois donc trouver un moyen me permettant d'envoyer des mails à partir d'un SMTP avec un compte que la personne me donne.

D'après lui il avait déjà utilisé cette méthode en utilisant la classe mail::factory, mais c'est du pear et je ne sais pas l'utiliser.

Y aurait il d'autres moyens ?

Merci en tout cas pour votre aide, bonne journée à tous !
Commenter la réponse de cs_AcarnanDragoon
Messages postés
127
Date d'inscription
vendredi 16 octobre 2009
Statut
Membre
Dernière intervention
10 décembre 2012
0
Merci
Bonjour

"Je dois envoyer des mails de confirmation lors d'une inscription sur un site. Auparavant j'utilisais la fonction mail de php avec les informations relatives au SMTP de mes sites. "

Si le site ou il y a le formulaire et pas le SMTP tu fais pointer le
lien du mail de confirmation sur un serveur ou tu as un SMTP.

Ton script d'envoi d'email se trouvant sur le serveur ou il y a un SMTP.
Seul impératif l'email expéditeur doit être dans le domaine du SMTP.

J'utilise cela pour un site Web ou il n'y a pas de SMTP et ça fonctionne bien.


Vamos
Commenter la réponse de Vamosplaya
Messages postés
127
Date d'inscription
vendredi 16 octobre 2009
Statut
Membre
Dernière intervention
10 décembre 2012
0
Merci
Oups SUR le site et SI le site

Vamos
Commenter la réponse de Vamosplaya
Messages postés
55
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
3 octobre 2012
0
Merci
Effectivement c'est une méthode ^^ Merci !

Si certains ont d'autres suggestions n'hésitez pas, plus on a de solutions mieux c'est !

Bonne journée à tous !
Commenter la réponse de cs_AcarnanDragoon
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
11
0
Merci
Salut,

Ceci étant je n'ai pas accès au php.ini et le webmaster ne souhaite pas le modifier.

C'est pour ça qu'il existe la fonction ini_set().

Sinon tu peux utiliser directement les sockets, sur ce site tu trouveras pleins de codes déjà fait permettant d'envoyer des mails sans passer par mail().
Commenter la réponse de TychoBrahe
Messages postés
55
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
3 octobre 2012
0
Merci
Bonjour,

Je ne comprend pas à partir du ini_set comment je peux utiliser un smtp distant, sachant qu'il faut que je précise un nom d'utilisateur et mot de passe pour utiliser un compte du smtp distant. Auriez-vous un exemple ?
Commenter la réponse de cs_AcarnanDragoon
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
11
0
Merci
Salut,

Je ne comprend pas à partir du ini_set comment je peux utiliser un smtp distant, sachant qu'il faut que je précise un nom d'utilisateur et mot de passe pour utiliser un compte du smtp distant. Auriez-vous un exemple ?

Regarde donc la documentation de ini_set(). En gros ça va te permettre de forcer des valeurs de la config de php sans toucher au php.ini, ce qui est ce qu'il te faut si tu ne peux pas modifier ce dernier fichier.
Commenter la réponse de TychoBrahe
Messages postés
55
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
3 octobre 2012
0
Merci
Bonjour,

Bon je risque de me faire taper dessus mais bon...

Je vois bien les valeurs qui vont me permettre de configurer le smtp

ini_set("smtp","smtp.mon_smtp.com");
ini_set("port","mon_port");
ini_set("sendmail_from","adresse@mail.com");

Mais comment je peux préciser un mot de passe ?

Merci d'avance et bonne journée à tous !
Commenter la réponse de cs_AcarnanDragoon
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
11
0
Merci
Salut,

Mais comment je peux préciser un mot de passe ?

Désolé, j'avai zappé cette info, la fonction mail() de php ne supporte pas l'authentification.

Bref, pour ceci tu peux utiliser au choix PHPMailer, ou bien la classe Mail comme tu l'as déjà fait (voici un exemple fonctionnel), ou encore un des nombreux scripts présents sur ce site (la bare de recherche est juste sous les menus).
Commenter la réponse de TychoBrahe
Messages postés
55
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
3 octobre 2012
0
Merci
Aurais-je fais une erreur ?
les message d'erreur étant :

Mailer Error: The following From address failed:adressemail


<?php
require("class.phpmailer.php");

$mail =  new PHPMailer();

$mail->IsSMTP(); // set mailer to use SMTP
$mail->Mailer="smtp";
$mail->Host = 'smtp.blabla.bla'; // specify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Port="587";
$mail->Username = 'adressemail'; // SMTP username
$mail->Password = 'motdepasse'; // SMTP password

$mail->From = "adressemail";
$mail->FromName = "nom";
$mail->AddAddress("adressemail",""); // name is optional
$mail->AddReplyTo("adressemail","");


$mail->Subject = "Here is the subject";
$mail->Body = "This is the HTML message body  in bold! ";
$mail->AltBody  = "This is the body in plain text for non-HTML mail clients";

if(!$mail->Send())
{
echo "Message could not be sent. ";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}

echo "Message has been sent";
?>
Commenter la réponse de cs_AcarnanDragoon