Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/05/2011, 16h10   #1
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 318
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 318
Points : 39
Points : 39
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 :
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 :
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
sinifer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 18h17   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 18h31   #3
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 318
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 318
Points : 39
Points : 39
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 :
tep_mail($relances["customers_prenom"], $relances["customers_email"], $sujet, $content, 'test', 'test@yopmail.com');
J'espère que sa pourrait vous aider à m'aider.
sinifer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 10h16   #4
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 318
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 318
Points : 39
Points : 39
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
sinifer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 10h50   #5
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Citation:
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 11h09   #6
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 318
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 318
Points : 39
Points : 39
Ma class commence comme sa:

Code :
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.
sinifer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 12h03   #7
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 318
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 318
Points : 39
Points : 39
Mais si t'as besoin de tous dis moi mais je veux pas te noyé dans mon code


Code :
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
sinifer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 12h35   #8
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
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 :
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 :
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 :
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 :
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 :
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 :
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 :
1
2
3
4
5
6
 
interface Affichable {
 
  public function afficher ();
 
}
On va l'appliquer sur notre voiture de cette façon:
Code :
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 :
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
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 09h41   #9
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 318
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 318
Points : 39
Points : 39
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
sinifer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 11h02   #10
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 318
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 318
Points : 39
Points : 39
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 :
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 :
$message->add_alternative_part($email_text);
pour qu'il aille chercher la function

Code :
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
sinifer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 12h14   #11
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 16h59   #12
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 318
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 318
Points : 39
Points : 39
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 :
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
sinifer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 17h51   #13
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
ç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/
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 14h36   #14
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 318
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 318
Points : 39
Points : 39
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 :
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
sinifer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 15h42   #15
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
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 :
1
2
3
4
5
 
$str = <<< HTML
<div>un bout</div>
<span>de html</span>
HTML;
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 16h32   #16
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 318
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 318
Points : 39
Points : 39
Merci Benjamin,

Mais c'est normal que j'ai plus mon lien car dans ma fonction je fait un
Code :
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.
sinifer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 17h15   #17
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Une chaine en text/plain ne sera jamais interprétée en HTML. Donc tu n'auras jamais de lien cliquable.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 11h22   #18
Nouveau Membre du Club
 
Inscription : février 2008
Messages : 318
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 318
Points : 39
Points : 39
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
sinifer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 22h31   #19
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Au passage, la fonction stip_tags permet de passer les tags qui resteront inchangés dans la chaine de caractères.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h14.


 
 
 
 
Partenaires

Hébergement Web