Discussion:
Fonction mail() : envoyer le message sans piece jointe
(trop ancien pour répondre)
Julien Pecqueur (JPEC)
2009-09-16 21:35:49 UTC
Permalink
Bonjour,

J'ai un petit problème avec la fonction mail en php :

/* Email */
$Destinataire = "***@host.com";
$Sujet = "Contact";
$CorpsMessage = "Ceci est un test.";

/* Headers */
$Headers = "From: $Expediteur\r\n";
$Headers .= "Reply-To: $Expediteur\r\n";
$Headers .= "Mime-Version: 1.0\r\n";
$Headers .= "Content-type: text; charset=utf-8";

/* Envoi du mail au contact */
if (mail($Destinataire, $Sujet, $CorpsMessage, $Headers)) {
$Succes .= "Le message a été envoyé avec succès.";
} else {
$Erreur .= "Une erreur est survenue durant l'envoi du message";
}

J'envoie bien le mail mais le texte est en pièce jointe alors que je
veux qu'il soit directement dans le corps du mail :(

Comment faire ?
--
Julien Pecqueur (JPEC)

Site: http://julienpecqueur.com
Powered by Archlinux - Keep it simple stupid !
Olivier Miakinen
2009-09-16 22:02:08 UTC
Permalink
Bonjour,
Le problème concernant le mail et plus spécifiquement MIME plutôt que
PHP, je fais suivre vers fr.comp.mail. Note que j'ai corrigé le titre au
passage car il y avait un problème d'accents (dans les news, il vaut
mieux en rester à ASCII 7 bits pour les champs d'entêtes tels que le
champ Subject).
Post by Julien Pecqueur (JPEC)
/* Email */
$Sujet = "Contact";
$CorpsMessage = "Ceci est un test.";
/* Headers */
$Headers = "From: $Expediteur\r\n";
$Headers .= "Reply-To: $Expediteur\r\n";
Lorsqu'il est identique au champ From, le champ Reply-To est
parfaitement inutile : autant ne pas en mettre.
Post by Julien Pecqueur (JPEC)
$Headers .= "Mime-Version: 1.0\r\n";
$Headers .= "Content-type: text; charset=utf-8";
Ah, avant même de lire la suite j'étais déjà persuadé que le problème
était ici. Tu as mis un type (« text ») mais il manque le sous-type (je
suppose qu'il s'agit de « plain »). Qui plus est, les champs MIME vont
toujours par trois ; habituellement c'est le champ Mime-Version qui est
oublié, mais toi c'est le champ Content-Transfer-Encoding qu'il te manque.

Voir <http://jlr31130.free.fr/rfc2045.html>, traduction en français de
<http://www.ietf.org/rfc/rfc2045.txt>.

Donc, par exemple :
$Headers .= "MIME-Version: 1.0\r\n";
$Headers .= "Content-Type: text/plain; charset=utf-8\r\n";
$Headers .= "Content-Transfer-Encoding: 8bit";

Note que j'en ai profité pour remettre la casse proposée dans le RFC,
même si la casse n'a en réalité aucune importance.
Post by Julien Pecqueur (JPEC)
[...]
J'envoie bien le mail mais le texte est en pièce jointe alors que je
veux qu'il soit directement dans le corps du mail :(
Il ne faut pas s'étonner qu'il te propose le contenu en pièce jointe,
puisque tu ne lui as pas dit que c'était du « text/plain » qu'il sait
pouvoir afficher directement.

Cordialement,
--
Olivier Miakinen
Continuer la lecture sur narkive:
Loading...