Envoi d’emails

 

Envoi d'emails

  1. Envoyer un email
  2. Construction des messages
  3. Détails des différents entêtes
  4. Emails au format html
  5. Emails avec pièces jointes
  6. Utiliser des fichiers embarqués dans les emails html
  7. Envoi d'emails à partir d'un serveur local
  8. Infos complémentaires
  9. Liens connexes

L'envoi d'emails est certainement l'une des utilisations les plus courantes en PHP. Nous allons tout d'abord voir un exemple simple d'envoi, puis, progressivement, nous détaillerons d'autres possibilités.

Envoyer un email

Pour envoyer un email, nous disposons en PHP de la fonction mail(). En voici la syntaxe :

boolean mail( string to, string subject, string message [, string headers [, string parameters]])

Seuls les trois premiers arguments sont obligatoires. La fonction retourne true en cas de succés, false dans le cas contraire.
L'email est envoyé au destinataire to. L'email a pour sujet subject et le corps de l'email est message. Des entêtes supplémentaires peuvent être ajoutés avec headers. Enfin, des paramètres de commande supplémentaires peuvent être passés avec parameters. PHP les utilisera dans son appel du programme d'envoi de courriel.
Voici un exemple basique d'envoi d'un email :

<?php
  mail('adresse@domain.tld', 'Le sujet', 'Exemple d\'envoi d\'email');
?>

Ca y est, vous avez envoyé un email :-))…, c'est bien beau tout ça, mais dans l'email que reçoit le destinataire, l'expéditeur n'a pas été défini…
C'est là que les headers entrent en jeu.

Construction des messages

Nous allons maintenant construire un message un peu plus compliqué et inclure des entêtes à l'email pour améliorer tout ça. Un entête se présente comme suit :

nom de l'entête: contenu de l'entête

Notez bien qu'il n'y a pas d'espace entre le nom de l'entête et les deux points, mais qu'il y a ensuite un espace entre les deux points et le contenu de l'entête. Si vous indiquez plusieurs entêtes, vous devez effectuer un retour à la ligne entre chaque entête à l'aide du caractère spécial \n.
Exemple de construction des headers et du message, puis envoi :

<?php
  $headers  = "From: toto@titi.fr\n";
  $headers .= "Reply-To: toto@free.fr";

  $message  = "Salut Alphonse, \n\n";
  $message .= "J'espère que tu vas bien !\n";
  $message .= "Voila, j'ai découvert un super site :\n";
  $message .= "http://www.phpcodeur.net\n\n";
  $message .= "Va y jeter un oeil, il est terrible !\n\n";
  $message .= "Ciao.\n\n";
  $message .= "toto";

  mail('alphonse@lycos.fr', 'Super site', $message, $headers);
?>

Ici, nous avons utilisé l'entête From qui sert (comme vous l'avez deviné) à définir l'adresse email de l'expéditeur, ainsi que l'entête Reply-To qui, lui, sert à définir l'adresse de réponse à l'email.

Note : Les noms de certains entêtes sont case-sensitive [1]

Note : L'adresse définie comme expéditeur n'a pas besoin d'être réelle. On comprend maintenant comment les spammeurs s'y prennent. Vous ne vous étonnerez plus si vous recevez un email de Bill Gates ;-)

Note : L'adresse définie comme expéditeur n'est pas nécessairement la même que celle indiquée pour l'adresse de réponse

Comme on l'a vu, l'opérateur de concaténation (le point devant le caractère =) nous a permis de construire un message un peu plus compliqué. L'ajout des entêtes appropriés nous a permis de définir l'expéditeur, ce qui est la moindre des choses lorsqu'on envoie un email.
Il existe différents entêtes qui ont chacun leur utilité (utilité plus ou moins importante).
Pour voir une liste non-exhaustive des entêtes possibles, rendez vous au chapitre suivant.

Détails des différents entêtes

On l'a vu dans le chapitre précédent, les entêtes nous permettent de fournir de précieuses informations sur l'email. Voici quelques uns des entêtes, et leur utilité :

From
Définit l'adresse de l'expéditeur. Vous pouvez personnaliser cet entête de cette façon : "Petit toto"<toto@titi.fr>
To
Listes des adresses, séparées par une virgule, où doit être envoyée l'email
Reply-To
Définit l'adresse de réponse à l'email, si différente de l'adresse donnée dans l'entête From
X-Priority
Définit le niveau de priorité de l'email. (de 1 à 5)
Return-Path
L'adresse de retour en cas d'erreur (adresse inconnue, etc…). Typiquement, cet entête est ajouté directement par le programme d'envoi de courriel
Cc
Listes des adresses, séparées par une virgule, où doit être envoyée une copie de l'email (Cc signifie Carbon Copy)
Bcc
Listes des adresses, séparées par une virgule, où doit être envoyée une copie cachée de l'email (Bcc signifie Blind Carbon Copy)
Disposition-Notification-To
Adresse définie pour la réception de la confirmation de lecture (active de ce fait la confirmation de lecture)
Content-Type
Utilisé pour définir le type MIME du contenu de l'email ou d'une partie de l'email, et le jeu de caractère utilisé
Content-Transfer-Encoding
Utilisé pour définir l'encodage utilisé pour le contenu de l'email ou une partie de l'email

Voici un autre exemple d'envoi d'email en utilisant quelques uns des entêtes sus-nommés :

<?php
  $headers  = "From: \"toto\"<toto@titi.fr>\n";
  $headers .= "Reply-To: toto@titi.fr\n";
  $headers .= "Cc: alphonse@lycos.fr, georges@usa.com\n";
  $headers .= "Bcc: fred@free.fr\n";
  $headers .= "X-Priority: 1\n";
  $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
  $headers .= "Content-Transfer-Encoding: 8bit";

  $subject  = 'Un site à voir absolument !';

  $message  = "Salut à tous, \n\n";
  $message .= "Un site super à voir absolument : \n";
  $message .= "http://www.phpcodeur.net\n\n";
  $message .= "A demain\n\n";
  $message .= "toto";

  $result = mail('francois@wanadoo.fr', $subject, $message, $headers);

  if( $result == true )
  {
      echo 'l\'email a bien été envoyé';
  }
  else
  {
      echo 'l\'email n\'a pas pu être envoyé !';
  }
?>

Dans l'exemple ci-dessus, nous avons envoyé l'email à francois@wanadoo.fr. Nous avons également envoyé une copie de l'email à alphonse@lycos.fr et georges@usa.com (je manque d'inspiration moi…). Une copie cachée a été envoyée à fred@free.fr, et enfin, l'email a une haute priorité.
Nous avons également défini le type MIME du contenu de l'email (text/plain) bien que ce ne fut pas nécessaire, les emails étant par défaut dans ce type.

Emails au format html

Dans l'exemple précédent, j'ai utilité l'entête Content-Type pour définir le type MIME de l'email. Réutilisons cet entête en spécifiant cette fois text/html :

<?php
  $headers  = "From: \"toto\"<toto@titi.fr>\n";
  // on indique qu'on a affaire à un email au format html avec l'entête ci-dessous
  $headers .= "Content-Type: text/html; charset=\"iso-8859-1\"";

  $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>";

  mail('alphonse@lycos.fr', 'Comment tu vas', $message_html, $headers);
?>

Note : Rappellez vous que certains logiciels de courrier électronique ne gèrent pas les emails au format html.

Prévoyons une alternative pour les personnes ne disposant pas d'un logiciel gérant les emails au format html, ou qui désactivent pour des raisons de sécurité l'affichage de ces emails.
Nous allons ici aborder le terme de frontières dans le corps de l'email, un moyen de séparer les différentes parties de l'email, en conformité avec le format MIME 1.0.
En d'autres termes, nous allons définir une chaîne de caractères, et l'utiliser pour séparer la partie texte de la partie html.
Mais je laisse le code parler pour moi :

