IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Piece jointe PHP


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut Piece jointe PHP
    Bonjour

    je vous écris ce soir car malgrés les tutos, je n'arrive pas à inséré une PJ dans un mail en PHP, pour le lien de l'image je passe par un prételechargement puis par le lien dans une session voila le code si vous savez comment je peux remedier a l'ajout de la piece jointe je suis preneur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    <?php
    header('Content-Type: application/json');
     
    session_start();
    include("../mysqlcon.php");
     
    if(isset($_POST['check'])) {
     
    	$the_check = explode("-",$_POST['check']);
        for ($i =0; $i<count($the_check); $i++)
        {
          $current_check = $the_check[$i];
    	  $q = "Select * from commercant where id='$current_check'";
    	  $q = $conn->query($q);
    	  $f = mysqli_fetch_array($q);
     
    	  $boundary = md5(rand());
    	$validation = $f["validation"];
    	$email = $f["email"];
    	$pseudo = $f["pseudo"];
     
    	if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $email)) // On filtre les serveurs qui rencontrent des bogues.
     
    {
     
        $passage_ligne = "\r\n";
     
    }
     
    else
     
    {
     
        $passage_ligne = "\n";
     
    }
     
     
    //=====Déclaration des messages au format texte et au format HTML.
     
     
    $message_html = $_POST["message"];
    $message_html = nl2br($message_html);
     
    //==========
     
     
     
    //=====Création de la boundary
     
    $boundary = "-----=".md5(rand());
     
    //==========
     
     
     
    //=====Définition du sujet.
     
    $sujet = "Infos ";
     
    //=========
     
     
     
    //=====Création du header de l'e-mail.
    $adresse_exp = "contact@site.fr";
    $adresse_exp2 = "site@gmail.com";
    $header = "From: \"Support site\"<$adresse_exp>".$passage_ligne;
     
    $header.= "Reply-to: \"Support site\" <$adresse_exp2>".$passage_ligne;
     
    $header.= "MIME-Version: 1.0".$passage_ligne;
    $header .= "X-Priority: 3".$passage_ligne;
     
    $header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
     
    //==========
     
    $session = $_SESSION["lienpj"];
    $file_name = $session;
     
     
     
     
    //=====Création du message.
     
    $message = $passage_ligne."--".$boundary.$passage_ligne;
     
     
    //=====Ajout du message au format HTML
     
    $message.= "Content-Type:  multipart/mixed; charset=\"UTF-8\"".$passage_ligne;
     
    $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
     
    $message.= $passage_ligne.$message_html.$passage_ligne;
     
     
    //==========
     
    $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
     
    $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
     
    //==========
     if (file_exists($file_name))
    {
    	$file_type = filetype($file_name);
    	$file_size = filesize($file_name);
     
    	$handle = fopen($file_name, 'r') or die('File '.$file_name.'can t be open');
    	$content = fread($handle, $file_size);
    	$content = chunk_split(base64_encode($content));
    	$f = fclose($handle);
     
    	$message .= '--'.$boundary."\r\n";
    	$message .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
    	$message .= 'Content-transfer-encoding:base64'."\r\n\r\n";
    	$message .= 'Content-Disposition: attachment; filename="'.$file_name.'"'."n";
    	$message .= $content."\r\n";
    }
     
    //=====Envoi de l'e-mail.
     
    mail($email,$sujet,$message,$header);
     
    //==========
     
     
     
     
     
     
     
     
     
     
     
     
     
        }
     
    	echo json_encode(array("reponse"=>"ok"));
    }
    ?>

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour envoyer des e-mails complexes, je vous conseille d'utiliser la bibliothèque phpmailer. c'est une référence depuis plusieurs années :
    https://github.com/PHPMailer/PHPMailer
    https://stephaneey.developpez.com/tu...php/phpmailer/

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut
    bonjour et merci de ta réponse, mais cela ne m'intéresse pas d'envoyer mes mails avec phpmailer la seule fois que je l'ai utilisé, ça ma causé des bugs, et j'ai voulu me connecter avec mon compte gmail et google m'avait bloqué tous les accés en pensant que c'étais du piratage, la fonction mail est toujours plus facile à utilisé et beaucoup plus personnalisable, je sais que par rapport a ma demande, il est possible de faire ce que je veux avec la fonction mail, seulement il faut avoir le bon code et on peut faire beaucoup,

    pour exemple concret je fais une newsletters ou j'envoi pret de 1000 mails par jour avec une tache cron, et j'ai aucun souci avec un bon reglage du spf et dkim mes mails arrivent dans les boites de réceptions

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut
    en suivant un nouveau tuto j'ai pu avancé dans ma recherche, mais cela m'affiche en format texte j'ai l'impression sans ajouté le fichier d'attachement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    <?php
    header('Content-Type: application/json');
     
    session_start();
    include("../mysqlcon.php");
     
    if(isset($_POST['check'])) {
     
    	$the_check = explode("-",$_POST['check']);
        for ($i =0; $i<count($the_check); $i++)
        {
          $current_check = $the_check[$i];
    	  $q = "Select * from commercant where id='$current_check'";
    	  $q = $conn->query($q);
    	  $f = mysqli_fetch_array($q);
     
    	  $boundary = md5(rand());
    	$validation = $f["validation"];
    	$email = $f["email"];
    	$pseudo = $f["pseudo"];
     
    	if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $email)) // On filtre les serveurs qui rencontrent des bogues.
     
    {
     
        $passage_ligne = "\r\n";
     
    }
     
    else
     
    {
     
        $passage_ligne = "\n";
     
    }
     
     
    //=====Déclaration des messages au format texte et au format HTML.
     
     
    $message_html = $_POST["message"];
    $message_html = nl2br($message_html);
     
    //==========
     
     $session = $_SESSION["lienpj"];
     
    // To
    $to = $email;
     
    // Subject
    $subject = 'Infos TDM';
     
    // clé aléatoire de limite
    $boundary = md5(uniqid(microtime(), TRUE));
     
    // Headers
    $headers = 'From: Alain by TDM <contact@tdm.fr>'."\r\n";
    $headers .= 'Mime-Version: 1.0'."\r\n";
    $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
    $headers .= "\r\n";
     
    // Message
    $msg = $message_html;
     
    // Message HTML
    $msg .= '--'.$boundary."\r\n";
    $msg .= $message_html;
     
    // Pièce jointe 1
    $file_name = $session;
     
    $file_headers = @get_headers($file_name);
    if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
        $exists = false;
    }
    else {
        $exists = true;
    }
     
     
    	 if ($exists == "true")
    {
    	$file_type = filetype($file_name);
    	$file_size = filesize($file_name);
     
    	$handle = fopen($file_name, 'r') or die('File '.$file_name.'can t be open');
    	$content = fread($handle, $file_size);
    	$content = chunk_split(base64_encode($content));
    	$f = fclose($handle);
     
    	$msg .= '--'.$boundary."\r\n";
    	$msg .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
    	$msg .= 'Content-transfer-encoding:base64'."\r\n\r\n";
    	$msg .= 'Content-Disposition: attachment; filename="'.$file_name.'"'."n";
    	$msg .= $content."\r\n";
    }
     
     
     
    // Fin
     
    // Function mail()
    mail($to, $subject, $msg, $headers);
     
     
     
     
     
     
     
     
     
     
     
     
        }
     
    	echo json_encode(array("reponse"=>"ok"));
    }
    ?>
    et donc la réponse du mail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    okok--00107463b56cde253be0c3fe950d5d4d
    okok--00107463b56cde253be0c3fe950d5d4d
    Content-type:;name=https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.tdm.fr%2Fmobile%2Facces%2Fimages%2Fpj%2F1620552798.png&amp;data=04%7C01%7C%7Cde2bcb42daca451c4f5208d912d2437e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637561516541853399%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=sEmHJx3Hz6H2%2Fu4f%2B8hO3CBImBlg2IwjLObR3X3y2wI%3D&amp;reserved=0
    Content-transfer-encoding:base64
     
    Content-Disposition: attachment; filename="https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.tdm.fr%2Fmobile%2Facces%2Fimages%2Fpj%2F1620552798.png%2522n&amp;data=04%7C01%7C%7Cde2bcb42daca451c4f5208d912d2437e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637561516541853399%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=bBoVZJQ5kw%2FWcZm%2BD7Sj9swDO%2BDR1AeQkfw912h%2FRls%3D&amp;reserved=0

  5. #5
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    On ne peut pas tester ton code, alors au moins montre-nous le mail complet que tu génères pour qu'on puisse voir s'il est bien formé
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  6. #6
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut
    si tu parles des écris, c'est avec un formulaire je rentre le message et j'envoi, je le fais fonctionner en jquery et php, mais concernant l'image j'ai fait un pré upload puis le lien de l'image je l'ai mis dans une session, que je reporte au moment de l'envoi du mail

    sinon si tu parles du message que le destinataire reçoit tu l'as dans la deuxieme section de mon message précédant

Discussions similaires

  1. envoi d'un email avec piece jointe php / classe mime_mail
    Par xunil2003 dans le forum Langage
    Réponses: 1
    Dernier message: 01/04/2010, 03h12
  2. E-mail flash-PHP avec piece jointe ?
    Par C'wam dans le forum Flash
    Réponses: 3
    Dernier message: 04/09/2006, 18h34
  3. [Mail] PHP, mail et pièces jointes
    Par padawa dans le forum Langage
    Réponses: 1
    Dernier message: 21/07/2006, 17h28
  4. [Mail] probleme piece jointe php
    Par davidcz dans le forum Langage
    Réponses: 4
    Dernier message: 04/03/2006, 00h14
  5. les pieces jointe et php?
    Par hoaxpunk dans le forum Langage
    Réponses: 9
    Dernier message: 14/12/2005, 15h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo