Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Załącznik w e-mailu
Polak149
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.08.2010

Ostrzeżenie: (0%)
-----


Witam.

Napisałem kawałek kodu, który wysyła mi ze strony obrazek na mój e-mail. Samo tworzenie załącznika działa poprawnie, lecz w e-mailu brakuje zawartości tekstowej, którą dodaję do wiadomości.

  1. <?php
  2. $informacja = "success_img";
  3. $flaga = TRUE;
  4. $adresat = 'podsmoczymdiamentem@gmail.com';
  5.  
  6. if (!isset($_POST['submit']))
  7. {
  8. $informacja = "error_submit";
  9. $flaga = FALSE;
  10. }
  11.  
  12.  
  13. $upload_name=$_FILES["upload"]["name"];
  14. $upload_type=$_FILES["upload"]["type"];
  15. $upload_size=$_FILES["upload"]["size"];
  16. $upload_temp=$_FILES["upload"]["tmp_name"];
  17.  
  18. if ($upload_size > 1048576)
  19. {
  20. $informacja = 'error_img_size';
  21. $flaga = FALSE;
  22. }
  23.  
  24. $pieces = explode("/", $upload_type);
  25. if ($pieces[0] != "image")
  26. {
  27. $informacja = 'error_img_type';
  28. $flaga = FALSE;
  29. }
  30.  
  31. if ($upload_temp == ''){
  32. $informacja = 'error_img_none';
  33. $flaga = FALSE;
  34. } else
  35. {
  36. $fp = fopen($upload_temp, "rb");
  37. $file = fread($fp, $upload_size);
  38.  
  39. $file = chunk_split(base64_encode($file));
  40. $num = md5(time());
  41. }
  42.  
  43. $autor = $_POST['autor'];
  44. $autorTemp = str_replace(' ', '', $autor);
  45. if ($autorTemp == '')
  46. {
  47. $informacja = 'error_name';
  48. $flaga = FALSE;
  49. }
  50.  
  51. $nadawca = $_POST['e-mail'];
  52. $nadawcaTemp = str_replace(' ', '', $nadawca);
  53. if ($nadawcaTemp == '')
  54. {
  55. $informacja = 'error_email';
  56. $flaga = FALSE;
  57. }
  58.  
  59. $komentarz = $_POST['komentarz'];
  60. $tresc = "Witaj Marcinie. Użytkownik <b>$autor</b> nadesłał obrazek do twej karczmy. Jakbyś chciał się z nim
  61.  
  62. skontaktować, tu jest jego adres:<br><a href='mailto:$nadawca'>$nadawca</a><br><br> Zdjęcie jest w
  63.  
  64. załączniku.<br><br><b>Komentarz:</b><br> $komentarz";
  65.  
  66. $subject = "$autor nadesłał zdjęcie.";
  67.  
  68. $headers = "From: Pod Smoczym Diamentem<podsmoczymdiamentem@gmail.com>\r\n";
  69. $headers .= "MIME-Version: 1.0\r\n";
  70. $headers .= "Content-Type: multipart/mixed; ";
  71. $headers .= "boundary=".$num."\r\n";
  72. $headers .= "--$num\r\n";
  73.  
  74. $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
  75. $headers .= "Content-Transfer-Encoding: 8bit\r\n";
  76. $headers .= $tresc."\n";
  77. $headers .= "--".$num."\n";
  78.  
  79.  
  80. $headers .= "Content-Type:".$upload_type." ";
  81. $headers .= "name=\"".$upload_name."\"r\n";
  82. $headers .= "Content-Transfer-Encoding: base64\r\n";
  83. $headers .= "Content-Disposition: attachment; ";
  84. $headers .= "filename=\"".$upload_name."\"\r\n\n";
  85. $headers .= "".$file."\r\n";
  86. $headers .= "--".$num."--";
  87.  
  88. $subject = "=?UTF-8?B?".base64_encode($subject)."?=";
  89.  
  90.  
  91. if ($flaga == TRUE)
  92. {
  93. $mail_sent = @mail( $adresat, $subject, $tresc, $headers);
  94. if($mail_sent == FALSE)
  95. {
  96. $informacja = "error_send";
  97. }
  98. }
  99. if ($upload_temp != '')
  100. {
  101. fclose($fp);
  102. }
  103.  
  104. $url = 'location:http://podsmoczymdiamentem.blogspot.com/2013/08/przeslij-grafike.html?info=';
  105. $url .= $informacja;
  106. header($url);
  107. ?>


Musi tu być gdzieś jakiś błąd. Normalnie nie pracuję na PHP i ciężko mi znaleźć co jest nie tak. Czy ktoś byłby w stanie powiedzieć mi, czemu $tresc nie jest widoczna w samej wiadomości e-mail? Dostaję jedynie sam załącznik.

Pozdrawiam
Go to the top of the page
+Quote Post
timon27
post
Post #2





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Męczysz się z hedersami i jak widać powoduje to błędy.
Zaincluduj phpmailer i nie będziesz miał żadnych kłopotów.
Chcesz dodać załącznik? - dodajesz po nazwie
Chcesz zmienić kodowanie na base64 - jedna linijka
Chcesz wysyłać ze swojej skrzynki? - jedna linijka
itd.
Go to the top of the page
+Quote Post
Polak149
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.08.2010

Ostrzeżenie: (0%)
-----


W efekcie końcowym pewnie będę musiał tak zrobić. Ale póki co z samej ciekawości chciałbym wiedzieć co jest nie tak. Lubię gromadzić doświadczenia.
Go to the top of the page
+Quote Post
Turson
post
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Wyłącz wygłuszanie błędów (@) przy wysyłaniu wiadomości to może się dowiesz
Go to the top of the page
+Quote Post
Polak149
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.08.2010

Ostrzeżenie: (0%)
-----


No niestety wywaliłem tłumienie, ale cały kod przy wywołaniu parsuje bez nawet zająknięcia. Jest taka możliwość, że funkcja mail po prostu nie umie poskładać maila z treścią i załącznikiem równocześnie?
Go to the top of the page
+Quote Post
Turson
post
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Wywalaj po kolei nagłówki i załącznik i na bieżąco sprawdzasz rezultat a dojdziesz do fragmentu, który powoduje problem
Go to the top of the page
+Quote Post
com
post
Post #7





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


var_dump() i poznasz odp (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Polak149
post
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 30.08.2010

Ostrzeżenie: (0%)
-----


No i udało się. Po długich kombinacjach znalazłem dobre headersy tak, że wysyła mi i załącznik, i tekst (nawet z html).

  1. $headers = "From: Pod Smoczym Diamentem<podsmoczymdiamentem@gmail.com>\r\n";
  2. $headers .= "MIME-Version: 1.0\r\n";
  3. $headers .= "Content-Type: multipart/mixed; ";
  4. $headers .= "boundary=".$num."\r\n";
  5. $headers .= "--$num\r\n";
  6.  
  7. $headers .= "Content-Type:".$upload_type." ";
  8. $headers .= "name=\"".$upload_name."\"r\n";
  9. $headers .= "Content-Transfer-Encoding: base64\r\n";
  10. $headers .= "Content-Disposition: attachment; ";
  11. $headers .= "filename=\"".$upload_name."\"\r\n\n";
  12. $headers .= "".$file."\r\n";
  13. $headers .= "--".$num."\n";
  14.  
  15. $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
  16. $headers .= "Content-Transfer-Encoding: 8bit\r\n";


Dzięki serdeczne wszystkim za pomoc ^^.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 02:31