<?php
  // on génère une chaîne de caractères aléatoire qui sera utilisée comme frontière
  $boundary = "-----=" . md5( uniqid ( rand() ) );

  $headers  = "From: \"toto\"<toto@titi.fr>\n";
  // on indique qu'on a affaire à un email au format html et texte et
  // on spécifie la frontière (boundary) qui servira à séparer les deux parties
  // ainsi que la version mime
  $headers .= "MIME-Version: 1.0\n";
  $headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\"";

  $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><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";

  mail('alphonse@lycos.fr', 'Comment tu vas', $message, $headers);
?>

Respectez bien la construction du message, en particulier les sauts de ligne entre les différents entêtes et les parties proprement dites.
Voila, le destinataire recevra un email qui s'affichera au format html dans son logiciel, si celui ci gère ce format, au format texte dans le cas contraire.

Emails avec pièces jointes

Pour joindre un fichier à votre email, c'est exactement le même principe des frontières que précédemment que nous devons utiliser. Nous allons également utiliser les fonctions de lecture de fichiers pour lire le fichier à joindre. Les fichiers (image, archive zip, etc…) étant de type binaire, nous allons l'encoder en base64, car seules les données de type ascii peuvent être envoyées par email.
Là encore, je vous laisse étudier le code :

<?php
  // on génère une frontière
  $boundary = '-----=' . md5( uniqid ( rand() ) );

  // on va maintenant lire le fichier et l'encoder
  $path = 'chemin/fichier.gif'; // chemin vers le fichier
  $fp = fopen($path, 'rb');
  $content = fread($fp, filesize($path));
  fclose($fp);
  $content_encode = chunk_split(base64_encode($content));

  $headers  = "From: \"toto\"<toto@titi.fr>\n";
  $headers .= "MIME-Version: 1.0\n";
  $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"";

  $message  = "Ceci est un message au format MIME 1.0 multipart/mixed.\n\n";
  $message .= "--" . $boundary . "\n";
  $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
  $message .= "Content-Transfer-Encoding: 8bit\n\n";
  $message .= "Salut Alphonse, \n\n";
  $message .= "Voila le fichier que tu m'as demandé\n";
  $message .= "\n";
  $message .= "--" . $boundary . "\n";
  $message .= "Content-Type: image/gif; name=\"fichier.gif\"\n";
  $message .= "Content-Transfer-Encoding: base64\n";
  // mettez inline au lieu de attachment
  // pour que l'image s'affiche dans l'email
  $message .= "Content-Disposition: attachment; filename=\"fichier.gif\"\n\n";
  $message .= $content_encode . "\n";
  $message .= "\n\n";
  $message .= "--" . $boundary . "--\n";

  mail('alphonse@lycos.fr', 'le fichier demandé', $message, $headers);
?>

Note : Si vous ne connaissez pas le type MIME du fichier que vous envoyez, vous pouvez indiquer application/octet-stream.

Utiliser des fichiers embarqués dans les emails html

Vous avez également la possibilité de joindre un fichier et de l'utiliser directement dans l'email html (fichier image, son…)
Cela peut permettre de consulter l'email hors ligne, sans que les images ou autres media ne restent invisibles, faute de connexion au réseau. Cette méthode doit toutefois être utilisée avec parcimonie, le fichier étant joint à l'email, son poids augmente d'autant le poids de l'email et rend plus long le téléchargement de ce dernier.
Pour réaliser cela, nous allons faire appel à un nouvel entête : Content-ID. Celui ci va nous servir à spécifier l'identifiant du fichier, lequel sera utilisé dans la partie html pour indiquer le fichier joint à utiliser.
Voici le code php, très proche de l'exemple précédent :

