Aller au menu - Aller au contenu

[E-mail] Envoyer un e-mail en PHP

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page Précédente  1  2  3  4  5  Suivante
Pseudo Commentaire
Page Précédente  1  2  3  4  5  Suivante
Hors ligne Azote75 # Posté le 12/06/2010 à 11:24:37
Avatar

Ville : Paris
Pays : France métropolitaine

Bonjour c'est ceux prob si quelqu'un a une idee
merci de votre aide
commetn on fait avec le php.ini axactement



Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\publidpe\php\mail.php on line 73
Hors ligne Mrochon # Posté le 14/07/2010 à 13:31:22

Tuto bien expliqué, merci!

Pour les problèmes d'envois avec WAMP,apparemment il ya 2 fichier php.ini a modifier.

Les 2 fichiers se trouvent dans :
wamp\bin\php\php5.3.08\php.ini
wamp\bin\apache\Apache2.2.11\bin\php.ini

Pour les 2 il faut indiquer
STMP= smtp.fai.fr
sendmail_from = mon_adresse_email

Pour moi le problème est résolu.
Hors ligne dutbas # Posté le 24/07/2010 à 23:12:52
Hello World !!!
Avatar

Avis : Bon

Très bon tuto.

Dommage que tu n'explique pas que le fait d'envoyer dans le même eMail le message texte et HTML sert à ce que même les personne dont le webmail n'accepte pas les messages au format HTML peuvent lire tout de même le message. ça serai dommage que les personne qui utilie un vieux webmail ne peuvent pas valider leur inscription ...

De plus, tu aurais du aussi expliquer que la "limite" (variable $boundary) sert uniquement à séparer le message texte du format HTML ...

Et pour finir, cette "limite" ne sert, selon moi, en aucun cas à éviter que son message soit considéré comme un SPAM.

Comme il y a tous de même deux point sombre dans ton tuto (boundary et mail texte / HTML), je te met un 13.


 MacBook Pro 2011 
 iMac 27 pouces 2011 
 
Hors ligne Hell-AstiK # Posté le 15/10/2010 à 20:33:28
Avatar

Ville : Lafenasse
Pays : France métropolitaine

Bonjour, les mails ne veulent pas s'envoyer sur une adresse @live.fr :/ par contre sur @gmail.com ca fonctionne !


Secret (cliquez pour afficher)
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php

//=====Les variables
$destinataire = $_POST['mail']; //L'email du destinataire.
$email_expediteur = 'monmail@hebergeur.fr'; //Compte email de votre hébergement.
$sujet = 'Inscription sur MonJeu';

if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn)\.[a-z]{2,4}$#", $destinataire)) // On filtre les serveurs qui bugs
{
	$passage_ligne = "\n";
}
else
{
	$passage_ligne = "\r\n";
}

$message_texte = 'Bienvenue sur MonJeu !';
$message_texte .='Voici vos identifiant pour vous connecter au jeu :';
$message_texte .='Pseudo : '.$_POST['pseudo'];
$message_texte .='Mot de passe : '.$_POST['mot_passe'];
$message_texte .='Allez à cettre adresse afin de valider votre inscription :';
$message_texte .='http://monsite.com/validation.php?key='.$hash;

$message_html = '<strong>Bienvenue sur MonJeu !</strong><br />';
$message_html .='Voici vos identifiant pour vous connecter au jeu :<br />';
$message_html .='<strong>Pseudo</strong> : '.$_POST['pseudo'].'<br />';
$message_html .='<strong>Mot de passe</strong> : '.$_POST['mot_passe'].'<br />';
$message_html .='<a href="http://monsite.com/validation.php?key='.$hash.'">Cliquez ici pour valider votre inscription</a><br />';
//==========

//=====Création de la boundary
$boundary = "-----=".md5(rand());
//==========

//=====Création du header de l'e-mail
$header = "From: \"MonJeu.com\"<" . $email_expediteur . ">".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"" . $boundary . "\"".$passage_ligne;
//==========

//=====Création du message
$message = 'This is a multi-part message in MIME format.'."\n\n";
$message .= $passage_ligne.$boundary.$passage_ligne;
//=====Ajout du message au format texte
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_texte.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========

//=====Envoi de l'e-mail
mail($destinataire,$sujet,$message,$header);
echo "Un mail de confirmation vous a été envoyer à l'adresse suivante: ".$destinataire.".<br />
Il vous suffit de cliquez sur le lien donner dans ce mail pour activé votre compte<br />
Merci de votre inscription et bon jeu !";

