Modérateur
Bonjour,

Première fois que je développe un script pour envoyer un message texte avec pièce jointe. Ça fonctionne convenablement sauf pour l'objet du message qui ressemble à ça :
=??Q?[Contact_t=E9moignage]_Monsieur_Titi?=
(normalement il devrait afficher "[Contact témoignage] Monsieur Titi")
Je rencontre ce porblème dans Gmail et dans mon courrielleur Thunderbird, pa de doute que cela devrait probablement égalment se passer dans d'autres clients.
Une idée de quoi cela pourrait venir ?
Pour info, la patie de script concernée :
 $subject_notif = '[Contact témoignage] '.$fname.' '.$name;
$admin_email = test@test.fr;
$u_pict_name = $ufile['name'];
$u_pict_type = $ufile['type'];
$u_pict_size = $ufile['size'];
$u_pict = $ufile['tmp_name'];
// Préparation du fichier joint
$attachement = file_get_contents($u_pict);
$attachement = chunk_split(base64_encode($attachement));
// frontière et entêtes
$boundary = 'frontierequinedoitpassetrouverdanslemessage';
$headers = "From: $fname $name <$email>\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$headers .= "\r\n";
// Contenu du message
$msg = "--$boundary\r\n";
$msg .= "Content-Type: text/plain; charset=\"UTF-8\"\r\n";
$msg .= 'Content-Transfer-Encoding: 8bit'."\r\n";
$msg .= "\r\n";
$msg .= "$txt_notif\r\n";
$msg .= "\r\n";
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: $u_pict_type; name=\"$u_pict_name\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: attachment; filename=\"$u_pict_name\"\r\n";
$msg .= "\r\n";
$msg .= $attachement."\r\n";
 $msg .= "\r\n";
$msg .= "--$boundary--";
// envoi du message
if (mail( $admin_email, $subject_notif, $msg, $headers )) {
    // Message succès
} else {
   // Message errreur
}

Modifié par jojaba (07 Nov 2015 - 16:54)
Modérateur
J'ai trouvé le problème.
En fait j'utilisais la fonction wp_mail() de WordPress our envoyer le mail, il fallait utiliser la fonction mail().
Pour ceux qui ne connaissent pas wp_mail() : fonction wp_mail() dans le codex
Cette fonction permet de gérer plus facilement l'envoi de pièces jointes apparemment (jamais testé). Je l'utilise en général pour des envois simples mais je ne m'étais pas rendu compte qu'on pouvait également faire des choses plus complexes avec...
On en apprend tous les jours ! Smiley cligne
Modifié par jojaba (07 Nov 2015 - 20:38)
Bonjour Jojaba,

Pour aller plus loin dans ta démarche, tu peux te tourner vers la commande fsockopen().

Utiliser fsockopen() en lieu et place de mail() m'a permit de gérer l'envoi de mails au format texte+Html avec pièce jointe sans que celui-ci ne soit détecté comme étant du Spam.

A bon entendeur...
De rien.

jojaba a écrit :
Pas de problème de spam de mon côté pour l'instant de mon côté en utilisant mail().
T'en as de la chance, j'en ai presque attrapé des cheveux blancs tellement ça m'agaçait.

Maintenant ce n'est plus qu'une anecdote de plus.