<?php
  // on génère une frontière
  $boundary = '-----=' . md5( uniqid ( rand() ) );
  // on génère un identifiant aléatoire pour le fichier
  $file_id  = md5( uniqid ( rand() ) ) . $_SERVER['SERVER_NAME'];

  // on va maintenant lire le fichier et l'encoder
  $path = 'chemin/fichier.gif'; // chemin vers le fichier
  $fp = fopen($path, 'rb');
  $content = fread($fp, filesize($path));
  fclose($fp);
  $content_encode = chunk_split(base64_encode($content));

  $headers  = "From: \"toto\"<toto@titi.fr>\n";
  $headers .= "MIME-Version: 1.0\n";
  $headers .= "Content-Type: multipart/related; boundary=\"$boundary\"";

  $message  = "Ceci est un message au format MIME 1.0 multipart/mixed.\n\n";
  $message .= "--" . $boundary . "\n";
  $message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
  $message .= "Content-Transfer-Encoding: 8bit\n\n";
  $message .= "<html><body>Salut Alphonse, <br><br>";
  $message .= "Voila le fichier que tu m'as demandé :<br>";
  $message .= "<img src=\"cid:$file_id\" alt=\"le fichier demandé\"><br>";
  $message .= "<br>@+";
  $message .= "\n\n";
  $message .= "--" . $boundary . "\n";
  $message .= "Content-Type: image/gif; name=\"fichier.gif\"\n";
  $message .= "Content-Transfer-Encoding: base64\n";
  $message .= "Content-ID: <$file_id>\n\n";
  $message .= $content_encode . "\n";
  $message .= "\n\n";
  $message .= "--" . $boundary . "--\n";

  mail('alphonse@lycos.fr', 'le fichier demandé', $message, $headers);
?>

Nous avons ajouté dans les entêtes de la partie du fichier l'entête Content-ID avec pour valeur l'identifiant aléatoire que nous avons créé. Pour appeller ensuite le fichier, il nous a suffi d'indiquer comme valeur de l'attribut src de la balise img : cid:identifiant_du_fichier

Envoi d'emails à partir d'un serveur local

Cette question revenant assez souvent sur la plupart des forums, je vais la traiter brièvement ici.
Si vous avez essayé d'envoyer un email à partir d'un serveur local [2], vous avez dù tomber sur un message d'erreur de ce genre :

Failed to connect …

En effet, avant de tenter d'envoyer un email en local, vous devez d'abord configurer correctement le fichier php.ini qui se trouve dans le dossier windows/ (ou winnt, bref, on se comprend).
Vous devez éditer le fichier et vous rendre jusqu'à cette rubrique :

[mail function]
SMTP = localhost ; For Win32 only.
sendmail_from = me@localhost ; For Win32 only.
;sendmail_path =
; For Unix only. You may supply arguments as well (default: "sendmail -t -i")

Indiquez dans SMTP l'adresse du serveur SMTP qui doit être utilisé, par exemple celui de votre fournisseur d'accés, et dans sendmail_from l'adresse de retour par défaut (celle qui sera utilisé dans l'entête Return-Path)

Il est possible que vous ne désiriez pas utiliser le serveur SMTP de votre fournisseur d'accés [3], dans ce cas, vous pouvez installer un serveur smtp sur votre machine. Il en existe plusieurs gratuits (par exemple, limités à un compte).
Si vous désirez savoir comment installer un serveur SMTP, je vous renvoie sur cet excellent tutorial de phpfrance qui traite ce sujet : Installer un serveur smtp.

Informations complémentaires

La plupart des hébergeurs gratuits suppriment la fonction mail() ou la bride fortement pour prévenir tout abus (spamming). Certains hébergeurs payants font de même (intolérable à mon avis).
En voici quelques uns :

Free

Free a supprimé cette fonction de ses serveurs, impossible donc d'envoyer un email avec php. Il existe apparamment une solution alternative qui consiste à utiliser un service gratuit de ovh en ouvrant une fenetre sur leur serveur durant trois secondes le temps d'envoyer l'email. (je ne trouve plus le lien, je le mettrai quand je l'aurai retrouvé).