//==========
?>

--- --- --- --- ---
[81] ^^
Image utilisateur
 
Hors ligne --Willy-- # Posté le 13/11/2010 à 09:02:58
Avatar

Ville : Oullins
Pays : France métropolitaine

Vous pouvez aussi rajouter un formulaire si vous voulez.
Hors ligne TEXMAN # Posté le 02/12/2010 à 23:44:50

Études : Université de Bordeaux

bonjour,
avec ma config:
ssmtp et orange pour faire des tests en local lorsqe j'utilise cette syntaxe:
Code : PHP
1
$header.= "Content-Type: multipart/alternative;".$passage_ligne."boundary=\"$boundary\"".$passage_ligne;

le smtp d'orange ne la reconnais pas alors qu'avec:
Code : PHP
1
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"" . $boundary . "\"".$passage_ligne;

ça marche impect.
à la reflexion je ne sais pas d'ou vient le problème (orange?, ssmtp? php ?)...mais j'ai passé des heures avant de trouver.
Si quelqu'un a une explication elle est bienvenue.
Connecté Dominique0796 # Posté le 31/12/2010 à 16:05:09
Pas de victoires sans échecs
Avatar

Avis : Bon

Ce qui serait bien, c'est de préciser l'étiquette ou la priorité du message .. c'est possible ?
 
Hors ligne ben4273 # Posté le 04/01/2011 à 02:48:37

Salut à tous,
en ce qui me concerne j'ai eu un peu de mal à comprendre le code, il est vrai que l'utilité d'un texte standard avec un texte HTML n'est pas très utile dans le même message (si on doit utiliser du HTML on utilisera simplement text/html ou l'on pourra pourra aussi placer du texte "standard")
Il me semble que le boundary ne sert absolument pas a ce que le messages ne se retrouve pas dans les spams, ce sont les headers qui le déterminent (comme cela à déjà été dit).
Aussi non cela mérite quand même un 15/20 à mon avis ;)
Hors ligne skulladminaversion # Posté le 14/02/2011 à 16:44:17
Avatar

Ville : La regrippière
Pays : France métropolitaine

Perso j'ai essayé dans tout les sens, jarrive pas a envoyer les données de mon formulaire ! :colere:

La mortalité, seule magnificance de l'être imparfait, distingué par son ignorance, est la beauté la plus sublime qui soit !
 
Hors ligne paintbox # Posté le 17/02/2011 à 12:34:36

Bonjour,

ce tuto m'a été très utile. Merci !

J'ai juste un soucis c'est que la variable $passage_ligne n'a aucun effet chez moi. Le passage à la ligne ne se fait pas.

J'ai testé sous hotmail, gmail et mail (mac).

Quelqu'un a une idée?

Merci
Hors ligne D40x # Posté le 18/02/2011 à 19:56:21
Avatar

Ville : Vals près le puy
Pays : France métropolitaine
Études : IUT Clermont 1

Je me crée actuellement une petite classe mail

@ Dominique0796
Voici la ligne de code que j'utilise pour ajouter une priorité au mail.

Code : PHP
1
2
3
<?php
$headers .= $crlf . 'X-Priority: ' . $priority; // Avec $priority de type int et compris entre 1 et 5 (3 correspondant à une priorité normale). Plus le chiffre est faible, plus le mail est prioritaire.
?>


@ben4273
Je pense que lorsque les clients mails ne gérant pas le HTML sautent tout simplement la partie dont le content-Type est text/html ce qui explique qu'il faille en créer une seconde dont le content-Type est text/plain.

Les boundary ne servent en aucun cas à éviter que le mail parte dans les SPAMS. ce sont des frontières qui permettent de délimiter les différentes parties du mail comme l'explique très bien le tutoriel.
Ainsi, on déclare la frontière dans le header puis on délimite le début de chaque partie dans le corps du mail pour enfin clore cette frontière à la fin du mail ou de la partie dans laquelle cette frontière a été déclarée.

@paintbox
Concernant le retour à la ligne, j'ai aussi un peu de mal à comprendre cette histoire de \r\n ou de \n d'autant plus que la documentation PHP ne précise rien au sujet des serveurs tournant sur windows ou bien sur Linux.

