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

Langage PHP Discussion :

problème avec l'appel d'une class [PHP 4]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut problème avec l'appel d'une class
    bonjours,

    Je veux envoyé des mails soit en html soit en text donc j'ai regardé le multipart.
    actuellement j'utilise la fonction tep_mail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function tep_mail_tst($to_name, $to_email_address, $email_subject, $email_text, $from_email_name, $from_email_address) {
    	$message = new email(array('X-Mailer: osCommerce Mailer'));
    	$text = strip_tags($email_text);
    	if ($toto == '') {
    		$message->add_html($email_text, $text);
    	} else {
    		$message->add_text($text);
    	}
    	$message->build_message();
    	$message->send($to_name, $to_email_address, $from_email_name, $from_email_address, $email_subject);
     
    }
    mais j'aimerais appelé ma classe qui me permet de faire le multipart qui est comme sa.
    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
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    function add_alternative_part(&$obj) {
          $params['content_type'] = 'multipart/alternative';
     
          if (is_object($obj)) {
            return $obj->addSubpart('', $params);
          } else {
            return new mime('', $params);
          }
        }
     
     
        function build_message($params = '') {
          if ($params == '') $params = array();
     
          if (count($params) > 0) {
            reset($params);
            while(list($key, $value) = each($params)) {
              $this->build_params[$key] = $value;
            }
          }
     
          if (tep_not_null($this->html_images)) {
            reset($this->html_images);
            while (list(,$value) = each($this->html_images)) {
              $this->html = str_replace($value['name'], 'cid:' . $value['cid'], $this->html);
            }
          }
     
          $null = NULL;
          $attachments = ((tep_not_null($this->attachments)) ? true : false);
          $html_images = ((tep_not_null($this->html_images)) ? true : false);
          $html = ((tep_not_null($this->html)) ? true : false);
          $text = ((tep_not_null($this->text)) ? true : false);
     
          switch (true) {
            case (($text == true) && ($attachments == false)):
    /* HPDL PHP3 */
    //          $message =& $this->add_text_part($null, $this->text);
              $message = $this->add_text_part($null, $this->text);
              break;
            case (($text == false) && ($attachments == true) && ($html == false)):
    /* HPDL PHP3 */
    //          $message =& $this->add_mixed_part();
              $message = $this->add_mixed_part();
     
              for ($i=0; $i<count($this->attachments); $i++) {
                $this->add_attachment_part($message, $this->attachments[$i]);
              }
              break;
            case (($text == true) && ($attachments == true)):
    /* HPDL PHP3 */
    //          $message =& $this->add_mixed_part();
              $message = $this->add_mixed_part();
              $this->add_text_part($message, $this->text);
     
              for ($i=0; $i<count($this->attachments); $i++) {
                $this->add_attachment_part($message, $this->attachments[$i]);
              }
              break;
            case (($html == true) && ($attachments == false) && ($html_images == false)):
              if (tep_not_null($this->html_text)) {
    /* HPDL PHP3 */
    //            $message =& $this->add_alternative_part($null);
                $message = $this->add_alternative_part($null);
                $this->add_text_part($message, $this->html_text);
                $this->add_html_part($message);
              } else {
    /* HPDL PHP3 */
    //            $message =& $this->add_html_part($null);
                $message = $this->add_html_part($null);
              }
              break;
            case (($html == true) && ($attachments == false) && ($html_images == true)):
              if (tep_not_null($this->html_text)) {
    /* HPDL PHP3 */
    //            $message =& $this->add_alternative_part($null);
                $message = $this->add_alternative_part($null);
                $this->add_text_part($message, $this->html_text);
    /* HPDL PHP3 */
    //            $related =& $this->add_related_part($message);
                $related = $this->add_related_part($message);
              } else {
    /* HPDL PHP3 */
    //            $message =& $this->add_related_part($null);
    //            $related =& $message;
                $message = $this->add_related_part($null);
                $related = $message;
              }
              $this->add_html_part($related);
     
              for ($i=0; $i<count($this->html_images); $i++) {
                $this->add_html_image_part($related, $this->html_images[$i]);
              }
              break;
            case (($html == true) && ($attachments == true) && ($html_images == false)):
    /* HPDL PHP3 */
    //          $message =& $this->add_mixed_part();
              $message = $this->add_mixed_part();
              if (tep_not_null($this->html_text)) {
    /* HPDL PHP3 */
    //            $alt =& $this->add_alternative_part($message);
                $alt = $this->add_alternative_part($message);
                $this->add_text_part($alt, $this->html_text);
                $this->add_html_part($alt);
              } else {
                $this->add_html_part($message);
              }
     
              for ($i=0; $i<count($this->attachments); $i++) {
                $this->add_attachment_part($message, $this->attachments[$i]);
              }
              break;
            case (($html == true) && ($attachments == true) && ($html_images == true)):
    /* HPDL PHP3 */
    //          $message =& $this->add_mixed_part();
              $message = $this->add_mixed_part();
     
              if (tep_not_null($this->html_text)) {
    /* HPDL PHP3 */
    //            $alt =& $this->add_alternative_part($message);
                $alt = $this->add_alternative_part($message);
                $this->add_text_part($alt, $this->html_text);
    /* HPDL PHP3 */
    //            $rel =& $this->add_related_part($alt);
                $rel = $this->add_related_part($alt);
              } else {
    /* HPDL PHP3 */
    //            $rel =& $this->add_related_part($message);
                $rel = $this->add_related_part($message);
              }
              $this->add_html_part($rel);
     
              for ($i=0; $i<count($this->html_images); $i++) {
                $this->add_html_image_part($rel, $this->html_images[$i]);
              }
     
              for ($i=0; $i<count($this->attachments); $i++) {
                $this->add_attachment_part($message, $this->attachments[$i]);
              }
              break;
          }
     
          if ( (isset($message)) && (is_object($message)) ) {
            $output = $message->encode();
            $this->output = $output['body'];
     
            reset($output['headers']);
            while (list($key, $value) = each($output['headers'])) {
              $headers[] = $key . ': ' . $value;
            }
     
            $this->headers = array_merge($this->headers, $headers);
     
            return true;
          } else {
            return false;
          }
        }
    mon problème c'est que je sais pas comment faire appel a cette class ou comment fair en sorte d'avoir le html ou le text si quelqu'un peut m'aider svp

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Hello

    Tu peux poster le code de ta classe (sois gentil et mets nous seulement les prototypes des méthodes, l'implémentation ne nous intéresse pas plus que ça) ?

    A quel niveau se situe ton problème ? Est-ce ta classe ou essayes-tu d'utiliser une classe sans avoir le background nécessaire en OOP ?

    Sinon, si tu es en PHP 5.1, tu peux utiliser cette classe.

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    Merci de ta réponse,

    enfaite mon problème est que je sais pas comment faire pour activer le multipart est-ce au moment de l'appel de ma fonction
    si il me manque un paramètre normalement sa doit marché mais je sais pas comment le lancé

    car c'est un code récupéré et j'arrive pas très bien à comprendre voici l'appel de ma fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tep_mail($relances["customers_prenom"], $relances["customers_email"], $sujet, $content, 'test', 'test@yopmail.com');
    J'espère que sa pourrait vous aider à m'aider.

  4. #4
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    je relance un peu car là je suis bloqué

    et je sais pas par ou allé si quelqu'un à une direction pour moi sa serait cool

  5. #5
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    enfaite mon problème est que je sais pas comment faire pour activer le multipart est-ce au moment de l'appel de ma fonction
    Comme je l'ai dit dans mon mail précédent, fais voir le code de ta classe.

  6. #6
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    Ma class commence comme sa:

    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
     
      class email {
        var $html;
        var $text;
        var $output;
        var $html_text;
        var $html_images;
        var $image_types;
        var $build_params;
        var $attachments;
        var $headers;
     
       function email($headers = '') {
          if ($headers == '') $headers = array();
     
          $this->html_images = array();
          $this->headers = array();
     
          if (EMAIL_LINEFEED == 'CRLF') {
            $this->lf = "\r\n";
          } else {
            $this->lf = "\n";
          }
    elle à 500 ligne de code je sais pas si ta besoin de tous mais j'ai déjà mis ce que je pense dont on a besoin dans les précédent commentaire.

    il faut dire que les class et moi sa fait deux et j'ai pas trop compris comment sa marche il faut que je mis plonge bien comme il faut.

  7. #7
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    Mais si t'as besoin de tous dis moi mais je veux pas te noyé dans mon code


    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
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    542
    543
    544
    545
    546
    547
    548
    549
    550
    551
    552
    553
    554
    555
    556
    557
    558
    559
    560
     
     
    <?php
    /*
      $Id: email.php,v 1.12 2003/06/17 17:29:44 dgw_ Exp $
    
      osCommerce, Open Source E-Commerce Solutions
      http://www.oscommerce.com
    
      Copyright (c) 2003 osCommerce
    
      Released under the GNU General Public License
    
      mail.php - a class to assist in building mime-HTML eMails
    
      The original class was made by Richard Heyes <richard@phpguru.org>
      and can be found here: http://www.phpguru.org
    
      Renamed and Modified by Jan Wildeboer for osCommerce
    */
     
      class email {
        var $html;
        var $text;
        var $output;
        var $html_text;
        var $html_images;
        var $image_types;
        var $build_params;
        var $attachments;
        var $headers;
     
        function email($headers = '') {
          if ($headers == '') $headers = array();
     
          $this->html_images = array();
          $this->headers = array();
     
          if (EMAIL_LINEFEED == 'CRLF') {
            $this->lf = "\r\n";
          } else {
            $this->lf = "\n";
          }
     
    /**
     * If you want the auto load functionality
     * to find other mime-image/file types, add the
     * extension and content type here.
     */
     
          $this->image_types = array('gif' => 'image/gif',
                                     'jpg' => 'image/jpeg',
                                     'jpeg' => 'image/jpeg',
                                     'jpe' => 'image/jpeg',
                                     'bmp' => 'image/bmp',
                                     'png' => 'image/png',
                                     'tif' => 'image/tiff',
                                     'tiff' => 'image/tiff',
                                     'swf' => 'application/x-shockwave-flash');
     
          $this->build_params['html_encoding'] = 'quoted-printable';
          $this->build_params['text_encoding'] = '7bit';
          $this->build_params['html_charset'] = 'utf-8';
          $this->build_params['text_charset'] = 'utf-8';
          $this->build_params['text_wrap'] = 998;
     
    /**
     * Make sure the MIME version header is first.
     */
     
          $this->headers[] = 'MIME-Version: 1.0';
     
          reset($headers);
          while (list(,$value) = each($headers)) {
            if (tep_not_null($value)) {
              $this->headers[] = $value;
            }
          }
        }
     
    /**
     * This function will read a file in
     * from a supplied filename and return
     * it. This can then be given as the first
     * argument of the the functions
     * add_html_image() or add_attachment().
     */
     
        function get_file($filename) {
          $return = '';
     
          if ($fp = fopen($filename, 'rb')) {
            while (!feof($fp)) {
              $return .= fread($fp, 1024);
            }
            fclose($fp);
     
            return $return;
          } else {
            return false;
          }
        }
     
    /**
     * Function for extracting images from
     * html source. This function will look
     * through the html code supplied by add_html()
     * and find any file that ends in one of the
     * extensions defined in $obj->image_types.
     * If the file exists it will read it in and
     * embed it, (not an attachment).
     *
     * Function contributed by Dan Allen
     */
     
        function find_html_images($images_dir) {
    // Build the list of image extensions
          while (list($key, ) = each($this->image_types)) {
            $extensions[] = $key;
          }
     
          preg_match_all('/"([^"]+\.(' . implode('|', $extensions).'))"/Ui', $this->html, $images);
     
          for ($i=0; $i<count($images[1]); $i++) {
            if (file_exists($images_dir . $images[1][$i])) {
              $html_images[] = $images[1][$i];
              $this->html = str_replace($images[1][$i], basename($images[1][$i]), $this->html);
            }
          }
     
          if (tep_not_null($html_images)) {
    // If duplicate images are embedded, they may show up as attachments, so remove them.
            $html_images = array_unique($html_images);
            sort($html_images);
     
            for ($i=0; $i<count($html_images); $i++) {
              if ($image = $this->get_file($images_dir . $html_images[$i])) {
                $content_type = $this->image_types[substr($html_images[$i], strrpos($html_images[$i], '.') + 1)];
                $this->add_html_image($image, basename($html_images[$i]), $content_type);
              }
            }
          }
        }
     
    /**
     * Adds plain text. Use this function
     * when NOT sending html email
     */
     
        function add_text($text = '') {
          $this->text = tep_convert_linefeeds(array("\r\n", "\n", "\r"), $this->lf, $text);
        }
     
    /**
     * Adds a html part to the mail.
     * Also replaces image names with
     * content-id's.
     */
     
        function add_html($html, $text = NULL, $images_dir = NULL) {
          $this->html = tep_convert_linefeeds(array("\r\n", "\n", "\r"), '<br>', $html);
          $this->html_text = tep_convert_linefeeds(array("\r\n", "\n", "\r"), $this->lf, $text);
     
          if (isset($images_dir)) $this->find_html_images($images_dir);
        }
     
    /**
     * Adds an image to the list of embedded
     * images.
     */
     
        function add_html_image($file, $name = '', $c_type='application/octet-stream') {
          $this->html_images[] = array('body' => $file,
                                       'name' => $name,
                                       'c_type' => $c_type,
                                       'cid' => md5(uniqid(time())));
        }
     
    /**
     * Adds a file to the list of attachments.
     */
     
        function add_attachment($file, $name = '', $c_type='application/octet-stream', $encoding = 'base64') {
          $this->attachments[] = array('body' => $file,
                                       'name' => $name,
                                       'c_type' => $c_type,
                                       'encoding' => $encoding);
        }
     
    /**
     * Adds a text subpart to a mime_part object
     */
     
    /* HPDL PHP3 */
    //    function &add_text_part(&$obj, $text) {
        function add_text_part(&$obj, $text) {
          $params['content_type'] = 'text/plain';
          $params['encoding'] = $this->build_params['text_encoding'];
          $params['charset'] = $this->build_params['text_charset'];
     
          if (is_object($obj)) {
            return $obj->addSubpart($text, $params);
          } else {
            return new mime($text, $params);
          }
        }
     
    /**
     * Adds a html subpart to a mime_part object
     */
     
    /* HPDL PHP3 */
    //    function &add_html_part(&$obj) {
        function add_html_part(&$obj) {
          $params['content_type'] = 'text/html';
          $params['encoding'] = $this->build_params['html_encoding'];
          $params['charset'] = $this->build_params['html_charset'];
     
          if (is_object($obj)) {
            return $obj->addSubpart($this->html, $params);
          } else {
            return new mime($this->html, $params);
          }
        }
     
    /**
     * Starts a message with a mixed part
     */
     
    /* HPDL PHP3 */
    //    function &add_mixed_part() {
        function add_mixed_part() {
          $params['content_type'] = 'multipart/mixed';
     
          return new mime('', $params);
        }
     
    /**
     * Adds an alternative part to a mime_part object
     */
     
    /* HPDL PHP3 */
    //    function &add_alternative_part(&$obj) {
        function add_alternative_part(&$obj) {
          $params['content_type'] = 'multipart/alternative';
     
          if (is_object($obj)) {
            return $obj->addSubpart('', $params);
          } else {
            return new mime('', $params);
          }
        }
     
    /**
     * Adds a html subpart to a mime_part object
     */
     
    /* HPDL PHP3 */
    //    function &add_related_part(&$obj) {
        function add_related_part(&$obj) {
          $params['content_type'] = 'multipart/related';
     
          if (is_object($obj)) {
            return $obj->addSubpart('', $params);
          } else {
            return new mime('', $params);
          }
        }
     
    /**
     * Adds an html image subpart to a mime_part object
     */
     
    /* HPDL PHP3 */
    //    function &add_html_image_part(&$obj, $value) {
        function add_html_image_part(&$obj, $value) {
          $params['content_type'] = $value['c_type'];
          $params['encoding'] = 'base64';
          $params['disposition'] = 'inline';
          $params['dfilename'] = $value['name'];
          $params['cid'] = $value['cid'];
     
          $obj->addSubpart($value['body'], $params);
        }
     
    /**
     * Adds an attachment subpart to a mime_part object
     */
     
    /* HPDL PHP3 */
    //    function &add_attachment_part(&$obj, $value) {
        function add_attachment_part(&$obj, $value) {
          $params['content_type'] = $value['c_type'];
          $params['encoding'] = $value['encoding'];
          $params['disposition'] = 'attachment';
          $params['dfilename'] = $value['name'];
     
          $obj->addSubpart($value['body'], $params);
        }
     
    /**
     * Builds the multipart message from the
     * list ($this->_parts). $params is an
     * array of parameters that shape the building
     * of the message. Currently supported are:
     *
     * $params['html_encoding'] - The type of encoding to use on html. Valid options are
     *                            "7bit", "quoted-printable" or "base64" (all without quotes).
     *                            7bit is EXPRESSLY NOT RECOMMENDED. Default is quoted-printable
     * $params['text_encoding'] - The type of encoding to use on plain text Valid options are
     *                            "7bit", "quoted-printable" or "base64" (all without quotes).
     *                            Default is 7bit
     * $params['text_wrap']     - The character count at which to wrap 7bit encoded data.
     *                            Default this is 998.
     * $params['html_charset']  - The character set to use for a html section.
     *                            Default is iso-8859-1
     * $params['text_charset']  - The character set to use for a text section.
     *                          - Default is iso-8859-1
     */
     
    /* HPDL PHP3 */
    //    function build_message($params = array()) {
        function build_message($params = '') {
          if ($params == '') $params = array();
     
          if (count($params) > 0) {
            reset($params);
            while(list($key, $value) = each($params)) {
              $this->build_params[$key] = $value;
            }
          }
     
          if (tep_not_null($this->html_images)) {
            reset($this->html_images);
            while (list(,$value) = each($this->html_images)) {
              $this->html = str_replace($value['name'], 'cid:' . $value['cid'], $this->html);
            }
          }
     
          $null = NULL;
          $attachments = ((tep_not_null($this->attachments)) ? true : false);
          $html_images = ((tep_not_null($this->html_images)) ? true : false);
          $html = ((tep_not_null($this->html)) ? true : false);
          $text = ((tep_not_null($this->text)) ? true : false);
     
          switch (true) {
            case (($text == true) && ($attachments == false)):
    /* HPDL PHP3 */
    //          $message =& $this->add_text_part($null, $this->text);
              $message = $this->add_text_part($null, $this->text);
              break;
            case (($text == false) && ($attachments == true) && ($html == false)):
    /* HPDL PHP3 */
    //          $message =& $this->add_mixed_part();
              $message = $this->add_mixed_part();
     
              for ($i=0; $i<count($this->attachments); $i++) {
                $this->add_attachment_part($message, $this->attachments[$i]);
              }
              break;
            case (($text == true) && ($attachments == true)):
    /* HPDL PHP3 */
    //          $message =& $this->add_mixed_part();
              $message = $this->add_mixed_part();
              $this->add_text_part($message, $this->text);
     
              for ($i=0; $i<count($this->attachments); $i++) {
                $this->add_attachment_part($message, $this->attachments[$i]);
              }
              break;
            case (($html == true) && ($attachments == false) && ($html_images == false)):
              if (tep_not_null($this->html_text)) {
    /* HPDL PHP3 */
    //            $message =& $this->add_alternative_part($null);
                $message = $this->add_alternative_part($null);
                $this->add_text_part($message, $this->html_text);
                $this->add_html_part($message);
              } else {
    /* HPDL PHP3 */
    //            $message =& $this->add_html_part($null);
                $message = $this->add_html_part($null);
              }
              break;
            case (($html == true) && ($attachments == false) && ($html_images == true)):
              if (tep_not_null($this->html_text)) {
    /* HPDL PHP3 */
    //            $message =& $this->add_alternative_part($null);
                $message = $this->add_alternative_part($null);
                $this->add_text_part($message, $this->html_text);
    /* HPDL PHP3 */
    //            $related =& $this->add_related_part($message);
                $related = $this->add_related_part($message);
              } else {
    /* HPDL PHP3 */
    //            $message =& $this->add_related_part($null);
    //            $related =& $message;
                $message = $this->add_related_part($null);
                $related = $message;
              }
              $this->add_html_part($related);
     
              for ($i=0; $i<count($this->html_images); $i++) {
                $this->add_html_image_part($related, $this->html_images[$i]);
              }
              break;
            case (($html == true) && ($attachments == true) && ($html_images == false)):
    /* HPDL PHP3 */
    //          $message =& $this->add_mixed_part();
              $message = $this->add_mixed_part();
              if (tep_not_null($this->html_text)) {
    /* HPDL PHP3 */
    //            $alt =& $this->add_alternative_part($message);
                $alt = $this->add_alternative_part($message);
                $this->add_text_part($alt, $this->html_text);
                $this->add_html_part($alt);
              } else {
                $this->add_html_part($message);
              }
     
              for ($i=0; $i<count($this->attachments); $i++) {
                $this->add_attachment_part($message, $this->attachments[$i]);
              }
              break;
            case (($html == true) && ($attachments == true) && ($html_images == true)):
    /* HPDL PHP3 */
    //          $message =& $this->add_mixed_part();
              $message = $this->add_mixed_part();
     
              if (tep_not_null($this->html_text)) {
    /* HPDL PHP3 */
    //            $alt =& $this->add_alternative_part($message);
                $alt = $this->add_alternative_part($message);
                $this->add_text_part($alt, $this->html_text);
    /* HPDL PHP3 */
    //            $rel =& $this->add_related_part($alt);
                $rel = $this->add_related_part($alt);
              } else {
    /* HPDL PHP3 */
    //            $rel =& $this->add_related_part($message);
                $rel = $this->add_related_part($message);
              }
              $this->add_html_part($rel);
     
              for ($i=0; $i<count($this->html_images); $i++) {
                $this->add_html_image_part($rel, $this->html_images[$i]);
              }
     
              for ($i=0; $i<count($this->attachments); $i++) {
                $this->add_attachment_part($message, $this->attachments[$i]);
              }
              break;
          }
     
          if ( (isset($message)) && (is_object($message)) ) {
            $output = $message->encode();
            $this->output = $output['body'];
     
            reset($output['headers']);
            while (list($key, $value) = each($output['headers'])) {
              $headers[] = $key . ': ' . $value;
            }
     
            $this->headers = array_merge($this->headers, $headers);
     
            return true;
          } else {
            return false;
          }
        }
     
    /**
     * Sends the mail.
     */
     
        function send($to_name, $to_addr, $from_name, $from_addr, $subject = '', $headers = '') {
          $to = (($to_name != '') ? '"' . $to_name . '" <' . $to_addr . '>' : $to_addr);
          $from = (($from_name != '') ? '"' . $from_name . '" <' . $from_addr . '>' : $from_addr);
     
          if (is_string($headers)) {
            $headers = explode($this->lf, trim($headers));
          }
     
          for ($i=0; $i<count($headers); $i++) {
            if (is_array($headers[$i])) {
              for ($j=0; $j<count($headers[$i]); $j++) {
                if ($headers[$i][$j] != '') {
                  $xtra_headers[] = $headers[$i][$j];
                }
              }
            }
     
            if ($headers[$i] != '') {
              $xtra_headers[] = $headers[$i];
            }
          }
     
          if (!isset($xtra_headers)) {
            $xtra_headers = array();
          }
     
          if (EMAIL_TRANSPORT == 'smtp') {
            return mail($to_addr, $subject, $this->output, 'From: ' . $from . $this->lf . 'To: ' . $to . $this->lf . implode($this->lf, $this->headers) . $this->lf . implode($this->lf, $xtra_headers));
          } else {
            return mail($to, $subject, $this->output, 'From: '.$from.$this->lf.implode($this->lf, $this->headers).$this->lf.implode($this->lf, $xtra_headers));
          }
        }
     
    /**
     * Use this method to return the email
     * in message/rfc822 format. Useful for
     * adding an email to another email as
     * an attachment. there's a commented
     * out example in example.php.
     *
     * string get_rfc822(string To name,
     *       string To email,
     *       string From name,
     *       string From email,
     *       [string Subject,
     *        string Extra headers])
     */
     
        function get_rfc822($to_name, $to_addr, $from_name, $from_addr, $subject = '', $headers = '') {
    // Make up the date header as according to RFC822
          $date = 'Date: ' . date('D, d M y H:i:s');
          $to = (($to_name != '') ? 'To: "' . $to_name . '" <' . $to_addr . '>' : 'To: ' . $to_addr);
          $from = (($from_name != '') ? 'From: "' . $from_name . '" <' . $from_addr . '>' : 'From: ' . $from_addr);
     
          if (is_string($subject)) {
            $subject = 'Subject: ' . $subject;
          }
     
          if (is_string($headers)) {
            $headers = explode($this->lf, trim($headers));
          }
     
          for ($i=0; $i<count($headers); $i++) {
            if (is_array($headers[$i])) {
              for ($j=0; $j<count($headers[$i]); $j++) {
                if ($headers[$i][$j] != '') {
                  $xtra_headers[] = $headers[$i][$j];
                }
              }
            }
     
            if ($headers[$i] != '') {
              $xtra_headers[] = $headers[$i];
            }
          }
     
          if (!isset($xtra_headers)) {
            $xtra_headers = array();
          }
     
          $headers = array_merge($this->headers, $xtra_headers);
     
          return $date . $this->lf . $from . $this->lf . $to . $this->lf . $subject . $this->lf . implode($this->lf, $headers) . $this->lf . $this->lf . $this->output;
        }
      }
    ?>
    Je t'ai tous mis en espérant que sa ira

  8. #8
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Bon, je vais pas me lancer dans un cours théorique sur le paradigme objet, il y a de très bons articles sur la question. Mais je vais cependant tenter de l'expliquer rapidement.

    En programmation orientée object (Oriented Object Programming en Anglais ou OOP), les classes sont des "moules" servant à la fabrication d'un objet (également désigné par le terme "instance"). En somme, un objet est l'instance d'une classe. Une classe est une structure porteuse d'attributs (les données) et de méthodes (les traitements, les fonctions pour parler simplement).

    Un objet est très pratique en programmation car:
    - il encapsule les données et les traitements
    - fournit une notion de visibilité interne sur les entités de l'objet (attributs et méthodes)
    - permet l'héritage, caractérisé par la relation "est un espèce de..." (par exemple une voiture est une espèce de véhicule).
    - un objet peut avoir plusieurs types (par exemple un homme est à la fois un humain et un mamifère)

    La programmation orientée objet est apparue avec PHP 4 mais n'existe véritablement que dans la version 5 - l'implémentation qui en était fait en PHP 4 se rapproche plus des structures comme en C qu'a un réél modèle objet...

    Prennons un exemple concret: la voiture.
    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
     
    class Voiture {
     
    	protected $_marque;
    	protected $_nombre_de_portes;
    	protected $_nombre_de_places;
    	protected $_puissance_chevaux;
     
    	public function __construct ($marque, $portes, $places, $puissance) {
    		$this->definirMarque($marque);
    		$this->definirPortes($portes);
    		$this->definirPlaces($places);
    		$this->definirPuissance($puissance);
    	}
     
    	public function definirMarque ($marque) {
    		$this->_marque = $marque;
    	}
     
    	public function definirPortes ($portes) {
    		$this->_nombre_de_portes = $portes;
    	}
     
    	public function definirPlaces ($places) {
    		$this->_nombre_de_places = $places;
    	}
     
    	public function definirPuissance ($puissance) {
    		$this->_puissance_chevaux = $puissance;
    	}
    }
    Note: le mot clé $this permet d'accéder à l'instance "en cours". $this caractérise une référence sur l'instance qu'on est en train de manipuler dans une méthode.

    Dans notre exemple, la classe voiture porte 4 attributs: sa marque, le nombre de portes, de places et la puissance du moteur. Ces attributs sont marqués en protected ce qui signifie qu'ils sont protégés: il ne sont pas accessibles de l'extérieur de l'objet mais les classes filles les verront (on verra plus loin ce que ça implique dans le cadre de l'héritage).

    Il existe 3 mots clés pour définir la visibilité des attributs / méthodes:
    - public, accès complet a l'extérieur comme aux filles
    - protected, accès interdit à l'extérieur mais pas aux filles
    - private, accès interdit à l'extérieur comme aux filles

    La classe porte également 5 méthodes, un constructeur (__construct est le mot clé en PHP 5, en PHP 4 c'est le nom de la classe qu'il faut utiliser) et 4 accesseurs qui permettent de définir les propriétés de l'objet (car on les à protégés). Dans notre exemple, la protection est certes un peu malheureuse car cela ne sert à rien de définir des champs comme protégés ou privés si c'est pour donner des accesseurs direct dessus. Normalement, les accesseurs doivent faire des vérification sur les données et c'est là que protéger les attributs devient intéressant: par exemple dans le cadre d'une classe de mail, on peut protéger la propriété "to" et faire en sorte que l'accesseur valide l'email qu'on essaye d'insérer.

    Voici comment on va se servir de notre classe:
    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
     
    // Créer une nouvelle voiture
    $voiture = new Voiture("Renaut", 3, 5, 60);
     
    // affichons notre objet
    var_dump($voiture);
     
    // On va définir la marque par exemple
    $voiture->definirMarque("Mercedes");
     
    // affichons à nouveau
    var_dump($voiture);
     
    // note sur les propriétés protégées :
    // il est impossible de faire
    $voiture->$_marque = "une marque";
    On remarque que, contrairement à des langages objet comme Java ou JavaScript par exemple, les propriétés / méthodes sont accédées par l'opérateur flèche (->) et non par le point (qui en PHP est l'opérateur de concaténation).

    Nous avons vu tout à l'heure qu'une voiture est une espèce de véhicule, en effet, les attributs $_marque et $_puissance_chevaux sont communs à tous les véhicules à moteur. On va donc crée une classe mère pour notre voiture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    abstract class VehiculeMotorise {
     
    	protected $_marque;
    	protected $_puissance_chevaux;
     
    	public function definirPuissance ($puissance) {
    		$this->_puissance_chevaux = $puissance;
    	}
     
    	public function definirMarque ($marque) {
    		$this->_marque = $marque;
    	}	
    }
    Le mot clé abstract définit la classe VehiculeMotorise comme classe abstraite ce qui signifie qu'elle ne peut être instanciée (on peut pas créer d'objets à partir de cette classe). Elle va nous servir de classe de base pour notre classe voiture (on parle alors de classe mère: VehiculeMotorise est la classe mère de Voiture, et Voiture est une fille de VehiculeMotorise).

    Note: l'héritage multiple, comme dans la plupart des langages objets n'existe pas. Une classe peut hériter d'aucune ou une seule classe mère mais peut réaliser plusieurs interface (on y reviendra plus tard).

    Voici donc notre nouvelle classe Voiture:
    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
     
    class Voiture extends VehiculeMotorise {
     
    	protected $_nombre_de_portes;
    	protected $_nombre_de_places;
     
    	public function __construct ($marque, $portes, $places, $puissance) {
    		$this->definirMarque($marque);
    		$this->definirPortes($portes);
    		$this->definirPlaces($places);
    		$this->definirPuissance($puissance);
    	}
     
    	public function definirPortes ($portes) {
    		$this->_nombre_de_portes = $portes;
    	}
     
    	public function definirPlaces ($places) {
    		$this->_nombre_de_places = $places;
    	}
    }
    On remarque que les attributs et méthodes présent dans la classe mère ne sont pas redéfinis (bien que cela reste possible) dans la fille: elle en hérite automatiquement.
    L'intérêt principal de l'héritage est la factorisation: les méthodes definirPuissance et definirMarque sont immédiatement disponibles.
    On pourrait d'ailleurs créer une classe Moto sur ce principe (je te laisse imaginer comment ).

    Attention: si on avait défini dans la classe abstraite certaines méthode ou propriétés en private, les filles ne les auraient alors pas hérité.
    Il est également possible pour une classe abstraite de forcer les filles à définir une méthode:
    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
     
    class Mere {
     
       // une méthode abstraite n'a pas de définition
       // seul son prototype (sa déclaration) est
       // disponible
       abstract public function methodeAbstraite ();
     
       public function methodeConcrete () { echo $this->methodeAbstraite(); }
    }
     
    class Fille extends Mere {
       public function methodeAbstraite () { return "Say Hello To Peter !"; }
    }
     
    $f = new Fille;
    $f->methodeConcrete(); // affiche "Say Hello To Peter !"
    Il est également possible de définir des méthode / propriétés statiques. Ces méthodes n'ont pas besoin d'une instance pour s'exécuter. Elles obéissent aux même règles de visibilité que les méthodes classiques.

    Note: une méthode statique est généralement appelée méthode de classe alors qu'une méthode nécessitant un objet est appelée méthode d'instance.
    De la même manière, on peut crée des propriétés de classe et des propriétés d'instance. On peut méler les deux arbitrairement suivant ses besoins.

    Note: s'il est possible conceptuellement de rendre une méthode statique, il vaut mieux le faire, les méthodes de classe s'exécutent 4x plus rapidement que les méthodes d'instance.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class UneClasse {
     
      protected static $_peter = "Peter";
     
      public static function sayHello { echo "Say hello to " . self::$_peter; }
    }
     
    // pour appeller une méthode ou propriété de classe on utilise
    // l'opérateur de résolution de porté (::)
    UneClasse::sayHello();
    Les interfaces quand à elles sont des classes qui ne font que déclarer les méthodes sans les définir (en quelque sorte, ce sont des classes abstraites où toutes les méthode sont abstraites).
    Elles se définissent de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    interface Affichable {
     
      public function afficher ();
     
    }
    On va l'appliquer sur notre voiture de cette façon:
    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
     
    class Voiture extends VehiculeMotorise implements Affichable {
     
    	protected $_nombre_de_portes;
    	protected $_nombre_de_places;
     
    	public function __construct ($marque, $portes, $places, $puissance) {
    		$this->definirMarque($marque);
    		$this->definirPortes($portes);
    		$this->definirPlaces($places);
    		$this->definirPuissance($puissance);
    	}
     
    	public function definirPortes ($portes) {
    		$this->_nombre_de_portes = $portes;
    	}
     
    	public function definirPlaces ($places) {
    		$this->_nombre_de_places = $places;
    	}
     
    	public function afficher () {
    		echo "Voiture $this->_marque avec $this->_nombre_de_places places et $this->_nombre_de_portes portes";
    	}
    }
    On peut donc désormais faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $voiture = new Voiture("Renaut", 3, 5, 60);
    $voiture->afficher();
    Les interfaces sont pratiques pour définir des prototypes communs à plusieurs classes dans le but de les faire collaborer.

    Voilà, j'éspère que tu y vois un peu plus clair. Il y a bien évidement beaucoup plus à dire, je suis allé à l'essentiel. On notera également l'usage des méhodes magiques, des constantes magiques, du late static binding, de la défintion d'API au travers des interface, des design patterns etc. Mais je te laisse découvrir tout ça par toi même

  9. #9
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    Merci pour cette éclaircissement,

    J'ai testé hier croyant avoir compris et le résultat de mes tentative mon prouvé que non

    mais je lache pas je continue à tester

    Merci en tous cas d'avoir pris ton temps pour ces précieuse explication

  10. #10
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    Le truc que je comprend pas c'est dans l'appel de mon tep_mail_tst
    je test et sa marche jamais je doit bien appelé ma class et la fonction qui est dedans je mets surement le mauvais paramètre dedans?

    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
     
    function tep_mail_tst($to_name, $to_email_address, $email_subject, $email_text, $from_email_name, $from_email_address) {
    	$message = new email(array('X-Mailer: osCommerce Mailer'));
     
    	$text = strip_tags($email_text);
     
    	if ($toto == '') {
    		$message->add_html($email_text, $text);
    	} else {
    		$message->add_text($text);
    	}
     
    	$message->add_alternative_part($email_text);
    	$message->build_message();
    	$message->send($to_name, $to_email_address, $from_email_name, $from_email_address, $email_subject);
     
    }
    j'ai reajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message->add_alternative_part($email_text);
    pour qu'il aille chercher la function

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function add_alternative_part(&$obj) {
          $params['content_type'] = 'multipart/alternative';
     
          if (is_object($obj)) {
            return $obj->addSubpart('', $params);
          } else {
            return new mime('', $params);
          }
        }
    mais j'ai que le contenu html

  11. #11
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Dans un mail multipart qui à une partie text/plain et une partie text/html, si le client est capable de comprendre le mime et d'afficher le HTML, alors seul le HTML sera affiché, mais le contenu du message contiendra bien le texte également.

    Si tu utilise gmail pour faire tes test, tu peux faire "Show Orginal" dans l'onglet avec la flèche vers le bas, qui te montrera le code source intégral de l'email.

  12. #12
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    Merci heureusement que tu es là sinon je me serais

    bon normalement sa doit être bon je te montre ma source mais pour être sure je veux juste ta confirmation

    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
     
     
    Delivered-To: alixi@gmail.com
    Received: by 10.223.165.567 with SMTP id j5cs215333047faq;
            Wed, 25 May 2011 07:49:47 -0700 (PDT)
    Received: by 10.101.60.5 with SMTP id n5mr3990681ank.8.13063349de3386184;
            Wed, 25 May 2011 07:49:46 -0700 (PDT)
    Return-Path: <root@test-mail.com>
    Received: from nwt83.domaination.com.hk (nwt83.domaination.com.hk [210.245.166.81])
            by mx.google.com with ESMTP id g40si19610772anh.90.2011.035.225.07.439.434;
            Wed, 25 May 2011 07:49:45 -0700 (PDT)
    Received-SPF: pass (google.com: domain of root@test-mail.com designates 210.245.166.81 as permitted sender) client-ip=210.245.166.81;
    Authentication-Results: mx.google.com; spf=pass (google.com: domain of root@test-mail.com designates 210.245.166.81 as permitted sender) smtp.mail=root@test-mail.com
    Received: from test-mail.com (test-mail.com [202.181.134.68])
    	by nwt83.domaination.com.hk (Postfix) with ESMTP id F10C37B9B33286
    	for <alixi@gmail.com>; Wed, 25 May 2011 22:39:47 +0800 (HKT)
    X-DKIM: OpenDKIM Filter v2.2.2 nwt83.domaination.com.hk F10C3732fB9B86
    Received: (qmail 3853 invoked by uid 48); 25 May 2011 16:49:27 +0200
    Date: 25 May 2011 16:49:27 +0200
    Message-ID: <2011052344345144927.3850.qmail@test-mail.com>
    To: "Alixskander" <alixi@gmail.com>
    Subject: Alixskander, sa marche
    From: "test" <test@test-mail.com>
    MIME-Version: 1.0
    X-Mailer: osCommerce Mailer
    Content-Type: multipart/alternative;
    	boundary="=_dd7b40483ef2e66b95ca6a7d813b4074"
     
     
    --=_dd7b40483ef2e66b95ca6a7d813b4074
    Content-Type: text/plain; charset="utf-8"
    Content-Transfer-Encoding: 7bit
     
     
    marche ou pas
    --=_dd7b40483ef2e66b95ca6a7d813b4074
    Content-Type: text/html; charset="utf-8"
    Content-Transfer-Encoding: quoted-printable
     
    <br><body bgcolor=3D"#F7F7E3"><table border=3D"0" cellpadding=3D"0" width=
    =3D"100%" style=3D"font-family:Verdana" ><tr><td><div align=3D"center"><tab=
    le style=3D"border:1px solid black;" cellspacing=3D"1" cellpadding=3D"0" wi=
    dth=3D"652"><tr><td><table border=3D"0" cellspacing=3D"0" cellpadding=3D"0"=
     width=3D"650"><tr><td><p><img src=3D"http://www.test-mail.com/images/he=
    ader_approved.gif" alt=3D"bandeau" width=3D"650" height=3D"170" /></p></td>=
    </tr></table><table border=3D"0" cellspacing=3D"15" cellpadding=3D"0" width=
    =3D"650"><tr><td><br /><br /><span style=3D"font-family:Verdana;  font-size=
    :14px">marche ou pas</p></td></tr></table></body>
    --=_dd7b40483ef2e66b95ca6a7d813b4074--
    Merci de ta confirmation

  13. #13
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    ça m'a l'air correct, ton message est bien en multipart/alternative et on a deux contenus séparés, un en text/plain et l'autre en text/html.

    multipart/alternative :
    Ce type est utilisé pour spécifier une version différente à une même partie de message. Le client mail choisira alors la meilleure version pour lui. La version préférée est généralement placée à la fin.

    Plus d'infos par ici : http://a-pellegrini.developpez.com/tutoriels/php/mail/

  14. #14
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    Merci pour ton aide.

    J'ai une dernière question.

    actuellement pour séparer le html du text je prend ma variable qui contient le html ex:

    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
     
    $top = '
    <body bgcolor=3D"#F7F7E3"><table border=3D"0" cellpadding=3D"0" width=
    =3D"100%" style=3D"font-family:Verdana" ><tr><td><div align=3D"center"><tab=
    le style=3D"border:1px solid black;" cellspacing=3D"1" cellpadding=3D"0" wi=
    dth=3D"652"><tr><td><table border=3D"0" cellspacing=3D"0" cellpadding=3D"0"=
     width=3D"650"><tr><td><p><img src=3D"http://www.test-mail.com/images/he=
    ader_approved.gif" alt=3D"bandeau" width=3D"650" height=3D"170" /></p></td>=
    </tr></table><table border=3D"0" cellspacing=3D"15" cellpadding=3D"0" width=
    =3D"650"><tr><td><br /><br /><span style=3D"font-family:Verdana;  font-size=
    :14px">
    <a href="http://www.test-mail.com/desabonnement.php">
    marche ou pas
    </a>
    </p></td></tr></table></body>';
    mais le problème c'est que mon liens pour le désabonnement disparait connaitrai-tu une solution?

    Merci d'avance

  15. #15
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    C'est louche que le lien disparaisse... Il n'est pas présent dans la source du mail ?

    Tu peux utiliser les headers pour les abonnements (mais tous les clients ne n'ont pas encore): X-Unsubscribe-Email et X-Unsubscribe-Web.

    Jute pour aider, tu peux utiliser la syntaxe heredoc pour déclarer des chaines longues en PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $str = <<< HTML
    <div>un bout</div>
    <span>de html</span>
    HTML;

  16. #16
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    Merci Benjamin,

    Mais c'est normal que j'ai plus mon lien car dans ma fonction je fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strip_tags($email_text);
    pour supprimer les balises html donc forcément sa supprime mon lien le truc c'est que je dois trouvé la solution pour gardé que les balises href ce que je pense n'existe pas.

    Enfin je cherche une solution.

  17. #17
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Une chaine en text/plain ne sera jamais interprétée en HTML. Donc tu n'auras jamais de lien cliquable.

  18. #18
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    je sais c'est pour sa qu'il faut que je trouve une astuce mais là je vais supprimer ce qui commence par <a href=|http:// comme sa la personne aura le lien enfin c'est le seul truc que j'ai trouvé pour l'instant

    c'est ce qui s'appel du bricolage

  19. #19
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Au passage, la fonction stip_tags permet de passer les tags qui resteront inchangés dans la chaine de caractères.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/01/2009, 08h25
  2. [POO] Problème avec un require_once dans une classe
    Par Sayrus dans le forum Langage
    Réponses: 5
    Dernier message: 23/02/2008, 14h40
  3. [ImageMagick] Appel d'une image ?
    Par nerazzurri dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 30/09/2007, 12h58
  4. [Système] Problème avec les méthodes d'une classe
    Par oussama127 dans le forum Langage
    Réponses: 7
    Dernier message: 30/08/2006, 09h18
  5. problème avec l'appel d'une fonction
    Par mademoizel dans le forum ASP
    Réponses: 5
    Dernier message: 26/06/2006, 15h04

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