» Poradna » Programy

PHP Formulář pro odeslání emailu

 |   |  Microsoft Windows 10 Chrome 48.0.2564.116

Dobrý den, učím se PHP a dělám si zkušební kontaktní formulář, ale zasekl jsem se, jelikož mi nejde odeslat mail jako takový... Formulář funguje, vyplnění, kontrola atd. Když ale kliknu na odeslat, tak mi do emailu nic nedojde. (Stránka běží na hostingu) Když mi to běží přes localhost tak mi to "vyplivne" zprávu: Warning: mail(): Failed to connect to mailserver at &quot;localhost&quot; port 25, verify your &quot;SMTP&quot; and &quot;smtp_port&quot; setting in php.ini or use ini_set() in C:\wamp\www\Student\contact.php on line 64<?php // check for hacking simple prevetive against email injections function has_header_injection($str) { return preg_match("/[\r\n]/", $str); } if (isset($_POST['contact_submit'])) { $name = trim($_POST['name']); $email = trim($_POST['email']); $msg = trim($_POST['message']); //chech for header injections in email or name if (has_header_injection($name) || has_header_injection($email)) { die(); } if (!$name || !$email || !$msg) { echo "<h4 class='error'> ALL Fields required</h4><a href='contact.php' class='button block'>Go back and trz again</a>"; exit; } //add the recipent email message $to = "recipent@example.com"; // create a subject $subject = "$name sent you a message"; //construct message $message = "Name: $name\r\n"; $message .= "Email: $email\r\n"; $message .= "Message: \r\n$msg"; // if the chechbox is checked if (isset($_POST['subscribe']) && $_POST['subscribe'] == 'Subscribe') { $message .= "\r\n\r\nPlease add $email to the mailing list.\r\n"; } $message = wordwrap($message, 72); // set mail headers into variable $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; $headers .= "From: $name <$email>\r\n"; $headers .= "X-Priority: 1\r\n"; $headers .= "X-MSMail-Priority: High\r\n\r\n"; // Send the Email mail($to, $subject, $message, $headers); } ?>Můj dotaz tedy zní, nevíte někdo, kde je tam chyba? :DDíky předem za odpovědi.

Odpovědi na otázku

 |   |  Microsoft Windows 7 Chrome 48.0.2564.116

nevidím že by jsi někde nastavoval mail server, takže to hledá mail server běžící na localhostu

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 48.0.2564.116

A ten to potřebuje i když to potom běží někde na doméně?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 43.0

A jak chceš poslat email bez mail serveru?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 48.0.2564.116

Asi moc dobře ne jak bys ho teda nastavil?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 48.0.2564.116

Na testovacie ucely ti stacia nejake fee mail servre, ktore bezia uplne v pohode na lokali..najprv si ho musis stiahnut, potom nainstalovat a nakonfigurovat. Priklady:https://www.hmailserver.com/http://www.mailenable.com/standard_edition.asphttp://www.evomailserver.com/ Pokial chces nieco narocnejsie, tak webhosting

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 45.0

Aby fungovala funkce mail(), musíš nakonfigurovat SMTP server v php.ini .

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 48.0.2564.116

Ok a jak ho tedy nakonfiguruju tak, aby fungoval na serveru té domény?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 49.0.2623.87

