Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Mail z załącznikiem...
Forum PHP.pl > Forum > PHP
*_ENIGMA
Witam.

Na podstawie różnych źródeł napisałem skrypt, który wysyła maila z załącznikiem.
Niestety nie działa on jak należy...

Otórz na pocztę na TLEN.PL załącznik dochodzi bez problemu i można go ściągnąć i przejrzeć i wszystko jest OK.

Na WP.PL załącznik dochodzi, ale plik jest pusty (ma 0 bajtów).

Na moim serwerze hostingowym jest podobnie - załącznik jest pusty i ma 0 bajtów.

Jednakże w podglądzie źródła wiadomości widać, że załącznik jest i nie jest pusty (widać ciąg znaków w base64).

Najpierw podam kod skryptu a niżej źródło wiadomości.
Proszę o pomoc bo ja już na serio nie wiem o co chodzi :-/

  1. <?php
  2.  
  3. $to = "admin@enigmacretu.com";
  4. $subject = "Temat";
  5. $message = "TRESC";
  6. $from = "admin@enigmacretu.com";
  7. $replyto = "admin@enigmacretu.com";
  8.  
  9. $contenttype = "text/plain";
  10. $charset = "ISO-8859-2";
  11.  
  12. $file = "stop.gif";
  13. $attachmenttype = "image/gif";
  14.  
  15. $boundary = md5(uniqid(time()));
  16.  
  17. $filesize = filesize($file) + 1;
  18. $filename = basename($file);
  19.  
  20. $fop = fopen("$file", "r");
  21. flock($fop, 1);
  22. $fr = fread($fop, $filesize);
  23. flock($fop, 3);
  24. fclose($fop);
  25.  
  26. $base64 = base64_encode($fr);
  27. $content = chunk_split($base64);
  28.  
  29. $header = "From: $fromrn";
  30. $header .= "Reply-to: $replytorn";
  31. $header .= "MIME-Version: 1.0rn";
  32. $header .= "Content-type: multipart/mixed; boundary="$boundary"rn";
  33. $header .= "This is a multi-part message in MIME format.rn";
  34.  
  35. $body = "--$boundaryrn";
  36. $body .= "Content-type: $contenttype; charset=$charsetrn";
  37. $body .= "Content-transfer-encoding: 8bitrnrn";
  38. $body .= "$messagernrn";
  39. $body .= "--$boundaryrn";
  40. $body .= "Content-type: $attachmenttype; name=$filenamern";
  41. $body .= "Content-transfer-encoding: base64rn";
  42. $body .= "Content-disposition: attachment; filename=$filenamern";
  43. $body .= $content . "rn";
  44. $body .= "--$boundary--";
  45.  
  46. mail($to, $subject, $body, $header);
  47.  
  48. echo("JUZ PO...");
  49.  
  50. ?>




A tutaj źródło wiadomości z Outlooka (z TLEN.PL jest OK, a z innych serwerów poc
zty plik załącznika ma 0 bajtów a mimo to źródło tych wiadomości jest takie samo 
jak niżej). I to jest dziwne, że w źródle załącznika widać, że jest coś w base64,
 a mimo to sam plik ma 0 bajtów i po otwarciu np. w notaniku jest puściutki...


Cytat
  


...nagłówki...

--d5923027b13a96cabd1d86c65002db36
Content-type: text/plain; charset=ISO-8859-2
Content-transfer-encoding: 8bit

TRESC WIADOMOSCI

--d5923027b13a96cabd1d86c65002db36
Content-type: image/gif; name=stop.gif
Content-transfer-encoding: base64
Content-disposition: attachment; filename=stop.gif
R0lGODlhyADIAPcAAAAAAAEBAQoKAA4OABISABAQABQUADY1OTk2Ozo6Ojs7PTY2Ni0tLT06QLwI
Cr0oKM8AAMsBAcgJCNAAANMAANUAANsAANkAAN4AANcCBdMMDNgGC8oMFcsXG9McHNkWGNIREuAA
AOEAAOMAAOQAAOYAAOkAAOoAAO0AAO8AAO8GAeUICPEAAPQAAPcAAPcDAPYCAvIFAPUEAPYEAfYB
BfMDBvkAAPgBAPoAAPsAAPoBAPsBAPsAAfsBAfoBAfgDAPsCAPoAA/kCA/wAAP0AAPwBAP0BAPwA
Af0AAf4AAP8AAP4AAfwCAPwAA/4AA/4CAfkEAfgABPsABPkBBfwABP4ABf0BBvwEAvUBCvkACP0A
Cf0ADOQXEOQUFOMWEuYUGeIQEc4gHdUiHdgiHMwdItMcItYZJc4vLc0rLcomJtMiI9UmKN4xK80s
NtksNNc3N803NuYoKOUtNOMsM89APvNAPtU9QuM9RtdJSdlJVdhWVsxHS+ZOTeZLR+VNUeNaWu5Q
UNhWYtdoZNp0a911dNx7dt18fN13edRoc+NjY+dpZeJ6e+N2eOF3b+Ndbv//ANyCe9qEe+KHed19
gs9/geF7ged5huJnkY+Pj4iIiJCQkJGRkZKSkpaWlq+vr6ytra6tp66vsbGxsby8vLCurt2DgtyE........
............(i tak dalej)...

--d5923027b13a96cabd1d86c65002db36--




Co z tym fantem zrobić?
Jak poprawić skrypt tak, aby załączniki dochodziły na każdą pocztę i nie okazywało się, że są puste?questionmark.gif sad.gif
Solitary
Cytat
--d5923027b13a96cabd1d86c65002db36
Content-type: image/gif; name=stop.gif
Content-transfer-encoding: base64
Content-disposition: attachment; filename=stop.gif


Czy po nagłówku nie powinno być linii odstępu ? sprawdź.
Medicom
przed poprawką

Cytat
$body = "--$boundary\r\n";
$body .= "Content-type: $contenttype; charset=$charset\r\n";
$body .= "Content-transfer-encoding: 8bit\r\n\r\n";
$body .= "$messager\n\r\n";
$body .= "--$boundary\r\n";
$body .= "Content-type: $attachmenttype; name=$filename\r\n";
$body .= "Content-transfer-encoding: base64\r\n";
$body .= "Content-disposition: attachment; filename=$filename\r\n";
$body .= $content . "\r\n";
$body .= "--$boundary--";

mail($to, $subject, $body, $header);


po poprawce

Cytat
$body = "--$boundary\n\n";
$body .= "Content-type: $contenttype; charset=$charset\n";
$body .= "Content-transfer-encoding: 8bit\n\n";
$body .= "$message\n\n";
$body .= "--$boundary\n\n";
$body .= "Content-type: $attachmenttype; name=$filename\n";
$body .= "Content-transfer-encoding: base64\n";
$body .= "Content-disposition: attachment; filename=$filename\n\n";
$body .= $content . "\n\n";
$body .= "--$boundary--";

mail($to, $subject, $body, $header);


Spróbuj tak jak ci naznaczyłem zamiast klobinacji \r\n zrób na samych \n\n
Ja mam zrobiona cała klase MAIL i w tej sekcji dołaczania mam zrobione tak jak ci pokazałem

jesli to nie zadziała to daj znać dry.gif cool.gif

Dzis uz późno ale rano przetestuje twój skrypt i jak coś to dopisze poprawke aby twój kod był spawny
Herf-Life
fajny skrypt, tylko nie ma kreatora do wysyłania (formularza)
jak coś to może zrobie taki formularz z wysyłaniem pliku i rozpoznanie typu pliku
lukir
Proponuję looknąc tutaj:
Mail z załącznikiem

To temat, który też zawiera pewne informacje dotyczące tego zagadnienia.
Może się przyda smile.gif
Medicom
Jak cos to mam gotowe klasy do wysyłania maila z załącznikiem. Wszystko działa jak należy, rozpoznaje rodzaje plików, ładuje na serwer i przygotowuje do wysyłki. Jedyny minus to to że nie mam dobrej grafiki i trzeba dopracować interfejs uzytkownika
Herf-Life
ale żeście się rzucili - już mam gotowy skrypt, tylko trzeba jakoś ładnie obłożyć ten formularz - jak ktoś pierwszy odemnie zrobi stylowy formularz to niech założy nowy temat,
Pozdro

no i jeszcze ten napis na dole :/ wyłączcie to! nie moge po sobie poprawić interpunkcji?

Edytowany przez Ziomka 2032-13-32 19:00:01 w czasie Hyper-Dobranocki
bartup
Mam ten sam problem. Również zamiast załącznika przychodzi mi mailem zakodowany tekst. Jest jakieś na to rozwiązanie??
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.