multimania/lycos

La fonction mail() est, par contre, disponible chez multimania/lycos, mais fortement bridée. Il y a une limite de 150 envois par jour (le nombre de destinataires est compris dans ce nombre).

Online

Online a remplacé la fonction mail() de base par une fonction email() dont la syntaxe est légèrement différente :

boolean email(string From, string To, string Sujet, string Message [, string Reply To [, string headers]])

Voir la FAQ de Online pour plus de détails.

Une dernière solution pour envoyer un email consiste à utiliser les sockets et de parser les reponses du serveur SMTP… Le dialogue avec un serveur via les sockets (voir fsockopen()) sera détaillé dans un prochain article.
Vous pouvez, si vous vous intéressez à la question, télécharger la classe WAmailer, qui propose cette fonctionnalité, et en étudier le code.

Liens connexes

Article écrit le / Mis à jour le par Bobe
[43] commentairesTop

Des commentaires ?

Auteur : webmas • 09/01/2003 @ 17:04 • #162

Tres bon script, en tout cas pour comprendre.
Mais lorsque je recopie le script pour envoyer un message du type "multipart/alternative" le message envoyé est complétement vide.....
un petit détail à changer peut etre ?

Auteur : Shok • 04/03/2003 @ 14:41 • #234

Merci c parfait!!

Il me manquait quelques elements pour finir mes newsletters..tout est la!!!!!!!

Merci et bonne continuation!!

Auteur : btruton • 05/03/2003 @ 11:04 • #241

J'ai lu et appliqué à la lettre tous tes commentaires et exemples.
Maintenant j'ai un script qui tourne du tonner de dieu.

Continu comme ça.

Sincères salutations.
Bruno

:-)

Auteur : Kahel • 21/05/2003 @ 23:38 • #319

Ben merci aussi! Le pire c'est que ca me sert pour du visual basic et du dialogue serveur :)...

Auteur : Dante • 09/07/2003 @ 21:11 • #378

Cette article est très bien fait et détaillé !
chapeau

Auteur : marKus • 26/07/2003 @ 22:40 • #384

salut
j'ai trouvé ce site par hasard...et depuis je ne cesse d'halluciner sur tout ce travail (tutoriaux et scripts) qui touche la perfection!
bref[...] Bravo!

j'ai lu ke tu as fait des tests pour ton remarquable outil de mailing (je viens de faire une litote...) et je me demandais jusqu'à kel volume de diffusion ton script (ou ce sera le php ou le server..) peut-il envoyer des mails? (genre 50 000 mails ou+?)

et aussi si un server mutualisé ne va pas trop ramer au moment de l'envoi et/ou comment faire pour programmer l'envoi de nuit par exemple (je crois ke c cron..mais g pas tout compris :S)

merci bcp!
:-)

Auteur : Laurent 06 • 20/01/2004 @ 12:29 • #483

Votre tutorial est GENIAL !!!

Merci !!
Merci !!
Merci !!
Merci !!

Auteur : DOC • 28/01/2004 @ 02:43 • #492

J'ai déjà fait un petit script (qui ressemble à celui ci-dessus) pour inclure des images dans un mail au format HTML, il fonctionne bien simplement qu'il y a toujours une pièce jointe du type ATT00089.txt qui fait 0 octet si quelqu'un sait pourquoi ???

Auteur : pixel • 08/04/2004 @ 19:34 • #536

Informations complémentaires
La plupart des hébergeurs gratuits suppriment la fonction mail() ou la bride fortement pour prévenir tout abus (spamming). .......

Free
Free a supprimé cette fonction de ses serveurs, impossible donc d'envoyer un email avec php. Il existe apparamment une solution alternative qui consiste à .....

Il y en a une qui fonctionne à merveille avec Free: PROTOMAIL que l'on peut trouver sur samuel.kabak.free.fr [lien]
testé et adopté !!!

