Envoie mail php

Fermé
Signaler
Messages postés
221
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
26 décembre 2009
-
Messages postés
954
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
3 mars 2014
-
Bonjour,
1ère question
j'ai installé un script de contact sur mon serveur web mais quand je le remplis il me marque
Votre message nous est bien parvenu !

mais 2 heures plus tard je n'ai toujours rien
quel pourrait être le problème ??
2ème questions
je me suis dit je vais installer le script sur un hébergeur où ça fonctionne et je vais faire une include
du coup j'aimis ça :
<?php
include("http://nomdusite.com/contact.php");
?>

Mais l'hébergeur me donne cette erreur :
Warning: file_get_contents(contacterreur.html) [function.file-get-contents]: failed to open stream: No such file or directory in /home/******/web/www/****//contact.php on line 601

Que puis je faire pour que je puisse inclure ma page php?
Merci d'avance
Cordialement Jeanba88

14 réponses

Messages postés
954
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
3 mars 2014
85
salut perso pour mon formulaire je l'ai nommé "index.php" dans le dossier contact, le resultat dans la barre d'adress est http://monsite.com/contact... Pour le reste je sais pas trop lol, une pierre à l'edifice ?!
0
Messages postés
221
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
26 décembre 2009
16
euh je ne peut plus modifier mais en faite le message d'erreur c'est ça :
Warning: include(http://ffefqzdzv.com/contact.php) [function.include]: failed to open stream: No such file or directory in /home//web/www//public/related/contact.php on line 2

Warning: include() [function.include]: Failed opening 'http://frfv.com/contact.php' for inclusion (include_path='.:/usr/local/php-5.2.9/lib/php') in /home//web/www///public/related/contact.php on line 2
0
Messages postés
11760
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
8 août 2019
2 336
Pour le premier problème comme quoi tu ne reçois jamais d'e-mail : note que les e-mails sont envoyés à partir d'un serveur SMTP. Pour envoyer un e-mail à partir d'un serveur WEB il faut établir la connexion avec un serveur SMTP.
Soit tu en installes un localement (EXIM ou autre), soit tu n'utilises pas la fonction mail() directement mais tu te connectes à un serveur mail distant (utilise une librairie toute prête du genre PHPMailer)

Pour le second problème, tu ne peux heureusement pas faire un include d'un fichier PHP distant. Enfin, tu peux mais ça ne donnera pas le résultat escompté. Parce que le serveur distant ne fournira pas au serveur local directement le fichier PHP, il va d'abord l'interpréter, puis ensuite le transmettre.

En faisant sur mon serveur local un include("https://www.commentcamarche.net/index.php3"); je n'exécute pas le code dans index.php3, il est exécuté par le serveur WEB de CCM. Ce que je récupère moi, ce n'est plus du code PHP mais du code HTML.

Si tu veux exécuter à proprement dit le fichier distant, il faut soit désactiver l'interpréteur PHP sur le serveur distant (ce qui est très dangereux puisque le code PHP sera visible à quiconque possède l'adresse du fichier), soit (j'imagine) établir une connexion sécurisée mais je ne sais pas du tout comment ça peut marcher je te laisse chercher.
0
Messages postés
221
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
26 décembre 2009
16
j'ai essayer phpmailer mais j'ai rien compris ^^ peut tu m'aider ?
0
Messages postés
11760
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
8 août 2019
2 336
Il te faut un serveur smtp !
Certains services d'hébergement en proposent peut-être pour te connecter depuis un hôte extérieur, je ne sais pas.

Mais si tu héberges en local tu devrais t'installer un smtp local. Exim, Qmail, Exchange .... Par contre je n'ai pas la moindre idée de comment ça se paramètre.
0
Messages postés
954
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
3 mars 2014
85
tiens, ce script est très compréhensible et il a le mérite de marcher:

<div class="yop">
<form action="<?=$_SERVER['PHP_SELF']?>" method="post" enctype="application/x-www-form-urlencoded">
<fieldset>
<legend>Votre message</legend>
<table border="0">
<tr>
<td>Votre nom</td>
<td><input type="text" name="name" size="10" maxlength="10"/></td>
</tr>
<tr>
<td>Votre prénom</td>
<td><input type="text" name="surname" size="10" maxlength="10"/></td>
</tr>

<tr>
<td>Votre message</td>
<td><textarea name="message" rows="8" cols="45">Votre message ici.</textarea>
</td>
</tr>
<tr>
<td colspan="2">  <input type="submit" name="envoie" value="OK"/></td>
</tr>
</table>
</fieldset>
</form>
</div>

<?php


if(isset($_POST['name'])AND isset($_POST['surname'])AND isset($_POST['message']))
{

$objet="message";
$text.="De ".$_POST['name'].".\r\n";
$text.="".$_POST['surname'].".\r\n";
$text.="".$_POST['message'].".\r\n";

if(mail("jsuispala@hotmail.fr",$objet,$text))
{
echo "<h1>Le mail a bien était envoyé</h1>";
}
else
{
echo "<h1>Le mail n'a pas était envoyé: recommencez!</h1>";
}
}
?>

enregistre cette page sous index.php dans le dossier contact, quand les personnes vont arriver sur contact cette page s'affichera et au clic tu recevras le mail sans probleme dans les 5 secondes, enjoy !
0
Messages postés
954
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
3 mars 2014
85
sinon au pire je t'envoie le mien sous forme de zip qui est franchement mieux, tu peux le voir à cette adresse jusqu'à ce soir minuit:

http://ace-zone.net/contacts/

test le j'suis pas mécontent du boulot :p (mais j'vais encore affiner) :p
0
Messages postés
11760
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
8 août 2019
2 336
Hé mais j'y pense, je suis parti dans mes idées mais en fin de compte ton serveur web est installé localement ou il est hébergé par un service approprié ?
0
Messages postés
221
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
26 décembre 2009
16
niconovice : je veut bien ton script ;)
yoan : le loueur de l'hébergement chez qui je suis s'appelle allo-heberge.com voila :)
0
Messages postés
11760
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
8 août 2019
2 336
Pardon, je ne sais pas pourquoi mais j'étais persuadé sur tu travaillais localement.

