Autor Zpráva
Richo
Profil
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
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>";
už je opravený.
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
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
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
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: