Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z meilem w formacie html
Forum PHP.pl > Forum > Przedszkole
pyrek
Witam!

Wiem że takie tamty już były ale szukam czytam robie i nic z tego a mam taki problem:


wysyłam meila za pomocą takiego czegoś:
  1. <?php
  2.  
  3. $naglowek = "From: $email_confnReply-To:$email_adminarn";
  4. $naglowek .= "MIME-Version: 1.0rn";
  5. $naglowek .= "Content-type: $format; charset=iso-8859-2rn";
  6. $naglowek .= "X-Priority: 3rn";
  7. $naglowek .= "X-MSMail-Priority: Normalrn";
  8. $naglowek .= "X-Mailer: Microsoft Outlook Express 6.00.2900.2180rn";
  9. $naglowek .= "X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180rn";
  10.               
  11.               
  12. $tresc ="
  13. <html>
  14. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" >
  15. <meta http-equiv="content-type" content="text/html; charset=pl">
  16. <style type="text/css">
  17. <!--
  18. td.first_row_all {
  19.        
  20.         vertical-align: top;
  21.         font-size: 12px;
  22.        
  23.         border-top :  1px black solid;
  24.         border-right :  1px black solid;
  25.         border-bottom :  1px black solid;
  26.         padding : 1px 1px 1px 1px;
  27.         }
  28.  
  29. td.first_row_left_td {
  30.     
  31.         vertical-align: top;
  32.         font-size: 12px;
  33.         
  34.         border-top :  1px black solid;
  35.         border-left :  1px black solid;
  36.         border-right :  1px black solid;
  37.         border-bottom :  1px black solid;
  38.         padding : 1px 1px 1px 1px;
  39.         }
  40.  
  41. td.last_row_all {
  42.      
  43.         vertical-align: top;
  44.         font-size: 12px;
  45.         
  46.         border-right :  1px black solid;
  47.         border-bottom :  1px black solid;
  48.         padding : 1px 1px 1px 1px;
  49.         }
  50.         
  51. td.last_right {
  52.      
  53.         vertical-align: top;
  54.         font-size: 12px;
  55.         border-right :  1px black solid;
  56.         padding : 1px 1px 1px 1px;
  57.         }
  58.  
  59. td.last_row_left_td {
  60.  
  61.         vertical-align: top;
  62.         font-size: 12px;
  63.         
  64.         border-left :  1px black solid;
  65.         border-right :  1px black solid;
  66.         border-bottom :  1px black solid;
  67.         padding : 1px 1px 1px 1px;
  68.         }
  69. td.last_row_right_td {
  70.  
  71.         vertical-align: top;
  72.         font-size: 12px;
  73.         
  74.         border-right :  1px black solid;
  75.         border-bottom :  1px black solid;
  76.         padding : 1px 1px 1px 1px;
  77.         }
  78.  
  79. //-->
  80. </style>
  81. <body>
  82.  
  83. W sklepie  $nazwa_conf zostało złożone zamówienie które oczekuje na akceptacje. 
    n
  84. Wszelkie informacje znajdą Państwo pod adresem: $url_conf   nn
  85.  
  86. $komunikat_1
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93. <TABLE cellSpacing=0 cellPadding=0  
  94.                               width="100%">
  95.                                 <TBODY>
  96. <tr ><td colspan=7>
  97.                               <DIV align=justify><B><big>Zamówienie nr  $id_zamowienia </big></B><br> Data zlożenia: $data_zamowienia
  98.                               </td></tr>
  99.                             <TR bgcolor=#EAEAEA>
  100.                                 <TD class="first_row_left_td"><b>Produkt</b></TD>
  101.                                 <TD class="first_row_all" width=50><b>&nbsp;Cena<br>&nbsp;jednostkowa&nbsp;</b></TD>
  102.                                 <TD class="first_row_all" width=50><center><b>Rabat</b><br>(%)</center></TD>
  103.                                 <TD class="first_row_all" width=40><center><b>Ilość</b></center></TD>
  104.                                 <TD class="first_row_all" width=100><center><b>Cena Netto</b></center></TD>
  105.                                 <TD class="first_row_all" width=40><center><b>VAT</b><br>(%)</center></TD>
  106.                                 <TD class="first_row_all"><center><b>Cena Brutto</b></center></TD></TR>";
  107.                                 
  108.  
  109.  
  110.  
  111. $arr1 = explode('//', $dane_zamowienia);
  112. foreach($arr1 as $komorka_arr1) {
  113.    $arr2 = explode('|', $komorka_arr1);
  114.  $tresc.="
  115.  
  116. <TR >
  117.                                 <TD class="last_row_left_td" >$arr2[1] "; if($arr2[7]!=''){  $tresc.="(atrybut: $arr2[7]) "; } $tresc.="</TD>
  118.                                 <TD  class="last_row_right_td" >&nbsp;";
  119.                                 
  120.                                 
  121.  
  122. if($arr2[5]!=''){$cena_netto_ob=$arr2[5];
  123. $cena_netto_ob = str_replace(",", ".", $cena_netto_ob);
  124. $cena_netto_ob = sprintf("%.2f", $cena_netto_ob);}
  125. else{$cena_netto_ob= $arr2[2];
  126. $cena_netto_ob = str_replace(",", ".", $cena_netto_ob);
  127. $cena_netto_ob = sprintf("%.2f", $cena_netto_ob);}
  128.  
  129.  
  130.                                  $tresc.="$cena_netto_ob</TD>
  131.                                 <TD class="last_row_right_td"><center>&nbsp; $arr2[6] &nbsp;</center></TD>
  132.                                 <TD class="last_row_right_td"><center>&nbsp; $arr2[4] &nbsp;</center></TD>
  133.                                 <TD class="last_row_right_td">";
  134. $cena_netto_rab=(($cena_netto_ob -($cena_netto_ob *($arr2[6]/100)))*$arr2[4]);
  135. $cena_netto_rab = str_replace(",", ".", $cena_netto_rab);
  136. $cena_netto_rab = sprintf("%.2f", $cena_netto_rab);
  137. $cena_netto_rab_suma+=$cena_netto_rab;
  138.                                 $tresc.="<center>$cena_netto_rab</center></TD>
  139.                                 <TD class="last_row_right_td" ><center>&nbsp; $arr2[3]&nbsp; </center></TD>
  140.                                 <TD  class="last_row_right_td">";
  141. $cena_brutto_ob = ($cena_netto_rab *($arr2[3]/100)+ $cena_netto_rab);
  142. $cena_brutto_ob = str_replace(",", ".", $cena_brutto_ob);
  143. $cena_brutto_ob = sprintf("%.2f", $cena_brutto_ob);
  144.  $tresc.="<center>$cena_brutto_ob</center>
  145.                                 </TD></TR>
  146.  
  147.    ";
  148. $cena_brutto_ob_suma+=$cena_brutto_ob;
  149. }
  150.  
  151. $cena_netto_rab_suma = str_replace(",", ".", $cena_netto_rab_suma);
  152. $cena_netto_rab_suma = sprintf("%.2f", $cena_netto_rab_suma);
  153. $cena_brutto_ob_suma = str_replace(",", ".", $cena_brutto_ob_suma);
  154. $cena_brutto_ob_suma = sprintf("%.2f", $cena_brutto_ob_suma);
  155.  
  156.  
  157.  $tresc.="<TR >
  158.                                <TD  colspan=3 align=right class="last_right" >&nbsp; </TD>
  159.                                 <TD class="last_row_all"  align=right><b>Suma: </b></TD>
  160.                                 <TD class="last_row_right_td" ><center><b><center>$cena_netto_rab_suma $waluta_zamowienia </center></b></center></TD>
  161.                                 <TD class="last_row_right_td" width=40>&nbsp;</TD>
  162.                                 <TD class="last_row_right_td" width=100><center><b>$cena_brutto_ob_suma $waluta_zamowienia </b></center></TD></TR>";
  163.  $tresc.="
  164. <tr ><td colspan=7>
  165.                               <DIV align=justify><B>Forma, koszt przesyłki i płatności</td></tr>
  166.                                 <TR >
  167.                                 <TD class="first_row_left_td" >Płatność:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
  168.                                 $pltnosc = explode('|', $pltnosc_zamowienia );
  169. $tresc.="$pltnosc[0] &nbsp;</TD>
  170.                                 <TD  class="first_row_all" colspan=2>$pltnosc[1] &nbsp;</td>
  171.                                </TR>";
  172.                            $tresc.="
  173.                                 <TR >
  174.                                 <TD class="last_row_left_td" >Przesyłki:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
  175.                                 $przesylka = explode('|', $wysylka_zamowienia );
  176. $tresc.="$przesylka[0] 
  177.                                 &nbsp;</TD>
  178.                                 <TD class="last_row_right_td" colspan=2>$przesylka[1] &nbsp;</td>
  179.                                </TR>
  180. <TR  >";
  181. $sumawys=($pltnosc[1]+$przesylka[1]);
  182. $sumawys = str_replace(",", ".", $sumawys);
  183. $sumawys = sprintf("%.2f", $sumawys);
  184. $tresc.="
  185.                                 <TD class="last_row_left_td" ><b>Suma:</b></TD>
  186.                                 <TD class="last_row_right_td" colspan=2><b>$sumawys $waluta_zamowienia </b></td>
  187.                                </TR>
  188.                                <tr><td><br></td></tr>
  189. <tr ><td colspan=7 >
  190.                               <DIV align=justify><B>Podsumowanie</td></tr>";
  191.  
  192. $suma_og_b=($cena_brutto_ob_suma + $sumawys);
  193. $suma_og_b = str_replace(",", ".", $suma_og_b);
  194. $suma_og_b = sprintf("%.2f", $suma_og_b);
  195. $tresc.="
  196.  
  197. <tr ><td colspan=7>
  198.                               <br><br><DIV align=justify><B>Uwagi kupujacego</B>
  199.                               </td></tr>
  200.                                    <TR >
  201.                                 <TD class=first_row_left_td colspan=7><center><b>$info_zamowienia</b></center>
  202.                                 </TD>
  203.                                
  204.                                </TR></center></table>
  205.  
  206.  
  207. ";
  208. $tresc.="
  209.  
  210. Wiadomość została wysłana automatycznie proszę na nią nie odpowiadać. n
  211. Jakie kolwiek pytania proszę kierowa pod adres $email_conf.
  212. </html>
  213. ";
  214. $temat="Informacja o  zamówieniu $nr_zam";
  215.  
  216. $email_do=$email;
  217.  
  218.  
  219. $adminmail = "$email_conf";
  220. if($smtp_conf=='1'){
  221. include"includes/function.php";
  222. if(smtpmail($email_do, $temat, $tresc, $naglowek)){
  223. $stan_z='ok';
  224. } 
  225. else{ 
  226. $stan_z='bad';
  227. } }
  228.       
  229. if($smtp_conf=='0'){
  230.  mail($email_do, $temat, $tresc, $naglowek);
  231. $stan_z='ok';}
  232.  
  233. ?>