Auteur : CODHEX • 04/05/2004 @ 20:43 • #553

Salut à tous, pour répondre à ta question concernant : "multipart/alternative" tu dois indiquer "multipart/missed".

Voilà @ +++

Auteur : inginfodz • 21/02/2005 @ 14:32 • #661

Tes tutoriaux sont bien fait
-- Bravo et bonne continuation --

Auteur : rita • 22/02/2005 @ 16:29 • #662

Emails pieces jointes
Impossible d'ouvrir un doc. ou pdf.
Ai teste content-type : application/octet-stream ou text/vnd.ms-word, etc.
Ai essaye avec fopen($file, "rb-wb") mais sans succes.
Merci pour vos suggestions, Rita

Auteur : Domy • 20/03/2005 @ 19:46 • #666

tes tutoriaux sont génial exactement ce que je cherchai, mais j'ai un pb. je débute en php, j'ai lu et executé ton code sur l'envoie d'email. mais ça tourne pas sur ma machine.
j'ai installer easyphp 1.8 mon S.E. Winxp
puis je savoir ce donc je devrais faire pour avoir une bonne configuration de php pour pouvoir utiliser tes scripts merci d'avance

Auteur : rosebud • 22/04/2005 @ 19:16 • #678

Hello,

Merci pour la clarté, la pédagogie et l'absence de fôôtes de frappe (ben si, parce que d'autres...).

Allez hop, dans mes signets, et vive l'entraide.
:o)

Auteur : dada • 13/05/2005 @ 09:29 • #686

Bonjour, j'essaie d'envoyer des fichiers joints avec la fonction email...
Mon problème est que cela fonctionne tant que le fichier à joindre est sur le même serveur que le fichier php qui fait l'envoi.
Donc si je veux joindre un fichier qui se situe sur mon bureau, j'ai un message d'erreur du type :
-------------
fopen(C:\\Documents and Settings\\jossind\\Desktop\\OS05071.JPG): failed to open stream: No such file or directory
-----------
Alors que le fichier existe sur le bureau !???

Merci pour votre réponse
A bientôt

Auteur : huhuilikeit • 29/06/2005 @ 23:05 • #701

Merci beaucoup !!
tu m'as sauvé la vie avec ce script !

Auteur : reggaechien • 01/08/2005 @ 17:30 • #708

Salut, peut on envoyé un email archivé par email ? MERCI

Auteur : ngnikos • 18/09/2005 @ 23:22 • #721

Bravo et Merci, c'est génial et ça fonctionne, juste ce que je cherchais !

Auteur : Erwan • 10/10/2005 @ 12:14 • #730

Bonjour,

super ce WANewsletter.

cependant, j'ai un petit soucis. Lorsque j'importe une liste d'e-mail, sans utiliser ";" en séparateur, je constate que lorsque la newsletter arrive dans la BAL, l'en-tête du mail montre la liste de tous les inscrits : c'est assez génant.
Y'a-t-il une option ou quelque chose à faire pour les rendre non visibles ?

Merci de votre réponse

Erwan

Auteur : • 06/12/2005 @ 21:23 • #764

Simplement super !
un petit copier/coller et cela marche !
merci et bravo

Auteur : stef • 02/03/2006 @ 16:17 • #805

Bonjour,

merci pour les tutos,
Je n'ai pas trouvé de soluce à mon pb de mail text/html dans les forums.

dés que j'insère un lien type :
<a href=\"abcde.php\">lien</a>
dans le $message_html, celui apparait tronqué d'1 ou 2 caractères au debut
ici : cela donnerait : bcde.php

quelqu'un peut m'expliquer ?

stefan

Auteur : gowgow • 27/03/2006 @ 19:50 • #853

salut,
j'ai cette erreur
Warning: mail(): SMTP server response: 550 5.7.1 Unable to relay for alphonse@lycos.fr in c:\program files\easyphp1-8\www\mon_test\mail.php on line 37