Citation : PHP.net
Les en-têtes supplémentaires doivent être séparés par un caractère CRLF (\r\n).


Cependant, pour ce qui est du message, voilà ce que préconise la documentation PHP:
Citation : PHP.net
Message à envoyer.

Chaque ligne doit être séparée par un caractère LF (\n). Les lignes ne doivent pas comporter plus de 70 caractères.

Attention
(Windows uniquement) Lorsque PHP discute directement avec un serveur SMTP, si un point est trouvé en début de ligne, il sera supprimé. Pour éviter ce comportement, remplacez ces occurrences par un double point.

Code : PHP
1
2
3
<?php
     $text = str_replace("\n.", "\n..", $text);
?>



A mon tour de poser une question maintenant :p

Je me demande si il n'y a pas une petite erreur dans le tutoriel concernant les frontières.
En effet, on peut lire ceci dans le tutoriel:

Citation : Schéma final
Ouverture boundary.
Déclaration de type (exemple texte).
Texte.
Ouverture boundary.
Déclaration de type (exemple HTML).
HTML.
Fermeture boundary.
Fermeture boundary.


Je me demande si il n'y aurait pas une fermeture de frontière en trop:
  • D'abord parce que dans le Schéma final du tutoriel lorsqu'il y a des pièces jointes, la frontière principale n'est "fermée" qu'une seule fois
  • Ensuite parce que j'ai comparé les fichiers .eml créés par un client mail pour un email donné dans toutes les situations (txt ou html, avec ou sans pièce jointe) et il s'avère y avoir une et une seule fermeture pour chaque frontière

Donc si quelqu'un pouvait me le confirmer et apporter le correctif au tuto...
Hors ligne Nicesurfer # Posté le 25/02/2011 à 02:23:30
Avatar

bonjour à tous,
après avoir respecté scrupulusement les indications fournies dans cet excellent tuto, j'obtiens, invariablement, une "parse error" déclarée sur la ligne de code dans le header où est inscrite l'adresse mail de réponse...
Cela ne m'étonne qu'à moitié puisque je demande de fonctionner en localhost via wamp... :euh:
Je suis quand même étonné que le script puisse fonctionner et envoyer un mail automatiquement à partir de la seule adresse de l'expéditeur! Est ce à dire que grâce à cette seule indication le serveur sur lequel le site est hébergé va détecter automatiquement les paramètres smtp affectés au compte mail? ça me semble "trop simple pour être vrai" :p
Si quelqu'un peut m'éclairer : merci d'avance
Cordialement
Jean-Luc

"Lorsque le passé n'éclaire plus l'avenir, c'est le présent tout entier qui marche dans la pénombre" - Montesquieu-
 
Hors ligne xprototipe # Posté le 25/02/2011 à 21:44:28
Avatar

Ne marche pas avec moi.
Ce n'est pas une erreur de ma part , je ne m'y connais pas bien dans l'envoie d'email mais suffisamment pour avoir suivis le tuto et avoir fait ce qu'il était dit.
Avec d'autre tuto ça marche très bien , le problème c'est que ça me le met dans courrier indésirable :/
Mais entre choisir de ne pas recevoir le message avec cette méthode ou l'avoir dans le courrier indésirable , je choisis le courrier indésirable.

Edit : J'ai quand même cherché et j'ai trouvé mon erreur , je mettais des accents dans la variable qui détermine l'objet ^^ Du coup ça ne marchait pas. Maintenant tout marche donc je rectifie , super tuto :p Merci !
Hors ligne chris0938 # Posté le 17/03/2011 à 10:58:59

Avis : Très bon

Bonjour, d'abord merci pour ton tutoriel qui va beaucoup m'aider.
J'ai essayé sur deux adresses : sfr et hotmail. Sfr je ne reçois rien et hotmail le mail arrive en courrier indésirable mais il arrive donc c'est déjà super pour moi.
Est ce qu'il y a quelque chose à spécifier pour les adresses en sfr ou avec des noms spécifique à l'entreprise?
merci a nouveau pour le tuto.
Hors ligne Architecte # Posté le 21/03/2011 à 11:02:34
Avatar

Ville : Penchard
Pays : France métropolitaine

Très sympathique pour ceux qui veulent gérer entièrement leur envoie d'e-mail, etc.
Pour ma part depuis que j'ai découvert swiftmailer, je ne changerais pas.
Il est complet et performant avec beaucoup d'options.
Hors ligne Mopire # Posté le 14/04/2011 à 15:46:30

