formular web
Dobrý den,
obracím se na Vás s dotazem ohledně formuláře na webu.
Na URL http://dretex.cz/dotaznik-mailer.php je formulář, který po odeslání nic neodešle, aniž by nahlásil chybu, tváří se, že je vše ok.
Je možné tento formulář nasměrovat na Váš mail server, aby emaily odcházeli a byl tím také formulář zabezpečen ?
Předem děkuji za odpověď
S pozdravem
13 Answers
Dobrý den,
– odkud jsou e-maily odesílány (přes náš SMTP server, z PHP na webhostingu, odjinud) – z PHP na webhostingu. z URL http://dretex.cz/dotaznik-mailer.php.
– co nejpřesnější datum a čas odeslání zprávy T: 09:42 17.02.2021
– e-mailová adresa odesílatele – info@dretex.cz
– e-mailová adresa příjemce – pecak23@gmail.com
SPF záznam jsem na doméně dretex.cz založen.
Na formu je action <form action=
"?send"
method=
"post"
>
Případně jak napojit na Váš mail nebo SMTP server ?
Kod formulare
<?php
function
mail_headers(
$fromEmail
,
$fromName
,
$contentType
=
"text/plain"
)
{
$headers
=
"From: $fromName <$fromEmail>\n"
;
$headers
.=
"Reply-To: $fromEmail\n"
;
$headers
.=
"MIME-Version: 1.0\n"
;
$headers
.=
"Content-Type: $contentType; charset=utf-8\n"
;
$headers
.=
"Content-Transfer-Encoding: 8bit\n"
;
return
$headers
;
}
?><!doctype html>
<html lang=
"en"
>
<head>
<!-- Required meta tags -->
<meta charset=
"utf-8"
>
<meta name=
"viewport"
content=
"width=device-width, initial-scale=1"
>
<!-- Bootstrap CSS -->
<link href=
"<a href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css">https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css</a>"
rel=
"stylesheet"
integrity=
"sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl"
crossorigin=
"anonymous"
>
<title>Odeslání dotazníku zákaznické spokojenosti</title>
</head>
<body>
<div
class
=
"container"
>
<h1>Odeslání dotazníku zákaznické spokojenosti</h1>
<?php
$sellerName
=
'Petr Milčic'
;
$sellerCompany
=
'dretex.cz'
;
$seller
=
'info@dretex.cz'
;
$body
=
"Dobrý den,
mnohokrát děkuji za projevenou důvěru v naší spolupráci. Rád bych Vás poprosil o vyplění kraťoučkého dotazníku zákaznické spokojenosti. Zabere Vám sotva minutu a nám moc pomůže.
Zde je formulář k vyplnění:
https:
//forms.gle/nYcTf1nQB4MnRwqHA
Děkuji!
S pozdravem
$sellerName
$sellerCompany
";
$correct
= false;
if
(isset(
$_GET
[
'send'
])) {
$correct
= true;
$email
= filter_var(
$_POST
[
'email'
], FILTER_SANITIZE_EMAIL);
if
(!filter_var(
$email
, FILTER_VALIDATE_EMAIL)) {
$correct
= false;
echo
'<p class="alert alert-danger" role="alert">Vyplňte správný e-mail.</p>'
;
}
if
(
$correct
) {
$headers
= mail_headers(
$_POST
[
'email'
],
$sellerName
);
$subject
=
'Prosba o hodnocení'
;
if
(!mail(
$seller
,
$subject
,
$body
,
$headers
,
"-f $seller"
))
echo
'<p class="error">Omlouváme se, ale při odesílání mailu se vyskytla chyba, opakujte prosím akci později.</p>'
;
else
echo
'<p class="alert alert-success">Váš email byl úspěšně odeslán.</p>'
;
}
}
if
(!
$correct
) {
?>
<form action=
"?send"
method=
"post"
>
<div
class
=
"mb-3"
>
<label
for
=
"exampleInputEmail1"
class
=
"form-label"
>E-mail zákazníka</label>
<input type=
"email"
name=
"email"
class
=
"form-control"
id=
"exampleInputEmail1"
aria-describedby=
"emailHelp"
value=
"<?php echo isset($email) ? $email : ''; ?>"
placeholder=
"@"
>
</div>
<div
class
=
"mb-3"
>
<textarea readonly
class
=
"form-control"
style=
"min-height: 300px"
><?php
echo
$mailText
; ?></textarea>
</div>
<div
class
=
"mb-3"
>
<button type=
"submit"
class
=
"btn btn-primary"
>Odeslat</button>
</div>
</form>
<?php
}
?>
<hr />
<h2>Jak přidat tuto stránku na plochu</h2>
<h3>Android</h3>
<ol>
<li>Otevřete tuto stránku v Chromu</li>
<li>Klikněte na menu (tři tečky)</li>
<li>Vyberte možnost Přidat na plochu</li>
</ol>
<h3>iPhone</h3>
<ol>
<li>Otevřete tuto stránku v Safari</li>
<li>Klikněte na sdílecí tlačítko</li>
<li>Vyberte možnost Přidat na plochu</li>
</ol>
</div>
</body>
</html>
Dobrý den,
děkuji za odpověď.
SPF jsem na doméně nastavil.
Zkoušel jsem odeslat z URL http://dretex.cz/dotaznik-mailer.php na mailové schránky na centrum a gmail. Email nedorazil.
Kde by mohla být chyba, když Vám to chodí?
Děkuji
S pozdravem
Zdravím,
Váš kód jsem vyzkoušel a na testovací adresu mi email dorazil, zatímco když jsem ponechal odesílací adresu Vaší, tak nedorazil. Problém bude tedy v tom, že emaily končí někde ve spamu už u mailserverů. Zkuste si nastavit SPF záznam, pravděpodobně Vám to pomůže.
Dobrý den,
děkuji za odpověď.
Kód níže.
Na mail.php ani SMTP není napojeno.
Tudíž musím na web, do domény umístit jednu s knihoven a napojit nebo je poskytujete ?
Děkuji
S pozdravem
<?php function mail_headers($fromEmail, $fromName, $contentType = "text/plain") { $headers = "From: $fromName <$fromEmail>\n"; $headers .= "Reply-To: $fromEmail\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Type: $contentType; charset=utf-8\n"; $headers .= "Content-Transfer-Encoding: 8bit\n"; return $headers; } ?><!doctype html> <html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous"> <title>Odeslání dotazníku zákaznické spokojenosti</title> </head> <body> <div class="container"> <h1>Odeslání dotazníku zákaznické spokojenosti</h1> <?php $sellerName = 'Petr Milčic'; $sellerCompany = 'dretex.cz'; $seller = 'info@dretex.cz'; $body = "Dobrý den, mnohokrát děkuji za projevenou důvěru v naší spolupráci. Rád bych Vás poprosil o vyplění kraťoučkého dotazníku zákaznické spokojenosti. Zabere Vám sotva minutu a nám moc pomůže. Zde je formulář k vyplnění: https://forms.gle/nYcTf1nQB4MnRwqHA Děkuji! S pozdravem $sellerName $sellerCompany "; $correct = false; if (isset($_GET['send'])) { $correct = true; $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $correct = false; echo '<p class="alert alert-danger" role="alert">Vyplňte správný e-mail.</p>'; } if ($correct) { $headers = mail_headers($_POST['email'], $sellerName); $subject = 'Prosba o hodnocení'; if (!mail($seller, $subject, $body, $headers, "-f $seller")) echo '<p class="error">Omlouváme se, ale při odesílání mailu se vyskytla chyba, opakujte prosím akci později.</p>'; else echo '<p class="alert alert-success">Váš email byl úspěšně odeslán.</p>'; } } if (!$correct) { ?> <form action="?send" method="post"> <div class="mb-3"> <label for="exampleInputEmail1" class="form-label">E-mail zákazníka</label> <input type="email" name="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" value="<?php echo isset($email) ? $email : ''; ?>" placeholder="@"> </div> <div class="mb-3"> <textarea readonly class="form-control" style="min-height: 300px"><?php echo $mailText; ?></textarea> </div> <div class="mb-3"> <button type="submit" class="btn btn-primary">Odeslat</button> </div> </form> <?php } ?> <hr /> <h2>Jak přidat tuto stránku na plochu</h2> <h3>Android</h3> <ol> <li>Otevřete tuto stránku v Chromu</li> <li>Klikněte na menu (tři tečky)</li> <li>Vyberte možnost Přidat na plochu</li> </ol> <h3>iPhone</h3> <ol> <li>Otevřete tuto stránku v Safari</li> <li>Klikněte na sdílecí tlačítko</li> <li>Vyberte možnost Přidat na plochu</li> </ol> </div> </body> </html>
Dobrý den,
web je vlastní kód nebo nějaké CMS? Formulář je řešený přes php mail() funkci nebo přes SMTP knihovnu? Jaký je nastavený email pro odesílání?