PHP zkousej doma na svem PC. k tomu pouziij LAMP a tam si pak v PHP ini nastavis smtp treba seznamu a pak ti to na seznam dojde, uvudus. (za predpokladu ze tvuj ISP neblokuje smtp seznamu a povoluje odesilani jenz jeho SMTP. DAle na hostingu asi PHP.ini nenastavis, ale muzes nastavit smtp hostingu,a le to uz s Aminem hostingu projednavej

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 48.0.2564.116

Ptal jsem se u poskytovatele domény a ten mi řekl, že jejich server umí funkci mail() bez nastavování parametrů. Jak je tedy možné, že to nefunguje?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 48.0.2564.116

v tom případě musíš ve From mít platného odesilatele z jejich domény...nemůžeš tam narvat jakoukoliv adresu (teda předpokládám že nemají povolený relay protože to by defacto byl spamovací server)takže to nejspíš u nich padá do koše

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 48.0.2564.116

Takže nastavit to v tom kódu někde? Mohl byste mi prosím říct jak? (Promiňte, že se takhle blbě ptám, ale jsem fakt začátečník.)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Firefox 45.0

Na kód jsem se nedíval, každopádně nefiltruje to mail příjemce? Co používáš za hosting? Já když použil php5.cz a poslal to na seznam mail, tak mi mail nepřišel, ale když jsem to poslal na google mail, tak přišel. Zkus ten mail poslat na google mail a pokud nepřijde teprve pak to řešit.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 48.0.2564.116

Tohle mám na Endora.cz, nevím jak myslíš filtrovat email příjemce? Ten formulář by měl sloužit na to, aby někdo mohl kontaktovat mě na můj email na Gmailu. Zkoušel jsem měnit příjemce (tedy mě) na adresy jak na seznamu, tak na googlu, žádná změna :/

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Firefox 45.0

No myslím to tak, že na serveru příjemce může být tvůj smtp na blacklistu, což se v případě free serverů může klidně pravděpodobně stát.Počky, zkusím to na php5.cz jestli mi to tvé funguje poslat na gmail.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 48.0.2564.116

Ael ten příjemce jsem já :D To že bych byl blacklistu? :D

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Firefox 45.0

Příjemce jsi ty, ale smtp server tvého poskytovatele by mohl být na blacklistu.Zkusil jsem tvůj okleštěný php kod:$name = "krakatoa";$email = "krakatoa@zive.cz";$msg = "ahoj svete";$to = "***tady je uvedeny mail***@gmail.com";$subject = "$name sent you a message";$message = "Name: $name\r\n";$message .= "Email: $email\r\n";$message .= "Message: \r\n$msg";$message = wordwrap($message, 72);$headers = "MIME-Version: 1.0\r\n";$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";$headers .= "From: $name <$email>\r\n";$headers .= "X-Priority: 1\r\n";$headers .= "X-MSMail-Priority: High\r\n\r\n";mail($to, $subject, $message, $headers);... a normálně to z php5.cz na gmail funguje.Zkus vyzkoušet toto, jestli ti to neodešle, tak je problém v tom blacklistu smtp na edoře.Jo a ten kod bych rozhodně upravil, minimálně změnil na utf-8 klidně ti ukážu jak.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Firefox 45.0

Todle to má trošku jinou funkcionalitu, každopádně si z toho můžeš okopčit to utf-8, protože je to lepší jak to máš ty:<!doctype html><html><head><meta charset="utf-8"><title>mail</title></head><body><form action="" method="post"><input type="text" name="mail" value="@"><br><input type="text" name="predmet" value="předmět"><br><textarea name="zprava" cols="40" rows="3">Text</textarea><br><input type="submit" name="submit" value="Odeslat"></form></body></html><?function cs_mail($prijemce, $odesilatel, $predmet, $zprava){ $predmet = "=?utf-8?B?".base64_encode($predmet)."?="; $head = "From: =?UTF-8?B?".$odesilatel.PHP_EOL; $head .= "MIME-Version: 1.0".PHP_EOL; $head .= "Content-Type: text/plain; charset=\"utf-8\"".PHP_EOL; $head .= "Content-Transfer-Encoding: base64".PHP_EOL; $zprava = wordwrap(base64_encode($zprava), 78, PHP_EOL, true); return mail($prijemce, $predmet, $zprava, $head);}if ($_POST["submit"]){ $prijemce = $_POST["mail"]; $odesilatel = base64_encode("Moje Jméno")."?=<krakatoa@zive.cz>"; $predmet = $_POST["predmet"]; $zprava = $_POST["zprava"]; cs_mail($prijemce, $odesilatel, $predmet, $zprava);}

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Firefox 45.0

Info máš třeba i tu:http://diskuse.jakpsatweb.cz/

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Firefox 45.0

poskytovatele webhostinku jsem jako myslel

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 48.0.2564.116

Tak takhle vypadal konečný soubor a stejně to nešlo :(<?php define("TITLE", "Contact us"); include('includes/header.php'); ?><div id="contact"> <hr> <h1>Get in touch with us</h1> <?php // check for hacking simple prevetive against email injections function has_header_injection($str) { return preg_match("/[\r\n]/", $str); } if (isset($_POST['contact_submit'])) { $name = "krakatoa";$email = "krakatoa@zive.cz";$msg = "ahoj svete";$to = "***tady je uvedeny mail***@gmail.com";$subject = "$name sent you a message";$message = "Name: $name\r\n";$message .= "Email: $email\r\n";$message .= "Message: \r\n$msg";$message = wordwrap($message, 72);$headers = "MIME-Version: 1.0\r\n";$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";$headers .= "From: $name <$email>\r\n";$headers .= "X-Priority: 1\r\n";$headers .= "X-MSMail-Priority: High\r\n\r\n";mail($to, $subject, $message, $headers); ?> <!-- Show succes mesg after email is set --> <h5>Thanks for contacting Franklins</h5> <p>PLease allow us 24h to reply</p> <p><a href="/final" class="button block">&laquo; Go to Home page</a></p> <?php } else { ?> <form method="post" action="" id="contact-form"> <input type="submit" class="button next" name="contact_submit" value="Send Message"> </form> <?php } ?> </div> <?php include('includes/footer.php'); ?>

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 48.0.2564.116

A nejlepší je, když to chci zkusit na tom php5.cz, tak mi to při registraci napíše tohle :DZ adresy '2a00:1028:919c:34ca:51dd:8bd7:ee2a:35f5' není povolena registrace domény

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Firefox 45.0

Tak to zkus z swebu na seznamu, je ke každému mailu tuším a teď jsem to zkoušel a odesílá mi to i z swebu tak to zkus místo php5.cz

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 48.0.2564.116

Tak jsem to zkusil na webzdarma a funguje to :D je to záhada :D i ta původní varianta funguje :D nějaký nápad, čím by to mohlo být?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Firefox 45.0

Dyť jsem ti to psal, asi je smtp endory na blacklistu. Poku tomu tak je, tak s tím nic neuděláš a na ty maily, na kterém je na blacklistu, prostě mail neodešleš. Tak zkus jestli jde odeslat mail z endory na seznam, atlas atd. třeba jej někdo nebude mít na blacklistu, případně použij jiný smtp server, například to udělej tak, že si skriptem z endory pošli informace na skript na wz a z tama teprve odešli mail.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Firefox 45.0

Nebo se prostě přihlas na nějaký mail a odešli to z nějakého mailu na nějaký mail

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 48.0.2564.116

Dobře :D díky moc za pomoc :)

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Hacking, Message, Email, Formulář, Odeslání, Subscribe, Trim, Fields, MIME, Verify, Simple


Určitě si přečtěte

Dost bylo moderních Windows 10. Pojďme je přebarvit zpět na Windows 95

Dost bylo moderních Windows 10. Pojďme je přebarvit zpět na Windows 95

** Stařičké Windows 2000 nedávno oslavily 20 let ** Někteří z vás si postěžovali, že to byly poslední hezké Windows ** Fajn, ukážeme vám, jak přebarvit Desítky o 25 let zpět

Jakub Čížek | 44

Pojďme programovat elektroniku: Co se skrývá uvnitř běžné SD karty a jak ji oživit

Pojďme programovat elektroniku: Co se skrývá uvnitř běžné SD karty a jak ji oživit

** Máme ji v mobilech a fotoaparátech ** SD karta je dnes už standard ** A proto ji zkusíme připojit i k Arduinu

Jakub Čížek | 20

12 nejšílenějších programovacích jazyků, ze kterých vám praskne hlava

12 nejšílenějších programovacích jazyků, ze kterých vám praskne hlava

** Myslíte si, že umíte programovat? ** Ale prosím vás, zkuste jazyk Wenyan nebo Malbolge ** Z ezoterických jazyků zešílíte, nebo vás zaměstnají v Googlu

Jakub Čížek | 26

ReactOS: Zapomenuté a open-source Windows, které nevyrobil Microsoft

ReactOS: Zapomenuté a open-source Windows, které nevyrobil Microsoft

** Představte si svobodné Windows. Bláznivá vize? ** Vývojáři je přitom začali psát už před více než dvaceti lety ** Jmenují se ReactOS a spustíte na nich i Total Commander

Jakub Čížek | 52



Aktuální číslo časopisu Computer

Velký test autokamer

Test ATX skříní

Jak surfovat pohodlně

Sportovní aplikace

Jak funguje procesor