Autor | Zpráva | ||
---|---|---|---|
Richo Profil |
#1 · Zasláno: 26. 3. 2014, 19:52:40
Dobrý den,
mám na stránkách objednávkový formulář odesílaný na mail. Najednou mi začly chodit chybové zprávy a bylo mi sděleno, že mám špatně zadanou odchozí adresu v posílacím PHP souboru. Správně mělo být: $where_mail="xxx <xxx@seznam.cz>"; .
Jenže ještě potřebuju ten formát (alias, mezera a vlastní adresa v lomených závorkách) pro kupujícího, který si kopii nechá poslat na svoji adresu. Poradíte jak to dostat do toho $_POST['from']? Dík. if ($_POST['t_copy']=="1") $where_mail.=" ".$_POST['from']; |
||
TomasJ Profil |
#2 · Zasláno: 26. 3. 2014, 19:56:41
Richo:
$head = "From: xxx <xxx@seznam.cz>"; mail($to, $subject, $message, $head); |
||
Richo Profil |
Špatně jsem to napsal. Ten řádek
$where_mail="xxx <xxx@seznam.cz>"; Tady je celý mailový skript: function CZMail( $to, $subjc, $text, $froma) { $text = StrTr($text, "\x8A\x8D\x8E\x9A\x9D\x9E", "\xA9\xAB\xAE\xB9\xBB\xBE"); // překódování do Base64 $text = Base64_Encode($text); $headers = "MIME-Version: 1.0\n". "Content-Type: text/plain; charset=\"iso-8859-2\"\n". "Content-Transfer-Encoding: base64\n"; "From: $froma\n". "Reply-To: $froma\n"; Mail($to, $subjc, $text, $headers); } $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $tord_body="$nazev\n\nVariabilní symbol: $var_symb\n\nObjednal: ".$_POST['name']."\nAdresa: ".$_POST['adr']."\nEmail: ".$_POST['from']."\nTelefon: ".$_POST['tel']."\n\n------------------------------------------\n\nŠířka: ".$_POST['delka']."mm\n\nVýška: ".$_POST['vyska']."mm\n\nPo odpočtu závěsů: ".trim($_POST['delka1'])."mm\n\nCena za kus: ".$_POST['cena1'].",- Kč\n\n$doprava1: ".trim($_POST['cena2'])." ,- Kč/ks\n\nObjednaných kusů: ".$_POST['ks']."ks\n\nCena celkem: ".$_POST['celkem'].",- Kč\n\n$zatepleni2\n\nVyzdívka: $vyzdivka\n\n"; $tord_body.="Poznámka: ".$_POST['commt']."; // adresa pro příjem objednávek $where_mail="xxx <xxx@seznam.cz>"; // adresa kupujícího if ($_POST['t_copy']=="1") $where_mail.=" ".$_POST['from']; CZmail($where_mail, $var_symb, $tord_body, $_POST['from']); Do nedávna fungoval bez problémů, a až o víkendu to začalo blbnout. Potřebuju do "adresy kupujícího" dostat správný formát jeho adresy kterou zadá do pole pojmenovaném "from" |
||
Chro Profil |
#4 · Zasláno: 27. 3. 2014, 00:02:26
Adresa kupujícího by měla být v rámci zadání z formuláře validována přes
http://www.php.net/manual/en/function.filter-var.php Pokud e-mailová adresa nevyhoví validaci, pak přerušit zpracování hodnot z formuláře, zobrazit formulář s původně uživatelem zadanými hodnotami k opravě. Kupující by měl zadávat surovou adresu ve formátu abc@def.gh bez zbytečných blbostí. |
||
Richo Profil |
#5 · Zasláno: 27. 3. 2014, 16:48:26
Když vyplním formulář bez mailu zákazníka (někdo nemusí mít mailovou adresu), objednávka vpořádku dorazí. Když ale vyplním adresu (správnou), nedojde ani kopie a na můj mail dorazí:
A message that you sent contained one or more recipient addresses that were incorrectly constructed: xxx <xxx@seznam.cz> yyy@seznam.cz: malformed address: yyy@seznam.cz may not follow xxx <xxx@seznam.cz> This address has been ignored. There were no other addresses in your message, and so no attempt at delivery was possible. ------ This is a copy of your message, including all the headers. ------ To: xxx <xxx@seznam.cz> yyy@seznam.cz Subject: blablabla 2703141637 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-2" Content-Transfer-Encoding: base64 Message-Id: <E1WTCNE-0002xJ-1v@hz-w2.hosting90.cz> From: 5876@hz-w2.hosting90.cz Date: Thu, 27 Mar 2014 16:37:44 +0100 U2tsb3Bu/SBva2Vubu0gc3W54WsgcyB1cGV2buxu7W0gbmEgemXvCgpWYXJpYWJpbG7tIHN5bWJvbDogMjcwMzE0MTYzNwoKT2JqZWRuYWw6IGwKQWRyZXNhOiBsCkVtYWlsOiB0b3JvbnRpa0BzZXpuYW0uY3oKVGVsZWZvbjogbAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgqp7fhrYTogMTIwMG1tCgpW/blrYTogbW0KClBvIG9kcG/odHUgeuF27HP5OiBtbQoKQ2VuYSB6YSBrdXM6IDE5OTgsLSBL6AoKTW9udOG+OiAgLC0gS+gva3MKCk9iamVkbmFu/WNoIGt1c/k6IDFrcwoKQ2VuYSBjZWxrZW06IDIwOTcsLSBL6AoKWmF0ZXBsZW7tIHNlIHD4aXByYXZ1amUKClZ5emTtdmthOiAKClBvem7hbWthOiAKCkpzZW0gc2V6buFtZW4oYSkgYSBzb3VobGFz7W0gcyBvYmNob2Ru7W1pIHBvZG3tbmthbWkgdXZlZGVu/W1pIG5hIHdlYnUgd3d3Lm9rZW5uaXN1c2FreS5jegoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpQbyBwb3R2cnplbu0gb2JqZWRu4XZreSBidWRlIG5lamTpbGUgZG8gdPjtIHT9ZG75IG9iamVkbmFu6SB6Ym++7SBvZGVzbOFubyBuYSBWYblpIGFkcmVzdS4KClphc2zhbm8geiBlLXNob3B1IG5hIGh0dHA6Ly93d3cub2tlbm5pc3VzYWt5LmN6Lw== |
||
TomasJ Profil |
Richo:
Jednotlivé adresy se oddělují čárkou, jméno k mailu mezerou: aaa <aaa@xxx.cz>, bbb <bbb@xxx.cz>, ccc@xxx.cz atd.
|
||
Richo Profil |
To jako mám blbě v tom skriptu, jo? No jsem natvrdlý...
V té funkci "CZmail" ty jednotlivé adresy odděleny čárkou jsou, ne? A adresy byly také ve správném formátu. |
||
Davex Profil |
#8 · Zasláno: 27. 3. 2014, 19:28:03
Richo:
Je tam tolik chyb, že to snad ani nemůže jít spustit. 1. osiřelá uvozovka na 17. řádku by měla způsobit kritickou syntaktickou chybu 2. proměnná $headers inicializovaná na 15. řádku se nikdy nepoužije
3. zakódování těla zprávy pouze funkcí base64_encode() nestačí, ještě by mělo projít funkcí chunk_split()
4. řádky 11 a 12 vůbec nic nedělají, protože se tam výsledek spojení řetězců zapomene 5. další adresa příjemce se přidává na 22. řádku, a tam by měla být v uvozovkách ještě ta čárka, jak píše TomasJ |
||
Richo Profil |
#9 · Zasláno: 27. 3. 2014, 20:36:04
Jo, tak v těch stávajících uvozovkách měla být ta čárka!...
Dík. Už to jede. Uvedený skript jsem ledabyle zkrátil, proto ta osiřelá uvozovka. Na zakódování se ještě podívám a zbytek taky projdu. Je to sesmolené z více zdrojů, ale čtyři roky to bez problémů jelo... Ještě jednou dík. |
||
Časová prodleva: 10 let
|
0