[ Rembrant @ 24.10.2007. 20:52 ] @
Krenuo sam da pravim skriptu za newsletter znaci nista posebno cisto da se posalju obavjestenja kada kako i sta... E sada pretstavlja mi problem attachment za koji sam u jednom trenutku mislio da sam rijesio ali je samo otislo dalje u problem! Znaci prelistao sam dobar dio ovog foruma kao i wikipedie php.neta raznih tutorijala i dosao do zida ocigledno! E sada ja cu ostaviti kod
Code:
          $headers = "From: $from\n"
       ."Reply-To: $from\n";
    $headers  .= "MIME-Version: 1.0\n";
    $headers .= "Content-Type: multipart/mixed; boundary=\"MIME_BOUNDRY\"\n";
    $message = "--MIME_BOUNDRY\n";
    $message .= "Content-type: text/html; charset=utf-8\n";
    $message .= "\n";
    $message .= $body;
    $message .= "\n";
    $filename =  "C:\apache2triad\htdocs\dcms\mail\AutorizacijaSMTP.mht";
    $name =  "AutorizacijaSMTP.mht";
    
      
#    $file_url = 'hxxp://xxx.xxx.xxx.xxx/dcms/mail/' . $filename;
    $fp = fopen($filename,"rb");
    $attachment = fread($fp, filesize($filename));
    $attachment = chunk_split(base64_encode($filename)); 
        
    $message .= "--MIME_BOUNDRY\n";
    $message .= "Content-Type: message/rfc822; name=\"$name\"\n";
    $message .= "Content-disposition: attachment\n";
    $message .= "Content-Transfer-Encoding: base64\n";
    $message .= "\n";
    $message .= "$attachment\n";
    $message .= "\n";
//message ends
    $message .= "--MIME_BOUNDRY--\n";

        mail($row[0],$subject,$message,$headers);


E sada znaci on posalje mailove kao i zakaci attachment ali mi ispise sledece u mailu
Code:
(no subject)     0 k      [ message/rfc822 ]     Unknown sender


Ako moze mala pomoc vise bi nego dobro dosla! Hvala unaprijed.
[ stsung @ 25.10.2007. 00:21 ] @
Pozd.

Ne pridrzhavash se RFC-a. Prvo, hederi po RFC treba da su odvojeni sa \r\n a ne sa \n. Drugo, hederi i telo poruke treba da su odvojeni sa dva \r\n a ne samo sa jednim, i to je upravo uzrok problema koji ti se javlja. Necu ti ukazivati na druge propuste u odnosu na RFC, no ne bi bilo loshe da ih malo prochitash.

Svako dobro.
[ 1r0nM4n @ 25.10.2007. 09:56 ] @
Citat:
Prvo, hederi po RFC treba da su odvojeni sa \r\n a ne sa \n.

To stoji, ali neki mail serveri, koji šalju taj mail, ispišu 2 nova reda umesto jednog. Tako da, sve zavisi kako je podešen mail server preko koga se šalje.

p0z
[ Nemanja Avramović @ 25.10.2007. 10:16 ] @
$attachment = chunk_split(base64_encode($filename));

Zar ne treba:

$attachment = chunk_split(base64_encode($attachment));

?
[ stsung @ 25.10.2007. 16:04 ] @
Pozd.

Citat:
1r0nM4n: To stoji, ali neki mail serveri, koji šalju taj mail, ispišu 2 nova reda umesto jednog. Tako da, sve zavisi kako je podešen mail server preko koga se šalje.


Hocesh da kazhesh da neki serveri automatski ispravljaju ovakve greshke? Na stranu sada sa time, verujem da takvi zaista postoje - zbog chega bi zheleo da pravish kod koji generishe email poruku koja se kosi sa standardima i onda radi samo na nekim mail serverima ? Zar je teshko stavljati po standardu \r\n umesto \n ?

No da ponovim, problem ovde je shto hederi i telo email poruke nisu odvojeni sa dva separatora, znachi \r\n\r\n. Email klijenti ne znaju zbog toga gde se hederi zavrshavaju i gde pochinje telo poruke pa brljave.

@Nemanja Avramović

Nisam ni primetio da je imao tu greshku :) Ajde da uchinimo to josh lepshe (tj. bez suvishnog koda) :)

$attachment = chunk_split(base64_encode(file_get_contents($filename)));

Svako dobro.
[ 1r0nM4n @ 25.10.2007. 18:36 ] @
Citat:
Hocesh da kazhesh da neki serveri automatski ispravljaju ovakve greshke?

Ne, nego da neki serveri prave "greške". Susreo sam se sa tim na Postfix-u (www.postfix.org). Ako napišeš u kodu "\r\n" on to registruje kao da si napisao 2 nova reda a ne jedan po praviliu. Sve je to invidualno i zavisi kako je podešen mail server.

p0z
[ stsung @ 25.10.2007. 19:26 ] @
Pozd.

Da, zaista postoji mogucnost da neke implementacije rade pogreshno, ali to nije zbog toga shto se ne pridrzhavaju RFC standarda, vec zato shto u zavisnosti od sistema zhele da urade konverziju kako bi postigli upravo taj standard. Znachi postoji mogucnost da Postfix kako je pod linuxom ochekuje na ulazu normalan line break za *nix sisteme "LF" koji on potom pretvara u "CR LF" da bi isposhtovao RFC, i onda ako mu ti poshaljesh "CR LF" on od toga napravi "CR CR LF" i naravno napravi problem. No moram reci da nisam skoro naleteo na ovakvo ponashanje nekog sistema.

Svako dobro.
[ Rembrant @ 25.10.2007. 21:07 ] @
ok, hvala svima trenutno radim na preradi ovog dijela koda (iako skripta jeli nije mnogo veca od ovoga) Ali javicu vam krajnji rezultat! Nadam se da cete malo imati strpljenja sa mnom jer ipak sam ja apsolutni pocetnik u php programiranju i samo bih zamolio stsung da me uputu na textove koje on smatra vrednim citanja sto se tice RFC-a!
[ agvozden @ 25.10.2007. 21:25 ] @
Imao sam iskustva sa mejl serverom koji nije dobro radio sa \r\n, a samo \n je bilo u redu. Server je bio na ubuntu linux-u

Od tada redovno koristim promenljivu umesto ovog stringa - npr. $this->eol = "\n\r";
Generalno, kada god se neki tekst ponavlja dobro je izmestiti ga u promenljivu, konstantu ili funkciju.