plik function.php to:
  1. <?php
  2.  
  3. function smtpmail($mail_to, $subject, $message) 
  4. { 
  5. GLOBAL $smtp_host, $smtp_username, $smtp_password, $email;
  6.  
  7.  
  8. $message = preg_replace("/(?<!r)n/si", "rn", $message); 
  9.  
  10. $mail_to_array = explode("%", $mail_to); 
  11.  
  12. if( !$socket = fsockopen($smtp_host, 25, $errno, $errstr, 20) ) 
  13. { 
  14. echo "Nie moge sie polaczyc z serwerem SMTP! : $errno : $errstr<BR>n"; 
  15. } 
  16. server_parse($socket, "220"); 
  17.  
  18. if( !empty($smtp_username) && !empty($smtp_password) ) 
  19. { 
  20. fputs($socket, "EHLO " . $smtp_host . "rn"); 
  21. server_parse($socket, "250"); 
  22. fputs($socket, "AUTH LOGINrn"); 
  23. server_parse($socket, "334"); 
  24. fputs($socket, base64_encode($smtp_username) . "rn"); 
  25. server_parse($socket, "334"); 
  26. fputs($socket, base64_encode($smtp_password) . "rn"); 
  27. server_parse($socket, "235"); 
  28. } 
  29. else 
  30. { 
  31. fputs($socket, "HELO " . $smtp_host . "rn"); 
  32. server_parse($socket, "250"); 
  33. } 
  34.  
  35. fputs($socket, "MAIL FROM: <" . $email . ">rn"); 
  36. server_parse($socket, "250"); 
  37.  
  38. $to_header = "To: "; 
  39. @reset( $mail_to_array ); 
  40. while( list( , $mail_to_address ) = each( $mail_to_array )) 
  41. { 
  42. $mail_to_address = trim($mail_to_address); 
  43. if ( preg_match('/[^ ]+@[^ ]+/', $mail_to_address) ) 
  44. { 
  45. fputs( $socket, "RCPT TO: <$mail_to_address>rn" ); 
  46. server_parse( $socket, "250" ); 
  47. } 
  48. $to_header .= ( ( $mail_to_address != '' ) ? ', ' : '' ) . "<$mail_to_address>";
  49. } 
  50. fputs($socket, "DATArn"); 
  51. server_parse($socket, "354"); 
  52. fputs($socket, "Subject: $subjectrn"); 
  53. fputs($socket, "$to_headerrn"); 
  54. fputs($socket, "$headersrnrn"); 
  55. fputs($socket, "$messagern"); 
  56. fputs($socket, ".rn"); 
  57. server_parse($socket, "250"); 
  58. fputs($socket, "QUITrn"); 
  59. fclose($socket); 
  60.  
  61. return TRUE; 
  62. } 
  63. function server_parse($socket, $response) 
  64. { 
  65. while ( substr($server_response,3,1) != ' ' ) 
  66. { 
  67. if( !( $server_response = fgets($socket, 256) ) ) 
  68. { 
  69. die("Couldn't get mail server response codes"); 
  70. } 
  71. } 
  72.  
  73. if( !( substr($server_response, 0, 3) == $response ) ) 
  74. { 
  75. die("Wystąpił problem z wysłaniem meila. Odpowiedź serwer: $server_response");
  76. } 
  77. } 
  78. ?>


