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,
odesílání přes mail() na Vašem hostingu funguje v pořádku. Pravděpodobně jste někde označován jako spam, i když máte spam score v pořádku.
Do SPF jsem Vám přidal IP webhostingu, zkuste tedy zda dorazí nyní, případně je potřeba hledat email u příjemce.
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í?
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>
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ěď.
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
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>