Auteur : bdelpla • 11/09/2006 @ 09:54 • #2123

Bonjour
Merci pour ce tutorial.
J'ai une petite question : j'ai en pièce jointe de gros fichier. Si leur taille dépasse approximativement les 2 Mo, l'envoi du mail échoue.
Sauriez vous où cela peut bien coincer? J'ai utilisé différente méthode (SMTP, PHP mail(), $Sendmail, qmail MTA), mais j'ai toujours le même problème...
Merci de votre aide
A+B

Auteur : beke • 02/10/2006 @ 16:24 • #2310

Certain arrive à envoyer des mail sans le l'adresse expéditeur, du moins la mention de n'affiche aucun nom ni adresse mail. Pouvez vous l'expliquer

Auteur : bobe • 24/10/2006 @ 23:48 • #2376

bdelpla: Les emails ne sont pas fait pour envoyer de gros fichiers.

beke: Il suffit de ne pas mettre d'entête From dans les entêtes de l'email.

Auteur : Ben • 17/11/2006 @ 21:30 • #2508

Bonjour,

J’ai fais un formulaire sur mon site, maintenant je veux faire le code en php pour envoyé et récupéré les champs renseigné.

J’ai testé l’ensemble des exemples, tout fonctionne parfaitement, c’est très bien expliqué et progressif pour apprendre.

Maintenant, je cherche a « lier » les valeurs de mes champs de texte (sur la page htm) ; au code php des exemples.

Exemple : a la place de « Voila le fichier que tu m'as demandé » je veux le texte saisi dans mon formulaire.

$message .= "Salut Alphonse, \n\n";
$message .= "Voila le fichier que tu m'as demandé\n";

C’est certainement simple a réaliser, mais je n’y arrive pas.
Pouvez vous m’aider, me donner un piste ?

Merci

Auteur : wuam • 08/03/2007 @ 18:25 • #3357

Pour les gens qui reçoivent un mail vide.

Dans le HTML : mettez
enctype="application/x-www-form-urlencoded"

Ou dans le PHP:
$headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";

A la place de "text/plain", mettez : "application/x-www-form-urlencoded"

J'ai cherché ça pendant des heures et des jours.
En espérant que ça résolve votre problème de mail vide.

:)

Auteur : sam • 16/03/2007 @ 21:45 • #3491

salut
merci pour toutes ces informations, mais je veut avoir comment envoyer un mail sans définir le headers est ce que c possible?
et merci encore.
salut

Auteur : grummfy • 28/03/2007 @ 15:26 • #3717

Hello,
come signaler plus haut ( [lien] ):

boolean mail( string to, string subject, string message [, string headers [, string parameters]])

la partie headers et parameters est facultatif, donc pas besoin de définir cela ...

Auteur : leenux2003 • 07/06/2007 @ 13:53 • #5856

L'email n'est pas fait pour envoyer de gros fichiers.

J'ai trouvé un soft qui permet ca.
Ca s'appelle 123envoi.

Pour ceux qui sont intéressé la nouvelle version v2.0 vient de sortir :
- Pause/Reprise pendant l'envoi
- Reprise lors d'une coupure Internet
- Protection par mot de passe
- Accusé Reception
Dispo sur le site officiel directement : [lien]

Auteur : lalo • 27/06/2007 @ 14:26 • #6600

felicitation c'es un tres bon scripte tres clair et pratique pour les debutants comme moi ...mais je voudrais savoir ce que je doit ajouter a ce scripte por pouvoir recuperer tous les emails de ma base de données et en suite lee envoyer un email avec une piece jointe
merci d'avance

Auteur : pakyr • 27/06/2007 @ 21:26 • #6605

je peu vous demandé de fair un page de contact qui point ver mon mail
comme je conais pas le phph alor je vous demand de fair une pour moi
avec mon adrsse de mail
pakyprivi@hotmail.fr
et sava me fair plaizir si vous me le fait une avec mon adrsse e mail merci davance