Études : 3iL

Salut chez moi sa marche bien mais ...

Je fait remplir un formulaire a une personne, et cette personne met en pièce jointe un fichier "voiture.pdf". Comment l'envoyer? car toi tu nous explique comment envoyé un fichier que l'on a choisi mais pas que la personne qui remplie le formulaire a choix. Merci d'avance.
Hors ligne yamissous # Posté le 03/05/2011 à 00:18:55
Avatar

Avis : Très bon

Ville : Nancy
Pays : France métropolitaine

Il est vraiment super ce tutoriel, mais sa fait vite mal à la tête^^
Tu devrais indenter tes:

Citation : Schéma
Ouverture boundary.
Déclaration de type (exemple texte).
Texte.
Ouverture boundary.
Déclaration de type (exemple HTML).
HTML.
Fermeture boundary.
Fermeture boundary.


Surtout pour le deuxième... Se serait plus simple à voir qui va avec qui...


Image utilisateur
Si tous les cons volaient, il ferait nuit.
 
Hors ligne Eria # Posté le 10/05/2011 à 14:04:21
Avatar

Études : EMAC

Total fiasco de mon côté... :(
voir le sujet que j'ai posté :
http://www.siteduzero.com/forum-83-645 [...] chez-ovh.html

Edit: Bon apparemment j'aurais pas dû tourner ça à ma sauce (l'habitude d'utiliser des apostrophes plutôt que des guillemets) --> fail !

Vous voulez une réponse rapide à votre problème ? Donnez-nous :
le code HTML coloré, le code CSS coloré, un aperçu de votre site (image ou lien) et la description du problème (texte ou image). Je vous garantis que votre problème sera vite résolu ! ;)

Si votre problème est résolu, merci de cliquer sur le bouton "Marquer résolu" en haut de votre sujet.
Site perso: http://sebastien.planard.free.fr/
 
Hors ligne larznort # Posté le 09/06/2011 à 12:21:48

Bonjour,

J'aimerais pouvoir envoyer une pièce jointe dont le nom est contenu dans une variable.
Concrètement mon lien est : "dossier/$variable.doc" (correspondant à dossier/nomdufichier.doc)
Mais en mettant ça dans mon code ça plante à chaque fois, comment fiare? Faut-il réaliser un écho?

Merci à tous pour vos tuto qui sont vraiment exceptionnels!!!
Hors ligne Bug # Posté le 04/07/2011 à 12:23:43
fatal error
Avatar

@larznort
Code : PHP
1
2
3
4
5
<?php
$extension = '.doc';
$nomdufichier = 'nomdufichier';
$fichier = $nomdufichier.$extension;
?>


Sinon j'ai un petit problème je voudrais modifier le label du from comme ceci :
Code : PHP
1
<?php $header = "From: \" $this->label \"<$this->from>".$passage_ligne; ?>

Sa me donne aucune erreur mais le label ne s'affiche pas à la reception du message, juste le from fonctionne.

Merci d'avance de vos réponses, Et bon tutoriel :D
EDIT : j'ai fait un sujet sur le forum pour ne pas trop flood les commentaires, http://www.siteduzero.com/forum-83-665 [...] html#r6429041

Bug .
 
Hors ligne Stryke # Posté le 24/07/2011 à 00:43:53
Avatar

Avis : Très bon

Ville : Eschentzwiller
Pays : France métropolitaine

Merci, un vieux bug de soldé grâce à ce super travail !
Hors ligne medebar # Posté le 25/07/2011 à 09:01:55
Avatar

Salut,

le tuto est hyper complet, clair, bien expliqué. Juste une question:

il n'y aurait pas moyen, sans les effacer, de cacher les 3 lignes :
-----=68ad8922e887bc33e8f1bfd2ba26e6c8
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit

Je trouve que ça ne fait pas super de mettre du code comme ça directement.
Merci pour vos idées,
M.
Hors ligne Koant # Posté le 30/08/2011 à 17:36:41
planting seeds...
Avatar

Ne fonctionne pas avec hotmail ...

9/20

Don't get trouble asking why 'cuz you'll get no reply ! BH
 
Hors ligne garylou # Posté le 04/09/2011 à 00:57:45

