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

cs_AcarnanDragoon
Messages postés
55
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
3 octobre 2012
- 29 avril 2010 à 18:34
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.

11 réponses

TychoBrahe
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
29 avril 2010 à 19:02
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.
0
cs_AcarnanDragoon
Messages postés
55
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
3 octobre 2012

30 avril 2010 à 09:25
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 !
0
Vamosplaya
Messages postés
127
Date d'inscription
vendredi 16 octobre 2009
Statut
Membre
Dernière intervention
10 décembre 2012

30 avril 2010 à 14:00
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
0
Vamosplaya
Messages postés
127
Date d'inscription
vendredi 16 octobre 2009
Statut
Membre
Dernière intervention
10 décembre 2012

30 avril 2010 à 14:01
Oups SUR le site et SI le site

Vamos
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_AcarnanDragoon
Messages postés
55
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
3 octobre 2012

30 avril 2010 à 14:10
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 !
0
TychoBrahe
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
30 avril 2010 à 17:18
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().
0
cs_AcarnanDragoon
Messages postés
55
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
3 octobre 2012

3 mai 2010 à 11:35
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 ?
0
TychoBrahe
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
4 mai 2010 à 00:43
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.
0
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 à 10:42
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 !
0
TychoBrahe
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
4 mai 2010 à 11:26
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).
0
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
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";
?>
0