i jak wysyłam to meil dochodzi ale widoczny jest kod html a nie jego wynik wykonania! Pomocy!
nospor
Najwidoczniej wysylasz maila jako tekst a nie jako html. Musisz mieć taki nagłówek:
Content-Type: text/html; charset="iso-8859-2"

U Ciebie za to jest odpowiedzialna zmienna $format.
Daj se echo $format; i zobacz czy oby napewno jest tam: text/html;
pyrek
już ustawiłem z palca nagłówek
  1. <?php
  2. $naglowek = "From: $email_confnReply-To:$email_adminarn";
  3. $naglowek .= "MIME-Version: 1.0rn";
  4. $naglowek .= "Content-Type: text/html; charset="iso-8859-2"";
  5. $naglowek .= "X-Priority: 3rn";
  6. $naglowek .= "X-MSMail-Priority: Normalrn";
  7. $naglowek .= "X-Mailer: Microsoft Outlook Express 6.00.2900.2180rn";
  8. $naglowek .= "X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180rn";
  9. ?>


i dalej tak samo! czy ma może na to wpływ wysyłanie meila przez uwierzytelnianie smtp??
nospor
masz coś takiego:
smtpmail($email_do, $temat, $tresc, $naglowek)

sęk w tym, że funkcja smtpmail() w swojej deklaracji przyjmuje tylko 3 parametry, do których nie należy $naglowek (co prowadzi do tego, że nagłowek który deklarujesz wogóle nie jest wysyłany z listem). Wieć na 99,999999% to jest powodem Twoich niepowodzeń biggrin.gif . Nie daje 100%, bo może ty masz inną funkcę u siebie, a inna nam pokazałeś biggrin.gif
pyrek
mam dokładnie to copokazałem czyli da się to jakoś zmienić poprawić?questionmark.gif co robić??
nospor
proponuję ci zmienić definicję funkcję o dodatkowy parametr $headers. Może zadziała biggrin.gif . Dodać akurat ten parametr, gdyż jest on wykorzystywany jako nagłówki a nigdzie w funkcji nie ma jego definicji, więc może to właśnie on jest brakującym ogniwem w tej ewolucji laugh.gif
  1. <?php
  2.  
  3. function smtpmail($mail_to, $subject, $message,$headers) 
  4. {
  5. //......
  6. }
  7.  
  8. ?>
Cała reszta pozostaje bez zmian, włącznie z wywołaniem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.