[SOLUTION] Mail via fonction PHP mail()

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


yannouk
WRInaute accro
WRInaute accro
 
Messages: 2138
Inscription: Sam Oct 11, 2003 12:35

[SOLUTION] Mail via fonction PHP mail()

Message le Ven Jan 07, 2005 17:02

Au vu du nombre de personnes demandeuses des bons headers pour envoyer un mail en php qui ne passe pas pour du courrier indesirable, voici le code que j'utilise.

teste dans:
-le webmail de OPERA
-Hotmail
-Gmail
-Yahoo Mail

A noter que le script gere les mails HTML et TEXTE brut. Il choisit automatiquement 1 des 2 messages en fonction de la configuration du webmail du receveur (pour des raisons de compatibilite)

Code: Tout sélectionner
$boundary = "-----=" . md5( uniqid ( rand() ) );
$headers = "Reply-to: \"Votresite.com\" <contact@votresite.com>\n";
$headers .= "From: \"Votresite.com\"<contact@votresite.com>\n";
//NOTE: l'adresse email indiquée dans le header From doit etre l'adresse absolue du serveur qui envoie les messages, et peut etre differente de votre adresse de contact si vous etes par exemple sur un serveur dedié partagé. dans mon cas l'adresse specifiee ici est <webusers@mail.nomduserveur.com>
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\"";

$destinataire = "destinataire@du.msg";

$subject = "Sujet de mail";

$message_txt  = "Salut Alphonse\n\n";
$message_txt .= "Ca va ?\n";
$message_txt .= "C'était juste pour savoir..\n\n";
$message_txt .= "A plus\n";
$message_txt .= "toto";

$message_html  = "<html>\n";
$message_html .= "<body>\n";
$message_html .= "<b>Salut Alphonse</b><br><br>";
$message_html .= "Ca va ?<br>";
$message_html .= "<font color=\"red\">C'était juste pour savoir..</font><br><br>";
$message_html .= "A plus<br>";
$message_html .= "<u>toto</u>";
$message_html .= "</body>\n";
$message_html .= "</html>\n";

$message  = "This is a multi-part message in MIME format.\n\n";
$message .= "--" . $boundary . "\n";
$message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n\n";
$message .= $message_txt;
$message .= "\n\n";
$message .= "--" . $boundary . "\n";
$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n\n";
$message .= $message_html;
$message .= "\n\n";
$message .= "--" . $boundary . "--\n";

mail($destinataire, $subject, $message, $headers);



Voila :) Normalement tout fonctionne faites moi part de vos tentatives.

Au passage, les mails envoyés par wri partent en courrier indesirable sur hotmail...La solution est peut etre ici?
A+++
Dernière édition par yannouk le Sam Oct 15, 2005 18:16, édité 3 fois.

fredsoft
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 242
Inscription: Dim Jan 26, 2003 22:39

Message le Ven Jan 07, 2005 17:11

Salut

a tester ta solution mais la question n'est pas de faire fonctionner cela avec opera mail ou autre mais que cela soit pas considéré comme du spam par aol wanadoo club internet et autre....

et la nous sommes tous preneur d'une solution

Stellvia
WRInaute impliqué
WRInaute impliqué
 
Messages: 414
Inscription: Mar Déc 28, 2004 0:02

Message le Ven Jan 07, 2005 17:33

