Autor Zpráva
gardener
Profil
Zdravím kvůli komplikacím na hostingu s odesíláním mailů jsem se rozhodnul využít služeb PHP maileru.
Mail se sice odešle ale jelikož předávám pomocí formuláře uživatelův mail, jméno a zprávu tak ty se z nějakého důvodu v příchozím mailu neobjeví..napadlo mne že mám špatně zapsané proměnné v uvozovkách ale to se mi zatím nepotvrdilo..

Pro úplnost přidávám náhled:
<?php

$to = "mujmail@gmail.com";

$name = $_POST['jmeno']; 
$e_mail = $_POST['mail'];
$zprava = $_POST['zprava'];

  require "../../../phpmailer/class.phpmailer.php";
  $mail = new PHPMailer();
  $mail->IsSMTP();  // k odeslání e-mailu použijeme SMTP server
  $mail->Host = "mail.kapusta.cz";  // zadáme adresu SMTP serveru
  $mail->SMTPAuth = true;               // nastavíme true v případě, že server vyžaduje SMTP autentizaci
  $mail->Username = "neco@neco.cz";   // uživatelské jméno pro SMTP autentizaci
  $mail->Password = "heslo";            // heslo pro SMTP autentizaci
  $mail->From = $e_mail;   // adresa odesílatele skriptu
  $mail->FromName = $name; // jméno odesílatele skriptu (zobrazí se vedle adresy odesílatele)

  $mail->AddAddress($to);  // přidáme příjemce


  $mail->Subject = "Zpráva z otevřené náruče";    // nastavíme předmět e-mailu
  $mail->Body = $zprava;  // nastavíme tělo e-mailu
  $mail->WordWrap = 50;   // je vhodné taky nastavit zalomení (po 50 znacích)
  $mail->CharSet = "utf-8";   // nastavíme kódování, ve kterém odesíláme e-mail

  if(!$mail->Send()) {  // odešleme e-mail
     echo 'Došlo k chybě při odeslání e-mailu.';
     echo 'Chybová hláška: ' . $mail->ErrorInfo;
  }
  else
  {
     echo 'Děkuji ji za Vaši zprávu, hned jak to bude možné vám na uvedený kontakt odpovím..';
  }
?>


Děkuji za jakoukolliv radu..
bukaj
Profil
gardener
A kde je formulář? V jiném skriptu? Míří formulář správně na tento skript (je správně nastaven atribut action tagu form)? Je formulář odesílán metodou POST (je v tagu form nastavenou method="post")? Co vypíše var_dump($_POST);?
gardener
Profil
Ano v jiném skpriptu..stejně tak je i odesílaný metodou post, var_dump($_POST); bihužel nevím k čemu slouží..
Samotný form vypadá nějak takto:

<!--/*Konec kontroly vyplněných polí ve formuláři*/-->

<form action="include/scripts/form_kontakt_js_overeni_poli/odmailuj.php" onsubmit="window.open('include/scripts/form_kontakt_js_overeni_poli/od mailuj.php','_blank','width=300,height=500,resizable,scrollbars,top=0, left=0'); return false" name="form" method="post" onSubmit="return Kontrola(this);">
	<label for="textinput">Vaše jméno:</label><br />
	<input name="jmeno" type="text" class="textinput" size="20" maxlength="50" />
	<br />
	<label for="textinput">Váš e-mail:</label><br />
	<input name="mail" type="text" class="textinput"  size="20" maxlength="50" />
	<br />
	<label for="textareainput">Vaše zpráva:</label><br />
	<textarea name="zprava" cols="20" rows="10" style="width: 150px;" >Zde napište Váš dotaz,hned jak to bude možné Vám odpovím..</textarea>
	<br />
	<input type="submit" value="Odeslat" class="buttonSubmit" />
</form>
bukaj
Profil
gardener
var_dump($_POST); bihužel nevím k čemu slouží..
var_dump() vypíše obsah proměnné i s jejím typem (pokud se jedná o pole, tak i rekurzivně včetně klíčů).

Pokud ve zpracovacím skriptu zavoláš var_dump($_POST);, ukáže se, co se v POSTu (a jestli vůbec něco), skrývá.

Samotný form vypadá nějak takto: ...
Vůbec se mi tam nezdají ty Javascriptové orgie, hlavně kolem události onsubmit. Zaprvé nevím, pokud je těchto událostí u elementu dáno víc, jestli se zřetězí, ani jak, či co se vlastně stane. Ale zdá se, že minimálně to první (volání window.open()) uspělo. A jelikož je za tím return false;, formulář se neodešle, pouze se otevře to nové okno. Jestli čtu dobře, tak to nově otevírané okno je stejné adresy jako action toho formu. Takže problém je v tom, že formulář se vůbec neodešle, ale Javascript otevře nové okno, ve kterém bude ta samá stránka, ale získaná metodou GET, a proto v $_POST nejsou žádná data.

Jestli se ti při stisknutí odesílacího tlačítka otevřelo nové okno (možná, že tvůj prohlížeč ho hodil do nového panelu, nevím), problém bude v tomhle. Řešením je:
1) Použít AJAX. (Viz Google.)
2) A jednodušší -- nechat formulář normálně odeslat, vykašlat se na Javascript
peta
Profil
viz bukaj
Polozil ti jasnou a konkretni otazku:
"Co vypíše var_dump($_POST);?"
co jsi mu na ni odpovedel misto toho, aby jsi takovy radek do PHP vlozil?
"bihužel nevím k čemu slouží.. "
Po teto vete by se uz s tebou take nemusel nikdo bavit. Boje, kde se to tu vzalo na foru :)
Bylo by mozna fajn udelat soubor_php.txt a dat odkaz zrovna na cely kod misto vypisovani po castech.

Vzhledem k tomu, ze jsi pridal aspon ten formular...

window.open('include/scripts/form_kontakt_js_overeni_poli/od mailuj.php',... return false;
-
return !window.open(this.href,...

<label for="textareainput">Vaše zpráva:</label>
<textarea name="zprava"
-
<label for="ID123">Vaše zpráva:</label>
<textarea name="zprava" id="ID123"


onsubmit="window.open
onSubmit="return Kontrola(this);"
nevim, co tim sledujes, zrejme se pouzije druhe onsubmit?
Co se podivat do www prohlizece na JS konzolu?
Co hlasi validator na vysledne html strance?

Co se tyce nazvy poli pro POST, ty vypadaji ok. Zkus udelat jednoduchy formular, jestli se mail posle. A do nej pak doplnuj

<form action="odmailuj.php" method="post">(mozna i encoding)
<input name="jmeno" type="text" />
<input name="mail" type="text" />
<textarea name="zprava" cols="20" rows="10" >Zde napište Váš dotaz,hned jak to bude možné Vám odpovím..</textarea>
<input type="submit" />
</form>
davef6
Profil
děkuju moc:)

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: