Pièce jointe et mail en php
nadia451
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
nadia451 Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
nadia451 Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je rencontre un petit soucis avec mon code pour envoyer un mail avec pièce jointe en php.
En effet, j'ai une première page accueil.php avec laquelle on peut ajouter un fichier :
sur une deuxième page cible.php je récupère cette variable dans :
Je procède de la manière suivante pour l'envoie de mon mail :
quelqu'un peut m'éclairer ?? merci d'avance =)
Je rencontre un petit soucis avec mon code pour envoyer un mail avec pièce jointe en php.
En effet, j'ai une première page accueil.php avec laquelle on peut ajouter un fichier :
<p> <label>Résultat :</label> <input type="file" name="resultat" id="resultat"/></p>
sur une deuxième page cible.php je récupère cette variable dans :
$res = $_FILES['resultat'];
Je procède de la manière suivante pour l'envoie de mon mail :
ini_set('SMTP','smtp.orange.fr'); // ini_set() -> Modifie la valeur d'une option de configuration ini_set('sendmail_from', $mailSig); //Mettre l'administrateur de UFOLEP Centre après :) $mail = 'monAdresse@gmail.com'; // Déclaration de l'adresse de destination. if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues. { $passage_ligne = "\r\n"; } else { $passage_ligne = "\n"; } //=====Déclaration des messages au format texte et au format HTML. $message_txt = "Salut à tous, voici un e-mail envoyé par un script PHP."; $message_html = "<html><head></head><body><b>Salut à tous</b>, voici un e-mail envoyé par un <i>script PHP</i>.</body></html>"; //========== /* *** On remplace les variables dynamiques (nom, prénom) par les vrais valeurs *** */ $message_txt = STR_replace("Nom",$nomSig,$message_txt); $message_txt = STR_replace("Prenom",$prenomSig,$message_txt); /* *** On remplace les variables dynamiques (nom, prénom) par les vrais valeurs *** */ $message_html = STR_replace("%Nom%",$nomSig,$message_html); $message_html = STR_replace("%Prenom%",$prenomSig,$message_html); //=====Lecture et mise en forme de la pièce jointe. $fichier = fopen($res, "r"); $attach = fread($fichier, filesize($res)); $attach = fread($fichier, filesize($phot)); $attachement = chunk_split(base64_encode($attach)); fclose($fichier); ////========== //=====Création de la boundary. $boundary = "-----=".md5(rand()); $boundary_alt = "-----=".md5(rand()); //========== //=====Définition du sujet. $sujet = "Fiche retour de manifestation !"; //========= //=====Création du header de l'e-mail. $header = "From: $mailSig".$passage_ligne; $header.= "Reply-to: $mailSig".$passage_ligne; $header.= "MIME-Version: 1.0".$passage_ligne; $header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne; //========== //=====Création du message. $message = $passage_ligne."--".$boundary.$passage_ligne; $message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne; $message.= $passage_ligne."--".$boundary_alt.$passage_ligne; //=====Ajout du message au format texte. $message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne; $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne; $message.= $passage_ligne.$message_txt.$passage_ligne; //========== $message.= $passage_ligne."--".$boundary_alt.$passage_ligne; //=====Ajout du message au format HTML. $message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne; $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne; $message.= $passage_ligne.$message_html.$passage_ligne; //========== //=====On ferme la boundary alternative. $message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne; //========== $message.= $passage_ligne."--".$boundary.$passage_ligne; //=====Ajout de la pièce jointe. //$message.= "Content-Type: application/pdf; name=\"$res\"".$passage_ligne; //$message.= "Content-Transfer-Encoding: base64".$passage_ligne; //$message.= "Content-Disposition: attachment; filename=\"$res\"".$passage_ligne; //$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne; //$message.= $passage_ligne."--".$boundary."--".$passage_ligne; //========== //=====Ajout de la pièce jointe. $message.= "Content-Type: image/jpeg; name=\"image.jpg\"".$passage_ligne; $message.= "Content-Transfer-Encoding: base64".$passage_ligne; $message.= "Content-Disposition: attachment; filename=\"image.jpg\"".$passage_ligne; $message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne; $message.= $passage_ligne."--".$boundary."--".$passage_ligne; //========== //=====Envoi de l'e-mail. mail($mail,$sujet,$message,$header);
quelqu'un peut m'éclairer ?? merci d'avance =)
A voir également:
- Pièce jointe et mail en php
- Pièce d'identité - Accueil - Services publics
- 1 pièce jointe - Guide
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Mail avast 499 euros ✓ - Forum Virus
2 réponses
Bonjour,
1) je pense - c'est juste mon humble avis - que vous perdez beaucoup de temps à refaire ce qui existe déjà ailleurs.
2) je vous suggère d'intégrer Zend Framework et d'utiliser les méthodes mails de ZF.
Pour les pièces jointes, il y a tout ici:
http://framework.zend.com/manual/fr/zend.mail.attachments.html
et votre script serait réduit à quelques lignes:
Vous pouvez utiliser ZF sans supporter tourte la couche MVC. Voici comment procéder:
cette partie include ZF Mail
et plus loin:
maintenant, vous avez le choix:
- faire compliqué à votre manière
- utiliser ZF et faire plus simple...
A+
1) je pense - c'est juste mon humble avis - que vous perdez beaucoup de temps à refaire ce qui existe déjà ailleurs.
2) je vous suggère d'intégrer Zend Framework et d'utiliser les méthodes mails de ZF.
Pour les pièces jointes, il y a tout ici:
http://framework.zend.com/manual/fr/zend.mail.attachments.html
et votre script serait réduit à quelques lignes:
$mail = new Zend_Mail(); // construction du message $mail->createAttachment($uneChaineBinaire); $mail->createAttachment($monImage, 'image/gif', Zend_Mime::DISPOSITION_INLINE, Zend_Mime::ENCODING_BASE64);
Vous pouvez utiliser ZF sans supporter tourte la couche MVC. Voici comment procéder:
// Utilisaton module Mail de Zend Framework set_include_path('../'); require_once 'Zend/Mail.php'; $mail = new Zend_Mail('UTF8');
cette partie include ZF Mail
et plus loin:
$mail->setBodyHtml($body); $mail->setFrom('admin@monsite.com'); $mail->addTo('mail.destinataire@mail.com'); $mail->setSubject("ici sujet du mail"); $mail->setBodyHtml($body); // ici contenu du message ?> <?php if(!$mail->Send()): ?> <?php echo "Mailer Erreurs: " . $mail->ErrorInfo; ?> <?php else: ?> <p><b>Message envoyé!</b></p> <?php endif; ?>
maintenant, vous avez le choix:
- faire compliqué à votre manière
- utiliser ZF et faire plus simple...
A+
Merci beaucoup pour ta réponse,
je viens de résoudre mon problème comme une grande =D en fait avant d'envoyer le mail je donne juste le nom de mon fichier et non pas le chemin du fichier upload .. c'est donc tout à fait normal que ça ne marche pas !
je vais quand même tester avec ZF =)
merci encore d'avoir répondu rapidement =)
je viens de résoudre mon problème comme une grande =D en fait avant d'envoyer le mail je donne juste le nom de mon fichier et non pas le chemin du fichier upload .. c'est donc tout à fait normal que ça ne marche pas !
je vais quand même tester avec ZF =)
merci encore d'avoir répondu rapidement =)