effectivement Koant a raison, ce tuto ne fonctionne plus avec hotmail ! C'est bisarre car il y a 2 mois de ça tout fonctionné très bien avec hotmail mais maintenant plus moyen. Quand j'envoie un mail sur un compte hotmail le mail n'apparait pas dans la boite de réception.... bisarre . peut être que c'est à cause d'une mise à jour d'hotmail.

Si quelqu'un a une solution merci d'avance
Hors ligne Diti # Posté le 05/09/2011 à 17:35:48
Manchot empereur toon
Avatar
Validateurs

Ville : Sucy-en-brie
Pays : France métropolitaine
Études : EFREI

La RegExp ne prend pas en compte les + dans l'e-mail. Pourtant, c'est un symbole autorisé par la norme, et très utilisé par les utilisateurs de GMail.
 
Hors ligne Apparaition # Posté le 18/09/2011 à 12:07:31
Aucune
Avatar

Ville : Salses-le-château
Pays : France métropolitaine

Je ne reçoit aucun texte dans ma boîte mail ?
Ma faute où celle au tuto ? :)

Cordialement.
Image utilisateur
 
Hors ligne salmen_tunis # Posté le 02/11/2011 à 13:15:29

Bonjour,

fonction mail marche bien sur serveur local et sur hebergeur topnet marche mais je ne trouve pas le message

code :
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);

ini_set('SMTP', 'smtp.topnet.tn');
ini_set('smtp_port', 25);
ini_set('sendmail_from', '........@monsite.tn');

if (mail('........@gmail.com', 'sujet', 'islamo 3alikom')) echo 'E-mail envoyé!';
else echo 'Echec...';

sur serveur local :
----> E-mail envoye !
------------->je trouve e-mail

mais sur hebergeur
if (mail('........@gmail.com', 'sujet', 'bonjour')) echo 'E-mail envoyé!';
else echo 'Echec...';

------> E-mail envoyé !
------------> mais je ne trouve pas


serveur FTP -------> Filezilla
o_O
Hors ligne griviere42 # Posté le 06/11/2011 à 21:12:25
Avatar

Super tuto! Bravo!

Une petite faute:
Citation : Tuto
le serveur depuis lequel le message est envoyer pour détecter un risque

Je dis juste ça comme ça ;)

Windows publie tte une suite de logiciel gratuits!
Citation
Il y a 3 grands mensonges en informatique :
ça marche, c'est compatible et ça sort bientôt
 
Connecté superzero3 # Posté le 07/11/2011 à 18:06:12
Je suis un superzero
Groupe : Bannis

Voici mon code : Secret (cliquez pour afficher)
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
//=====Les variables
$destinataire = 'studniajoachim@orange.fr'; //L'email du destinataire.
$email_expediteur = 'pop.orange.fr'; //Compte email de votre hébergement.
$sujet = 'Sujet du message';
$message_texte = 'Votre message au format texte';
$message_html = 'Votre message au format html';
//==========
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn)\.[a-z]{2,4}$#", $destinataire)) // On filtre les serveurs qui bugs
{
	$passage_ligne = "\n";
}
else
{
	$passage_ligne = "\r\n";
}


 
//=====Création de la boundary
$boundary = "-----=".md5(rand());
//==========

//=====Création du header de l'e-mail
$header = "From: \"VotreSite.com\"<" . $email_expediteur . ">".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne."boundary=\"$boundary\"".$passage_ligne;
//==========


 
//=====Création du message
$message = 'This is a multi-part message in MIME format.'."\n\n"; 
$message .= $passage_ligne.$boundary.$passage_ligne;
//=====Ajout du message au format texte
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_texte.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========
 
//=====Envoi de l'e-mail
mail($destinataire,$sujet,$message,$header);
//==========
?>
Et un erreur s'affiche :

Citation : Erreur
Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\tests\mail.php on line 51
Je ne vois vraiment pas pourquoi Pouvez vous m'aidez ? merci d'avance
Hors ligne Krapow # Posté le 28/11/2011 à 22:25:34
GOAAAL
Avatar

Juste ce que je cherchais :)

par contre... pas beau :p

<quote> mêttre un peut </quote>

mettre un peu, ça serait bien mieux ^^
(au début)
merci encore

EDIT: au fait, j'ai hotmail et ça marche pas, cela dit pour l'instant ça marche pas non plus avec orange donc ...

Image utilisateur
 
Pour accéder à cette section
Connectez-vous !
connexion_rpx