Fonction mail avec hotmail

Eléphant du PHP | 331 Messages

20 nov. 2007, 05:49

Bonjour,

J'ai un étrange problème.

J'ai fait un extranet pour un client.

Lorsqu'il ajoute un fichier a consulter dans l'extranet les usagers reçoivent un courriel pour les en avertir.

Ça sa fonctionne.

Mais lorsqu'il crée un utilisateur le script envoie a l'utilisateur un courriel contenant sont login et mot de passe.

Ça sa pose problème, pour hotmail et sympatico (il fonctionne avec hotmail ils ont un partenariat quelquonque) sa va direct dans les courriers inrésirables même en passant par Outlook.

Pourtant, j'utilise la même fonction.

Voici le code qui fonctionne:
			$head="From: $courriel";	
			$sujet="Un nouveau document vous attend dans l'extranet de Autobus Neron inc.";			
			$mailbody="Un nouveau document vous attend dans l'extranet de Autobus Neron inc.\n";
			$mailbody.="".addslashes($_POST["nom"])."\n\n";
			$mailbody.="".addslashes($_POST["description"])."\n\n";
			$mailbody.="http://www.autobusneron.ca/intranet/\n\n";

 			$connect=mysql_connect($host, $login, $password) or die("Could not connect to database in localhost!");
			$result=mysql_select_db($db) or die("Could not select database");
 			$sqlD = "select * from user order by user_id ASC";
			$queryD=mysql_query($sqlD) or die("Erreur sqlD");
			while($row2=mysql_fetch_array($queryD))
			{
			$result=mail($row2["courriel"],$sujet,$mailbody,$head); 	
			}
Voici le code qui ne fonctionne pas bien:
mysql_connect($host, $login, $password);
mysql_select_db($db);
$querycouriel="select * from user where user_id='".$user_id."'";
$resultcouriel=mysql_query($querycouriel);
$row1=mysql_fetch_array($resultcouriel);

$head2="From: $courriel";
$sujet="Votre accès utilisateur sur www.autobusneron.ca/intranet/";

$mailbody="Voici vos informations d'acces au site Web de www.autobusneron.ca/intranet/\n";
$mailbody.="Vous pourrez passer des commandes directement sur notre site Web\n";
if (isset($_POST['prenom'])){
	$mailbody.="Prenom : ".$_POST['prenom']."\n";
}
if (isset($_POST['nom'])){
	$mailbody.="Nom : ".$_POST['nom']."\n";
}
if (isset($_POST["courriel"])){
	$mailbody.="Courriel : ".$_POST['courriel']."\n";
}
if (isset($_POST["password"])){
	$mailbody.="Mot de passe : ".$_POST["password"]."\n";
}
$result2=mail($_POST["courriel"],$sujet,$mailbody,$head2);

Pouvez-vous m'aider svp?

Merci!

Eléphant du PHP | 319 Messages

20 nov. 2007, 10:05