Oui alors la votre sujet m'interesse beaucoup car j'ais de gros probleme avec tiscalie et aol :((((((

Je crois qu'il faudrais vraiment faire une mise au point avec ce probleme de mail() avec php car a mona vis beaucoup de webmaster ( dont moi ) ont des problemes avec ca.
Dernière édition par Stellvia le Ven Jan 07, 2005 17:35, édité 1 fois.


yannouk
WRInaute accro
WRInaute accro
 
Messages: 2138
Inscription: Sam Oct 11, 2003 12:35

Message le Ven Jan 07, 2005 17:33

je pense que le plus restrictif a ce niveau la doit etre hotmail. Et avec eux, ca passe. A mon avis pas de probleme avec les wanadoo et compagnie. Donnez moi votre adresse mail chez un de ces fournisseurs et je vous envoie un mail, on verra bien.
YAN

Stellvia
WRInaute impliqué
WRInaute impliqué
 
Messages: 414
Inscription: Mar Déc 28, 2004 0:02

Message le Ven Jan 07, 2005 17:37

Qu'est ce qu'il faut garder dans ton script dans le cas ou l'on envois que des mails en texte brute ?

J'ais pas compris a quel endrois il choisis un des 2.

fredsoft
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 242
Inscription: Dim Jan 26, 2003 22:39

Message le Ven Jan 07, 2005 17:38

yannouk a écrit:je pense que le plus restrictif a ce niveau la doit etre hotmail. Et avec eux, ca passe. A mon avis pas de probleme avec les wanadoo et compagnie. Donnez moi votre adresse mail chez un de ces fournisseurs et je vous envoie un mail, on verra bien.
YAN


envoie moi un mail sur webmaster@fredsoftwares.com j'ai un anti spam serveur qui aime pas php !!!
sinon j'ai mis un nos dev sur ton script pour tester je te dirai...


yannouk
WRInaute accro
WRInaute accro
 
Messages: 2138
Inscription: Sam Oct 11, 2003 12:35

Message le Ven Jan 07, 2005 17:38

pour le texte brut, enleve ca:

Code: Tout sélectionner
$message_html  = "<html><body><b>Salut Alphonse</b><br><br>";
$message_html .= "Ca va ?<br>";
$message_html .= "<font color=\"red\">C'était juste pour savoir..</font><br><br>";
$message_html .= "A plus<br>";
$message_html .= "<u>toto</u>";

$message  = "This is a multi-part message in MIME format.\n\n";
$message .= "--" . $boundary . "\n";
$message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n\n";
$message .= $message_txt;
$message .= "\n\n";
$message .= "--" . $boundary . "\n";
$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n\n";
$message .= $message_html;
$message .= "\n\n";
$message .= "--" . $boundary . "--\n";


et renomme "message_txt" en "message"


yannouk
WRInaute accro
WRInaute accro
 
Messages: 2138
Inscription: Sam Oct 11, 2003 12:35

Message le Ven Jan 07, 2005 17:42

@fredsoft : ,le mail a été envoyé

Stellvia
WRInaute impliqué
WRInaute impliqué
 
Messages: 414
Inscription: Mar Déc 28, 2004 0:02

Message le Ven Jan 07, 2005 17:42

Ok ca donne :

<?php

$boundary = "-----=" . md5( uniqid ( rand() ) );
$headers = "Reply-to: \"Votresite.com\" <contact@votresite.com>\n";
$headers .= "From: \"Votresite.com\"<contact@votresite.com>\n";
//NOTE: l'adresse email indiquée dans le header From doit etre l'adresse absolue du serveur qui envoie les messages, et peut etre differente de votre adresse de contact si vous etes par exemple sur un serveur dedié partagé. dans mon cas l'adresse specifiee ici est <webusers@mail.nomduserveur.com>
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\"";

$destinataire = "destinataire@du.msg";

$subject = "Sujet de mail";

$message_txt = "Salut Alphonse\n\n";
$message_txt .= "Ca va ?\n";
$message_txt .= "C'était juste pour savoir..\n\n";
$message_txt .= "A plus\n";
$message_txt .= "toto";


mail($destinataire, $subject, $message_txt, $headers);

?>

Je test merci

Par contre tu précise qu'il faut utilisé l'adresse absolus du serveur ,ca voudrais dire que pour plus de chance que le mail arrive il ne faut pas donner d'email style webmaster@sddsds.com .

Je suis chez sivit et chez moi c est webusers@sdXXX.sivit.org , faudrais voir si y a pas moyen de changer ca sur le dédié car c'est vraiment moche j'ais peur que les gens efface direct le mail en voyant un expediteur pareil :/


yannouk
WRInaute accro
WRInaute accro
 
Messages: 2138
Inscription: Sam Oct 11, 2003 12:35

Message le Ven Jan 07, 2005 17:44

si tu specifies From: \"Votresite.com\"<webusers@sdXXX.sivit.org> , c'est bien Votresite.com qui apparait et non webusers@sdXXX.sivit.org ... Donc c'est a peu pres transparent, sauf si on affiche les entetes


yannouk
WRInaute accro
WRInaute accro
 
Messages: 2138
Inscription: Sam Oct 11, 2003 12:35

Message le Ven Jan 07, 2005 17:48

fredsoft vient de me confirmer que ca fonctionne sur son domaine avec antispam activé :D

Stellvia
WRInaute impliqué
WRInaute impliqué
 
Messages: 414
Inscription: Mar Déc 28, 2004 0:02

Message le Ven Jan 07, 2005 17:51

chez moi le mail est bien recu , sujet et headers ok , par contre aucun message apparait c'est bisard ca.

Stellvia
WRInaute impliqué
WRInaute impliqué
 
Messages: 414
Inscription: Mar Déc 28, 2004 0:02

Message le Ven Jan 07, 2005 17:54

le message apparais quand je supprime

$boundary = "-----=" . md5( uniqid ( rand() ) );

A quoi sert cette ligne ? :/

fredsoft
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 242
Inscription: Dim Jan 26, 2003 22:39

Message le Ven Jan 07, 2005 18:03

yannouk a écrit:fredsoft vient de me confirmer que ca fonctionne sur son domaine avec antispam activé :D


effectivement...reste d'autres pb avec outlook en ce qui me concerne...

Stellvia
WRInaute impliqué
WRInaute impliqué
 
Messages: 414
Inscription: Mar Déc 28, 2004 0:02

Message le Ven Jan 07, 2005 18:19

fredsoft > t'as pas eu de probleme avec le message il apparait ?

Chez moi j'ais rien a moins de supprimer la ligne qui fait un espece de truc aleatoire $boundary = "-----=" . md5( uniqid ( rand() ) );

[SOLUTION] Mail via fonction PHP mail()

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Gmail Notifier, Google mail

  • Recherche de citations d'un site en texte brut
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités