Problème d'envoi pièce jointe sur outlook avec mail() php
fabi00
Messages postés
82
Statut
Membre
-
yg_be Messages postés 24281 Statut Contributeur -
yg_be Messages postés 24281 Statut Contributeur -
Bonjour,
Je demande à nouveau votre aide pour tenter de résoudre un dysfonctionnement lors de la réception du courrier de mon formulaire en Php.
Voici ce qui se passe, quand je soumets mon formulaire sur mon adresse Gmail tout est parfait, je reçois l'information ainsi que la pièce jointe. Ce qui est même plus que parfait, c'est que j'obtiens le courriel dans ma boîte de réception et non pas sous forme de pourriel. Je me dis "Chouette !", sauf qu'il ne faut jamais se réjouir trop vite.
Quand j'envoie le courrier sur Outlook, il est dans les spams, mais en plus il n'y a pas de pièce jointe.
Avez vous une idées du pourquoi ?
Merci d'avance.
Voici la partie de l'envoie du mail.
Je demande à nouveau votre aide pour tenter de résoudre un dysfonctionnement lors de la réception du courrier de mon formulaire en Php.
Voici ce qui se passe, quand je soumets mon formulaire sur mon adresse Gmail tout est parfait, je reçois l'information ainsi que la pièce jointe. Ce qui est même plus que parfait, c'est que j'obtiens le courriel dans ma boîte de réception et non pas sous forme de pourriel. Je me dis "Chouette !", sauf qu'il ne faut jamais se réjouir trop vite.
Quand j'envoie le courrier sur Outlook, il est dans les spams, mais en plus il n'y a pas de pièce jointe.
Avez vous une idées du pourquoi ?
Merci d'avance.
Voici la partie de l'envoie du mail.
//Envoi du fichier // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($_FILES['fichier']) AND $_FILES['fichier']['error'] == 0) { // Testons si le fichier n'est pas trop gros if ($_FILES['fichier']['size'] <= 1000000) { // Testons si l'extension est autorisée $infosfichier = pathinfo($_FILES['fichier']['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png', 'pdf'); if (in_array($extension_upload, $extensions_autorisees)) { // On peut valider le fichier et le stocker définitivement if (is_uploaded_file($_FILES['fichier']['tmp_name'])) { echo "File ". $_FILES['fichier']['name'] ." téléchargé avec succès.\n"; if(is_dir('uploads/')){ if(is_writable('uploads/')) { if(move_uploaded_file($_FILES['fichier']['tmp_name'], 'uploads/' . $_FILES['fichier']['name'])){ echo "L'envoi vers le serveur a bien été effectué !"; $_SESSION['fichier'] = 'uploads/' . $_FILES['fichier']['name']; }else{ echo "Erreur lors de l'upload du fichier vers " . 'uploads/' . $_FILES['fichier']['name'] ; var_dump($_FILES); exit; } } else { echo ("Erreur: Le dossier n'a pas les droits en écriture"); } }else{ echo "Erreur : dossier de destination manquant ou erreur dans le chemin !"; } } else { echo "Attaque possible par téléchargement de fichier : "; echo "Nom du fichier : '". $_FILES['fichier']['tmp_name'] . "'."; } }else{ echo "Extension error "; exit; } }else{ echo "Size Error !"; exit; } } // To $to = 'mon@adresse.com'; //From $from = $_SESSION['email']; // Subject $subject = 'Formulaire de devis - Test Mail'; // clé aléatoire de limite $boundary = md5(uniqid(microtime(), TRUE)); // Headers $headers .= 'Mime-Version: 1.0'. 'Date: '. date('r') . "\r\n"; $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n"; $headers .= "\r\n"; // Message $msg = 'This is a multipart/mixed message.'."\r\n\r\n"; // Texte $msg .= '--'.$boundary."\r\n"; $msg .= 'Content-type:text/plain;charset=utf-8'."\r\n"; $msg .= 'Content-transfer-encoding:8bit'."\r\n"; $msg .= 'Information de la commande:'."\r\n"; foreach($fields as $a => $b){ $msg .= sprintf("%20s: %s",$b,$_REQUEST[$a]) . "\r\n"; } //=====Lecture et mise en forme de la pièce jointe $fichier1 = fopen('uploads/' . $_FILES['fichier']['name'], "r" ); $attachement = fread($fichier1, filesize('uploads/' . $_FILES['fichier']['name'])); $attachement = chunk_split(base64_encode($attachement)); fclose($fichier1); $msg .= '--'.$boundary."\r\n"; $msg .= 'Content-type:'.filetype($_FILES['fichier']['name']).';name='.$_FILES['fichier']['name']."\r\n"; $msg .= 'Content-transfer-encoding:base64'."\r\n"; $msg .= $attachement."\r\n"; // Fin $msg .= '--'.$boundary."\r\n"; function validateEmail($email) { if(preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email)) return true; else return false; } //envoie du formulaire if(mail($to,$subject,$msg,$headers) && mail($from,$subject,$msg,$headers)){ //header('Location: #'); echo "<h6>Votre message a bien été envoyé !</h6>"; $_SESSION = array(); } else{ //non envoyer //header('Location: #'); echo "<h6>Votre message n'a pas pu être envoyé !<h6>"; $_SESSION = array(); } //supprimer les fichiers uploadés pour ne pas encombrer inutilement le serveur unlink ("uploads/".$_FILES['fichier']['name']); }
A voir également:
- Problème d'envoi pièce jointe sur outlook avec mail() php
- Pièce d'identité - Accueil - Services publics
- Programmer envoi mail gmail - Guide
- Supprimer adresse mail outlook - Guide
- 1 pièce jointe - Guide
- Envoi mail cci - Guide
3 réponses
Si Outlook classe ce courriel comme spam, c'est parce qu'ils s'en méfient.
Si tu marques ce courriel, quand tu le reçois, comme "non spam", cela aidera peut-être Outlook à moins se méfier de courriels similaires.
Si tu marques ce courriel, quand tu le reçois, comme "non spam", cela aidera peut-être Outlook à moins se méfier de courriels similaires.
Bonjour,
Quand tu parles d'outlook, tu fais référence au site web de message outlook.com ... ou bien au LOGICIEL outlook présent sur ton ordinateur ??
Si c'est le logiciel ( et vu que ton mail fonctionne vers une adresse gmail.. ) il faut déjà regarder au niveau du paramétrage de ton logiciel.
Quand tu parles d'outlook, tu fais référence au site web de message outlook.com ... ou bien au LOGICIEL outlook présent sur ton ordinateur ??
Si c'est le logiciel ( et vu que ton mail fonctionne vers une adresse gmail.. ) il faut déjà regarder au niveau du paramétrage de ton logiciel.
Bon je me suis un peu renseigné, apparemment ça avoir avec les entêtes, mais ça me prend un peu la tête. Les explications sur le net me paraissent compliquées. Est-ce que mes entêtes vous paraissent bons ?
// To $to = 'mon@adresse.com'; //From $from = $_SESSION['email']; // Subject $subject = 'Formulaire de devis - Test Mail'; // clé aléatoire de limite $boundary = md5(uniqid(microtime(), TRUE)); // Headers $headers .= 'Mime-Version: 1.0'. 'Date: '. date('r') . "\r\n"; $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n"; $headers .= "\r\n"; // Message $msg = 'This is a multipart/mixed message.'."\r\n\r\n"; // Texte $msg .= '--'.$boundary."\r\n"; $msg .= 'Content-type:text/plain;charset=utf-8'."\r\n"; $msg .= 'Content-transfer-encoding:8bit'."\r\n"; $msg .= 'Information de la commande:'."\r\n"; foreach($fields as $a => $b){ $msg .= sprintf("%20s: %s",$b,$_REQUEST[$a]) . "\r\n"; } //=====Lecture et mise en forme de la pièce jointe $fichier1 = fopen('uploads/' . $_FILES['fichier']['name'], "r" ); $attachement = fread($fichier1, filesize('uploads/' . $_FILES['fichier']['name'])); $attachement = chunk_split(base64_encode($attachement)); fclose($fichier1); $msg .= '--'.$boundary."\r\n"; $msg .= 'Content-type:'.filetype($_FILES['fichier']['name']).';name='.$_FILES['fichier']['name']."\r\n"; $msg .= 'Content-transfer-encoding:base64'."\r\n"; $msg .= $attachement."\r\n"; // Fin $msg .= '--'.$boundary."\r\n"; function validateEmail($email) { if(preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email)) return true; else return false; } //envoie du formulaire if(mail($to,$subject,$msg,$headers) && mail($from,$subject,$msg,$headers)){ //header('Location: #'); echo "<h6>Votre message a bien été envoyé !</h6>"; $_SESSION = array(); } else{ //non envoyer //header('Location: #'); echo "<h6>Votre message n'a pas pu être envoyé !<h6>"; $_SESSION = array(); } //supprimer les fichiers uploadés pour ne pas encombrer inutilement le serveur unlink ("uploads/".$_FILES['fichier']['name']); }