je suis en train de bosser sur Swift Mailer (un script qui permet l'envoi de mails via differents protocoles dont SMTP). c'est tres pratique et bien foutu. c'est plus souple que la fonction mail() aussi

je me posais la meme question que toi: comment ca se fait que mes emails soient directement envoyes a la poubelle??

la reponse: ca ne vient pas du script vu que l'email part bien.


de ce que j'ai compris:
- les serverus de mails attribuent une note a l'email que tu envoies. si la note est ok: il passe dans la boite de reception. sinon c'est la boite a spam. le but etant pour toi d'ameliorer ta note.

- ne pas envoyer que des messages en html.
- ne pas envoyer seulement des images
- ne pas envoyer des fichiers trop lourds
- eviter les mots que l'ont retrouve toujours dans les spams (dommage pour toi si tu vends des agrandisseurs de penis suedois... ;) )
- bosser sur ton serveur SMTP (si tu decides de l'utiliser)

a propos de ca (et toujorus ce que j'ai compris:):

- tu dois envoyer d'une adresse mail existante
- ton SMTP dois avoir un enregistrement MX
- tu dois avoir un enregistrement SPF

ca veut dire quoi?

ca veut dire que le serveur qui va traiter ton email (yahoo, hotmail...) va verifier que tu envoies bien un email depuis ton serveur et que tu vas pas utiliser le serveur d'un "copain" pour envoyer un spam.
ton serveur va etre pinger pour verifier que ton SMTP est autorise a envoyer des emails comme ca.
par aillerus ton serveur petu etre blackliste ce qui n'arrange rien...

bienvenue dans le monde bien sympa des emails...
ca tourne vite a l'enfer si tu veux faire des campagnes marketing.


ce que tu peux faire: a un moment ou l'tuilisateur est sur ton site, faire en sorte qu'il voit un message qui leur dit de checker leur boite a SPAM + comment faire pour enlever l'emai lde la boite a SPAM en fonction de leur serveur de mail (yahoo, hotmail...)

sur mon site precedent c'etait en vert fluo et en gras. meme les aveugles devaient voir ce message tellement ca choquait...

j'espere que ca t'aidera...
niveau: pas terrible en php mais je me soigne...

ViPHP
ViPHP | 4039 Messages

20 nov. 2007, 11:38

sur mon site precedent c'etait en vert fluo et en gras.
Tu pouvais aussi mettre entre <blink>, ça marche bien avec du vert fluo et du gras
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 nov. 2007, 13:19

Essaie en complétant les en-têtes (header)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 319 Messages

20 nov. 2007, 13:28

sur mon site precedent c'etait en vert fluo et en gras.
Tu pouvais aussi mettre entre <blink>, ça marche bien avec du vert fluo et du gras
bon, oui ca n'est pas joli mais bon: on se passe parfois de l'esthetisme pour que ca marche
et puis je ne suis pas un pro... donc je me contente de ce qui marche et que je comprends ;)

ca ne m'empeche pas d'apprendre par contre... une suggestion? ;)
niveau: pas terrible en php mais je me soigne...

Eléphant du PHP | 331 Messages

21 nov. 2007, 05:39

J'ai passé une dizaine d'heure aujourd'hui là-dessus, j'ai le cerveau en compote.

Je vous colle mon code modifié il a maintenant des entetes mais se retrouve toujours dans les couriers indésirable.

En espérant que vous pourrez m'aider.
$sujet="Votre accès utilisateur sur www.autobusneron.ca/intranet/";	
		$boundary=md5(uniqid(time()));
		$headers="From: ".$yourname." <".$courriel.">\n";
		$headers.="Reply-To: ".$yourname." <".$courriel.">\n";
		$headers.="MIME-Version: 1.0\n";
		$headers.="Content-Type: multipart/alternative; boundary=\"".$boundary."\"\n";
		$headers.="X-Sender: ".$_SERVER['REMOTE_ADDR']."\n";
		$headers.="X-Mailer: PHP/".phpversion()."\n";
		$headers.="X-Priority: 3\n"; 
		$headers.="Return-Path: <".$courriel.">\n";
		$headers.="This is a multi-part message in MIME format.\n";

		$mailbody = "--".$boundary."\n";
		$mailbody.="Content-Type: text/plain; charset=\"iso-8859-1\"\n";
		$mailbody.="Content-Transfer-Encoding: quoted-printable\n";
		$mailbody.="\n";
		$mailbody.="Voici vos informations d'acces au site Web de www.autobusneron.ca/intranet/\n";
		$mailbody.="Vous pourrez passer des commandes directement sur notre site Web\n";
		if (isset($_POST['prenom'])){
		$mailbody.="Prenom : ".$_POST['prenom']."\n";
		}
		if (isset($_POST['nom'])){
		$mailbody.="Nom : ".$_POST['nom']."\n";
		}
		if (isset($_POST["courriel"])){
		$mailbody.="Courriel : ".$_POST['courriel']."\n";
		}
		if (isset($_POST["password"])){
		$mailbody.="Mot de passe : ".$_POST["password"]."\n";
		}
		$mailbody.="http://www.autobusneron.ca/intranet/\n\n";
		$mailbody.="\n";
		$mailbody.="--".$boundary."--\n";

$result2=mail($_POST['courriel'],$sujet,$mailbody,$headers);

Eléphant du PHP | 319 Messages

21 nov. 2007, 06:07

un petit check ici: http://www.webrankinfo.com/forums/viewtopic_45659.htm

ils parlent pas mal de la fonction mail() et des spams chez hotmail on dirait
niveau: pas terrible en php mais je me soigne...

ViPHP
AB
ViPHP | 5818 Messages

21 nov. 2007, 07:11

Malheureusement j'ai pas la soluce. Juste pour dire qu'il y a trois jours, j'ai rencontré quelqu'un qui m'a dit avoir abandonné son adresse hotmail car il ne recevait pas tous ses mails... :x

Eléphant du PHP | 331 Messages

21 nov. 2007, 22:54

Choubix j'avais vu ce post merci et j'y ai tout essayé y compris open spf mais sa n'a rien changé.

Cependant, J'ai enfin réussie d'une autre manière.

J'estime a 20h le temps perdu et réellement perdu car la cause de l'envoie dans courriers indésirable est tellement simple et stupide.

J'ai recommencé a zéro ligne par ligne en commençant de la dernière vers la première en testant après chaque ajout de ligne de code.

J'en suis gêné de la solution

:oops:

Hotmail n'aime pas les caractès accentué dans le titre du message. Et oui dès que j'ai ajouté la ligne de titre suivant sa a été aux junk mail:
$sujet="Votre accès utilisateur sur www.autobusneron.ca/intranet/";
J'ai donc remplacé le "è" par un "e" et maintenant sa fonctionne.

Quelqu'un peut m'expliquer celà?

Voici mon code final:
			$head="Content-Type: text/plain; charset=\"iso-8859-1\"\n";			
			$head.="From: $courriel";
			
			$sujet="Votre acces utilisateur sur www.autobusneron.ca/intranet/";			
			$mailbody="Voici vos informations d'acces au site Web de www.autobusneron.ca/intranet/\n";
			if (isset($_POST['prenom'])){
			$mailbody.="Prenom : ".$_POST['prenom']."\n";
			}
			if (isset($_POST['nom'])){
			$mailbody.="Nom : ".$_POST['nom']."\n";
			}
			if (isset($_POST["courriel"])){
			$mailbody.="Courriel : ".$_POST['courriel']."\n";
			}
			if (isset($_POST["password"])){
			$mailbody.="Mot de passe : ".$_POST["password"]."\n";
			}
			$mailbody.="http://www.autobusneron.ca/intranet/\n\n";

			$result=mail($_POST["courriel"],$sujet,$mailbody,$head); 
Merci à tous!!

Eléphant du PHP | 319 Messages

22 nov. 2007, 04:02

t'en fais pas: tu n'as pas a rougir...

et en plus ca me sera utile de savori que les caracteres accentues ne passent pas sur hotmail!

bon courage!

ps: pourquoi tu n'essaierais pas phpmailer ou swift mailer avec ton serveur smtp?
niveau: pas terrible en php mais je me soigne...