Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fonction mail() : envoyer le message sans piA

1 réponse
Avatar
jpec
Bonjour,

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

/* Email */
$Destinataire = "user@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 !

1 réponse

Avatar
Olivier Miakinen
Bonjour,

Le 16/09/2009 23:35, Julien Pecqueur (JPEC) a écrit :

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



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).

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

/* Headers */
$Headers = "From: $Expediteurrn";
$Headers .= "Reply-To: $Expediteurrn";



Lorsqu'il est identique au champ From, le champ Reply-To est
parfaitement inutile : autant ne pas en mettre.

$Headers .= "Mime-Version: 1.0rn";
$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.0rn";
$Headers .= "Content-Type: text/plain; charset=utf-8rn";
$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.

[...]

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