Avant d'aller piquer du code à droite-à gauche qui ne servira à rien si tu ne peux pas envoyer un bête e-mail commence par aller voir dans la doc fournie par ton hébergeur que la fonction mail(), si tu l'utilises est activée ou bien (si mail() ne fonctionne pas) pour connaître l'hôte/le login/le mdp à utiliser pour utiliser le serveur smtp (données qu'il faudra rentrer dans PHPMailer).

Par la même occasion donne-nous ton code pour la page contact.php
0
Messages postés
221
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
26 décembre 2009
16
Je vais envoyer un mail à mon hébergeur pour savoir je vous dis la réponse après
0
Messages postés
11760
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
8 août 2019
2 336
Donne nous ton code, si ça se trouve ton script il est foireux :)
0
Messages postés
221
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
26 décembre 2009
16
Mon script a été tester par mes soins sur un autre hébergeur (000webhost) et il fonctionne donc à mon avis ça vient pas de lui
mais je le donne quand même :
<?php
	/*
		********************************************************************************************
		CONFIGURATION
		********************************************************************************************
	*/
	// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
	$destinataire = 'jean-ba88@hotmail.fr';

	// copie ? (envoie une copie au visiteur)
	$copie = 'oui';

	// Action du formulaire (si votre page a des paramètres dans l'URL)
	// si cette page est index.php?page=contact alors mettez index.php?page=contact
	// sinon, laissez vide
	$form_action = '';

	// Messages de confirmation du mail
	$message_envoye = "Votre message nous est bien parvenu !";
	$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

	// Message d'erreur du formulaire
	$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

	/*
		********************************************************************************************
		FIN DE LA CONFIGURATION
		********************************************************************************************
	*/

	/*
	 * cette fonction sert à nettoyer et enregistrer un texte
	 */
	function Rec($text)
	{
		$text = trim($text); // delete white spaces after & before text
		if (1 === get_magic_quotes_gpc())
		{
			$stripslashes = create_function('$txt', 'return stripslashes($txt);');
		}
		else
		{
			$stripslashes = create_function('$txt', 'return $txt;');
		}

		// magic quotes ?
		$text = $stripslashes($text);
		$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
		$text = nl2br($text);
		return $text;
	};

	/*
	 * Cette fonction sert à vérifier la syntaxe d'un email
	 */
	function IsEmail($email)
	{
		$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
		return (eregi($pattern,$email)) ? true : false;
	};

	$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin

	// si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
	$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
	$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
	$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
	$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';

	if (isset($_POST['envoi']))
	{
		// On va vérifier les variables et l'email ...
		$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
		$err_formulaire = (IsEmail($email)) ? false : true;

		if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
		{
			// les 4 variables sont remplies, on génère puis envoie le mail
			$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";

			// envoyer une copie au visiteur ?
			if ($copie == 'oui')
			{
				$cible = $destinataire.','.$email;
			}
			else
			{
				$cible = $destinataire;
			};

			// Remplacement de certains caractères spéciaux
			$message = html_entity_decode($message);
			$message = str_replace('&#039;',"'",$message);
			$message = str_replace('&#8217;',"'",$message);
			$message = str_replace('<br>','',$message);
			$message = str_replace('<br />','',$message);

			// Envoi du mail
			if (mail($cible, $objet, $message, $headers))
			{
				echo '<p>'.$message_envoye.'</p>'."\n";
			}
			else
			{
				echo '<p>'.$message_non_envoye.'</p>'."\n";
			};
		}
		else
		{
			// une des 3 variables (ou plus) est vide ...
			echo '<p>'.$message_formulaire_invalide.' <a href="contact.php">Retour au formulaire</a></p>'."\n";
			$err_formulaire = true;
		};
	}; // fin du if (!isset($_POST['envoi']))

	if (($err_formulaire) || (!isset($_POST['envoi'])))
	{
		// afficher le formulaire
		echo '<form id="contact" method="post" action="'.$form_action.'">'."\n";
		echo '	<fieldset><legend>Vos coordonnées</legend>'."\n";
		echo '		<p>'."\n";
		echo '			<label for="nom">Nom :</label>'."\n";
		echo '			<input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" />'."\n";
		echo '		</p>'."\n";
		echo '		<p>'."\n";
		echo '			<label for="email">Email :</label>'."\n";
		echo '			<input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" />'."\n";
		echo '		</p>'."\n";
		echo '	</fieldset>'."\n";

		echo '	<fieldset><legend>Votre message :</legend>'."\n";
		echo '		<p>'."\n";
		echo '			<label for="objet">Objet :</label>'."\n";
		echo '			<input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="3" />'."\n";
		echo '		</p>'."\n";
		echo '		<p>'."\n";
		echo '			<label for="message">Message :</label>'."\n";
		echo '			<textarea id="message" name="message" tabindex="4" cols="30" rows="8">'.stripslashes($message).'</textarea>'."\n";
		echo '		</p>'."\n";
		echo '	</fieldset>'."\n";

		echo '	<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>'."\n";
		echo '</form>'."\n";
	};