Auteur : king • 06/09/2007 @ 18:55 • #8818

super! c'est très cool! qlq a deja fait un mail avec css?
Merci

Auteur : yexp17 • 09/09/2007 @ 20:30 • #8872

je suis abonner depuis peu a free mais j'ai des probleme avec ma boite de reception free il m'est impossible d'envoyer un message en haute priorité et comment je pourrais faire pour corriger les faute avant l'envois du message qui pourrais me donner des infos sur la boite free
merci bien de toute l'aide qui me viendra

Auteur : • 11/10/2007 @ 18:01 • #11717

bonsoir

moi je n'arrive pas a ouvrir les pièces jointes du moins pas toutes depuis ma boite de reception hotmail.fr

merci d bien vouloir m'aider

Auteur : lanner • 20/01/2008 @ 18:31 • #35036

le script fonctionne à priori cependant le gros problème que l'on retrouve partout , l'email envoyé est directement reçu en spam sous hotmail (courrier indésirable) et surement d'autres, est ce que l'on peu le modifier pour éviter cela ?
merci

Auteur : • 21/01/2008 @ 16:42 • #35347

J'essaie d'envoyer une photo en pièce jointe à une amie mais je n'y arrive pas à partir d'hotmail, je clique sur le nom de la personne, dans objet, je clique sur joindre fichiers, je sélectionne ma photo mais au lieu que sa s'affiche joindre, il met ouvrir, si je clique sur ouvrir, par défaut la photo est insérer dans objet avec à côté préciser à supprimer, pouvez-vous me venir en aide car je ne sais pas résoudre le problème

Auteur : hujofr • 31/01/2008 @ 11:38 • #38756

Bonjour,
j'aimerai savoir comment faire pour faire un mixte de votre code : je souhaite donner la possibilité d'envoyer un fichier joint et créer le mail en texte et HTML.
Que dois-je mettre :
** headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\""; **
Merci pour votre réponse et merci pour ce tuto. Bonne journée

Auteur : Wallis • 16/07/2008 @ 06:35 • #73866

C'est ma prémière fois de voir ce site.Je le trouve génial pour des solutions très pratiques.

Auteur : freestyll • 27/01/2009 @ 11:09 • #108190

bonjour;
j'envoie des mails par la fonction mail() en php mais mon mail est considéré comme un spam sur hotmail et je recoie pas d'accusé de reception alors que je lai mis dans les headers.
MERCI de me repondre

Auteur : Diana • 11/12/2009 @ 23:10 • #119211

Excellent tutoriel. Je pense avoir saisie pour placer les boundary.
;)

Auteur : rpolpere • 06/05/2010 @ 07:28 • #119935

Bonjour,
J'essaie de créer 1 mail de réponse contenant :
Partie 1 TXT soit coordonnées de l'expéditeur et copie de son message.
Partie 2 HTML message de politesse 1
Partie 3 IMG image avec a href vers lien
Partie 4 HTML avec a href autre lien

et dés le départ je bloque à la préparation du msg partie 2 HTML
vous : $message_html = "<html><body><b>Salut Alphonse</b><br><br>";
moi : $messagefi1_html = "<html><body><b>Salut Alphonse</b><br><br>";
erreur : Parse error: syntax error, unexpected '=' in ... on line 237
HELP
Merci
rpolpere

Auteur : • 07/08/2014 @ 17:04 • #121201

Je veux envoyer un email à:
angeline@overseas-intl.com

Dear Angeline:
Any news about your transfer my commission on SDMI ? Please inform.
Regards / FRANCOIS

Déposer un commentaire

Pseudo, Email et Options

Tapez votre commentaire

Note : Vos données personnelles restent strictement confidentielles et ne sont pas réutilisées à votre insu. Vous pouvez consulter à ce propos cette page.

Valid HTML Valid CSS Mozilla et Firebird