Autor | Zpráva | ||
---|---|---|---|
Michal Sebek Profil |
#1 · Zasláno: 21. 2. 2014, 14:20:28
Na mých stránkách mi nefunguje kontaktní formulář. Když dám odeslat tak to napíše: SMTP Error: Could not authenticate.
kontakt.php: <?php $jmeno=trim(htmlspecialchars(strip_tags($_POST['jmeno']))); $telefon=trim(htmlspecialchars(strip_tags($_POST['telefon']))); $email=trim(htmlspecialchars(strip_tags($_POST['email']))); $predmet=trim(htmlspecialchars(strip_tags($_POST['predmet']))); $zprava=trim(htmlspecialchars(strip_tags($_POST['zprava']))); if($_POST['poslat']=="ano") { $chyby=array(); if(empty($jmeno)) { $chyby[]='Vyplňte své jméno.'; }; // $jmeno je prázdné if(is_numeric($jmeno)) { $chyby[]='Jméno nemůže mít číselnou hodnotu.'; }; // jméno nemůže být číslo if(strlen($jmeno)<=2) { $chyby[]='Uvedené jméno je moc krátke.'; }; // minimální délka jména je dva znaky if(empty($telefon) && empty($email)){ // pokud jsou oba údaje nevyplněny $chyby[]='Uveďte kontaktní telefon nebo emailovou adresu.'; }; if(!empty($telefon)) { // pokud je $telefon vyplněn $telefon=str_replace('+', '', $telefon); // zmažeme nečíselné znaky $telefon=str_replace('-', '', $telefon); $telefon=str_replace('/', '', $telefon); $telefon=str_replace(' ', '', $telefon); // zmažeme i mezery if(!is_numeric($telefon)) { // pokud to není číslo, obsahuje nepovolené znaky $chyby[]='Telefonní kontakt obsahuje nepovolené znaky.'; } if(strlen($telefon)<9 || strlen($telefon)>15) { // délku si můžete zvolit sami podle vašeho uvážení $chyby[]='Telefonní kontakt má nesprávnou délku.'; } } if(!empty($email)){ // pokud je vyplněný $email if(!preg_match('/^[^@]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}+$/', $email)){ // emailová adresa nemá správní tvar $chyby[]='Uvedená emailová adresa nemá správní tvar.'; } } if(empty($predmet)){ $chyby[]='Uveďte předmět vaši zprávy.'; }; if(strlen($predmet)<5){ $chyby[]='Předmět zprávy je příliš krátký.'; }; if(empty($zprava)){ $chyby[]='Napište vaši zprávu.'; }; if(strlen($zprava)<20){ $chyby[]='Zpráva je příliš krátká. Zkuste ji popsat podrobněji.'; }; if($_POST['kontrola']!=$_SESSION['captcha']){ $chyby[]='Kontrolní číslo se neshoduje. Zkuste to znovu.'; }; $chyba=join('<br />', $chyby); if(!empty($chyba)){ echo '<div class="chybovaHlaska">'.$chyba.'</div>'; }; if(empty($chyba)){ // všechna jsou v pořádku $textZpravy='Odesílatel: <strong>'.$jmeno.'</strong><br /><br /> [ '.$email.' '.$telefon.' ]<br /><br /> '.$zprava; require "class.phpmailer.php"; require "class.smtp.php"; $Mail = new PHPMailer(); $Mail->CharSet = 'UTF-8'; $Mail->Mailer = "smtp"; $Mail->IsSMTP(); $Mail->Host = "smtp.googlemail.com"; $Mail->Username="prihlasovaci.jmeno.k.emailu"; $Mail->Password="heslo"; $Mail->SMTPAuth=true; $Mail->From = "prihlasovaci.jmeno.k.emailu@gmail.com"; $Mail->FromName = $jmeno; $Mail->AddAddress("prihlasovaci.jmeno.k.emailu@gmail.com"); if($k_POST['kopie']=="on") { $Mail->AddBCC($email); } $Mail->IsHTML($HTML); $Mail->Subject = $predmet; $Mail->Body = $textZpravy; $cistyText=strip_tags($textZpravy); $Mail->AltBody=$cistyText; if($Mail->Send()) { $okHlaska="Zpráva byla úspěšne odesláná."; } else { echo "Zprávu se nepodařilo odeslat. Zkuste to znovu."; } } } if($okHlaska==""){ echo '<form action="" method="post"> <label for="jmeno">Vaše jméno:</label> <input type="text" name="jmeno" id="jmeno" value="'.$jmeno.'" class="kontaktInput" /><br /> <label for="telefon">Telefon:</label> <input type="text" name="telefon" id="telefon" value="'.$telefon.'" class="kontaktInput" /><br /> <label for="email">Email:</label> <input type="text" name="email" id="email" value="'.$email.'" class="kontaktInput" /><br /> <label for="predmet">Předmět:</label> <input type="text" name="predmet" id="predmet" value="'.$predmet.'" class="kontaktInput" /><br /> <label for="zprava">Zpráva / dotaz:</label> <textarea name="zprava" id="zprava" rows="3" class="kontaktInput">'.$zprava.'</textarea><br /> <label for="kontrola">Kontrola</label><img src="captcha.php" /> <input type="text" name="kontrola" id="kontrola" class="kontaktInput" style="width:40px;"" value="" /><br /> <input type="checkbox" name="kopie" id="kopie"'; if($_POST['kopie']=="on"){ echo ' checked="checked"'; }; echo '/><label for="kopie" style="width:350px;">zaslat kopii zprávy na můj email</label><br /> <input type="submit" value="Odeslat dotaz" /> <input type="hidden" name="poslat" value="ano" /> </form>'; } else { echo $okHlaska; } ?> index.php: <?php session_start(); require "priprav-obsah.php"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><?php echo $title; ?></title> <style type="text/css" media="all">@import "css/style.css";</style> <link rel="shortcut icon" href="obrazky/favicon.ico" /> <meta name="robots" content="index,follow" /> <meta name="description" content="<?php echo $metapopis; ?>" /> <meta name="keywords" content="<?php echo $klicovaslova; ?>" /> </head> <body> <div id="obalStranky"> <div id="hlavicka"> <div id="logo"> <a href="index.php" /><img src="obrazky/logo.png" /></a> </div> <div id="nadpisy"> <h1>Moje oblovky</h1> <h2>Vše o mých oblovkách</h2> </div> </div> <div id="stred"> <div id="levySloupec"> <div id="menu"> <?php require "pripojeni.php"; $dotaz='SELECT * FROM texty WHERE publikovan="1" order by poradi asc'; $vysledek=mysql_query($dotaz); while ($zaznam=mysql_fetch_array($vysledek)) { if($zaznam['nazev']!="") { echo '<a href="index.php?page=' . $zaznam['urlnazev'] . '"><div class="menuLink">' . $zaznam['nazev'] . '</div></a>'; } } ?> </div> </div> <div id="obsah"> <h3><?php echo $nazev; ?></h3> <p><?php echo $text; ?></p> <?php if($_GET['page']=="kontakt"){ require "kontakt.php"; }; if($_GET['page']=="fotogalerie"){ require "fotogalerie.php"; }; if($_GET['page']=="kniha-navstev"){ require "kniha-navstev.php"; }; ?> </div> <div style="clear:both;"></div> </div> <div id="paticka"> © 2013 Michal Šebek </div> </div> </body> </html> |
||
Davex Profil |
#2 · Zasláno: 21. 2. 2014, 18:02:37
Nemělo by být přihlašovací jméno takto?
$Mail->Username="prihlasovaci.jmeno.k.emailu@gmail.com"; |
||
Michal Sebek Profil |
#3 · Zasláno: 21. 2. 2014, 18:11:27
Nepomohlo to. :(
|
||
Davex Profil |
Při odesílání e-mailů přes SMTP gmail.com je nutné ještě zapnout šifrování pro přenos e-mailů.
$Mail->SMTPSecure = "tls"; $Mail->Port = 587; nebo $Mail->SMTPSecure = "ssl"; $Mail->Port = 465; Pokud to nepomůže, tak si zapni $Mail->Debug = 2 a po neúspěšném odeslání vypiš podrobnou chybu.
if($Mail->Send()) { $okHlaska="Zpráva byla úspěšne odesláná."; } else { echo "Zprávu se nepodařilo odeslat. Zkuste to znovu.<br> Chyba: ", $Mail->ErrorInfo; } |
||
Michal Sebek Profil |
#5 · Zasláno: 22. 2. 2014, 15:26:00
Bohužel ani to nepomohlo :(
|
||
Davex Profil |
#6 · Zasláno: 22. 2. 2014, 15:37:36
Bez zapnutí ladícího režimu a podrobnějšího výpisu chyby z
$Mail->ErrorInfo se asi nepohneme dál.
|
||
Michal Sebek Profil |
#7 · Zasláno: 22. 2. 2014, 18:36:04
Už to funguje :) Google si myslel že se tam chce dostat nějaký útočník pod mým jménem a heslem.
|
||
Časová prodleva: 10 let
|
0