[ SmilieBG @ 25.11.2003. 20:49 ] @
Pozdrav svima!

Imam mali "izazov" pred sobom i sve ideje su dobro dosle.

Radi se o sledecem:

Server Unix/Apache;

Na serveru imam 1 html, 1 php i 1 sql fajl.

U html se unose vrednosti, php ih obradjuje, ispunjava sql fajl sa vrednostima unetim u html fajlu (forma), a zatim salje mail sa sql fajlom kao attachment.

Medjutim, mail treba da se posalje na 2 adrese (1 to: i 1 cc:). Od toga, samo to primaoc treba da dobije sql fajl, dok CC: treba da dobije samo body koji je poslat i na to:.

Uspeo sam da fajl ide na obe adrese, medjutim, u trenutnom codu oba primaoca (to: i cc:) dobijaju i attachment. Medjutim ljudi koji ispunjavaju html formular dobijaju CC (kao potvrdu), ali ne koriste sql fajl i ne bih zeleo ni da im se salje.

E, sada, razmisljao sam da napravim sledece:

Code:

<?

// code koji cita formular, pravi SQL itd...
...

// kreiranje mail headera
$headers = "MIME-Version: 1.0\r \n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\r \n";
$headers .= "From: \"TaskForce\" <$reply>\r \n";
$headers .= "Reply-To: \"$reply\" <$reply>\r \n";
$headers .= "Cc: $reply\r\n";
$headers .= "X-Priority: 3\r \n";
$headers .= "X-MSMail-Priority: High\r \n";
$headers .= "X-Mailer: Just My Server";

// slanje mail-a

if (mail($to, $subject, $message, $headers))
{
    echo "Mail je uspesno poslat";
    // ovde bi isao II mail, bez attachment!
    mail($to, $subject, $message_bez_attachment)
}
else
{
    echo "Pojavila se greska. Pokusajte ponovo";
}
?>


Iz gornjeg se vidi da bi se za vreme (uspesnog) slanja I maila, slao i drugi...

E, sad ono jedno ALI!

Body mail-a koji se kreira je poprilicno dugacak i jedini nacin koji sam nasao da ukljucim attachment jeste sledeci:
Code:

$message .= "This is a multi-part message in mime format\n\n";
$message .= "--".$bound."\n";
$message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: 8bit;\n\n";
$message .= "Optie: $optie_optie \n\r Actie: $optie_actie \n\r "
."Username: $username \n\r".preg_replace("/\r\n/i", "\n", $msg)."\n\n";
$message .= "--".$bound."\n";
$message .= "Content-Type: text/plain\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-Disposition: attachment; filename=\"$attach\"\n\n";
set_magic_quotes_runtime(0);
$attachment = fread(fopen("$fl/$attach", "rb"), filesize("$fl/$attach"));
$attachment = chunk_split(base64_encode($attachment));
$attachment = preg_replace("/\r\n/i", "\n", $attachment);
$message .= "$attachment";
$message .= "\n";
$message .= "--".$bound."--\n\n";


Ne pitajte me sta sta znaci, jer ni sam ne znam, code je "pozajmljen" ;-) Bitno je samo da $message ide za body...

E, sad, kako ja da posaljem 2 maila, sa identicnim body, a da jedan ima attachment a drugi ne? Inace, ovo gore je samo deo od $message code, koji sve ukupno ima ~500 linija coda. html naime ima nekoliko text box i 1 drop down meni (14 parametara) i za svaku kombinaciju je drugaciji message. Ne bih zeleo da moram da copy & paste 500 linija coda da bih poslao 2 maila jedan sa i jedan bez attachment...

Ajde ideje sad plz :) Prakticno, treba mi ideja ili resenje kako da ubacim attachment a da se isto NE dogadja unutar body. Da li header ima te mogucnosti na UNIX/Apache platformi?

Ko zeli/ima volje - MSN: [email protected]

Pozdrav i hvala unapred.
Sale

[Ovu poruku je menjao -zombie- dana 26.11.2003. u 02:03 GMT]
[ Goran Rakić @ 25.11.2003. 21:03 ] @
Prepravi drugi deo:

Code:

...
$message1='';
$message1 .= "Content-Type: text/plain\n";
$message1 .= "Content-Transfer-Encoding: base64\n";
$message1 .= "Content-Disposition: attachment; filename=\"$attach\"\n\n";
set_magic_quotes_runtime(0);
$attachment = fread(fopen("$fl/$attach", "rb"), filesize("$fl/$attach"));
$attachment = chunk_split(base64_encode($attachment));
$attachment = preg_replace("/\r\n/i", "\n", $attachment);
$message1 .= "$attachment";
$message1 .= "\n";
$message1 .= "--".$bound."--\n";


Pazi na samo jedno \n u zadnjem redu. Onda napravi slicno kao sto si i rekao:

Code:

if (mail($to, $subject, $message.$message1."\n", $headers))
{
    echo "Mail je uspesno poslat";
    // ovde bi isao II mail, bez attachment!
    mail($to, $subject, $message."\n")
}
else
{
    echo "Pojavila se greska. Pokusajte ponovo";
}

[ SmilieBG @ 25.11.2003. 21:55 ] @
Gorane,

Mislis da samo deo gde ide attachemt pretvorim u message 1, a ostalo message2?

I, koja je tacno funkcija /n posle body u mail()?

Hvala!

Sad gledam sajt koje je postiran... :)
[ -zombie- @ 26.11.2003. 21:43 ] @
da, moraš da pošalješ dva odvojena maila. ne postoji drugi način.

a ni jedna smtp, mail ili mime klasa ne može ovaj problem da reši, pa je cela diskusija oko php-classes vs pear bila bespredmetna ovde.

slobodno je možete nastaviti u posebnoj temi, ili još bolje u drugom forumu (pošto je tema generalnija od PHPa)
[ SmilieBG @ 26.11.2003. 23:03 ] @
Vidim da ce ovde biti potrebniji ipak neki jaci zahvat od onog koji sam mislio...

Nista, nazad na tastaturu :)

Hvala svima za odgovore!

Poz,
Sale
[ Goran Rakić @ 30.11.2003. 22:44 ] @
nije mi jasno šta više hoćeš. dao sam ti ceo kod kao gotovo rešenje. Znači ono što si imao prepraviš u ovo što ja dajem i to ti je to.