?>
0
Messages postés
11760
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
8 août 2019
2 336
Oui ça a l'air bon.

Mais les mails servers de ton hébergeur sont peut-être blacklistés chez hotmail. D'ailleurs hotmail est particulièrement chiant avec ça (et pourtant il n'est pas plus résistant au SPAM que les autres). Essaye avec plusieurs autres adresses de destination.
0
Messages postés
221
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
26 décembre 2009
16
je regarderai ça merci
0
Messages postés
954
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
3 mars 2014
85
il est super ton script, verifie dans tes "indesirables/spams" tes mails doivent y etre
0
Messages postés
221
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
26 décembre 2009
16
ils viennent de me répondre en me disant que si c'était un form mail ça devrai fonctionner mail la ce que je fais dans le script c'est un form mail ??
0
Messages postés
11760
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
8 août 2019
2 336
Oui mais bon on s'en fout de leur formulaire mail, ce qu'on veut savoir c'est si la fonction mail() fonctionne réellement :) Mais bon, si ils n'ont rien dit ça doit être que oui.

T'as essayé avec une autre adresse genre gmail, free ou autre ?
0
Messages postés
221
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
26 décembre 2009
16
non je n'ai pas essayer mais je vais le faire
edit : cela fonctionne sur gmail mais comment faire pour que ça arrive sur hotmail ??
0
Messages postés
11760
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
8 août 2019
2 336
Les serveurs de ton hébergeur sont peut-être blacklistés suite à des abus.

En théorie lorsqu'hotmail refuse un mail "for policy reasons" il envoie un e-mail explicite au "Return Path". Mais tu n'as pas forcément accès à cette boîte mail. C'est ton hébergeur qui peut faire avancer les choses. D'abord vérifier qu'effectivement les e-mail sont refusés (en utilisant SNDS) puis en faisant le nécessaire pour rétablir la situation.

Envoie-moi un e-mail à partir de PHP à l'adresse que tu peux lire dans mon profil, pour voir.
0
Messages postés
221
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
26 décembre 2009
16
comment je peut connaitre l'ip ??
0
Messages postés
11760
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
8 août 2019
2 336
L'IP c'est 194.150.236.209

Par contre tu ne devrais pas envoyer tes mails avec un champs From:uneadressehotmail@hotmail.fr
Puisque hotmail sait très bien que seuls ses mx peuvent envoyer des mails hotmail. C'est peut-être là la source du problème (mais si les serveurs ont été bannis ça ne fonctionnera pas immédiatement même si tu changes de From il faut que ton hébergeur s'en occupe)

La faute ne tombe pas forcément sur toi. C'est l'inconvénient de l'hébergement mutualisé, c'est peut-être quelqu'un d'autre qui a commis un abus avec son site.

Sinon SPF est activé et semble bien fonctionner donc ça ne pose pas de problème. Rien de particulier dans les en-têtes.
0
Messages postés
221
Date d'inscription
jeudi 17 mai 2007
Statut
Membre
Dernière intervention
26 décembre 2009
16
il faudrait que je trouve un moyen d'avoir une redirection d'email gratuit
merci de votre aide
0
Messages postés
954
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
3 mars 2014
85
salut,
file mon ton adresse mail si tu veux pour que je t'envoi le zip de mon formulaire mais il y a un bug que je n'ai pas eu le temps de voir (le bug c'est que le champ mail te renvoi le mail de l'envoyeur et pas celui rempli dans le champ) pas terrible mais bon celui ci fonctionne en tout les cas, tu peux toujours tester. ha, encore une chose vu qu'il est lié à une librairie il est assez lourd (50mo je crois) mais bon pas tres grave comme truc.
voilà, a+
0