Jak zabránit odesílání e‑mailů z webových formulářů do spamu

Pokud dostáváte nevyžádané e‑maily z odeslaných webových formulářů, je příčinou pravděpodobně odesílání e‑mailů ze skriptů PHP prostřednictvím funkce mail. S dnešní ochranou proti spamu je tato funkce již zastaralá a takto odeslané e‑maily jsou často filtry označeny jako spam, protože e‑mail není podepsán klíčem DKIM a odesílatelem je webový server.

Z těchto důvodů doporučujeme při programování formuláře používat knihovny, které odesílají e‑mail prostřednictvím protokolu SMTP jako jakýkoli jiný e‑mailový klient.

Za tímto účelem doporučujeme nainstalovat jednu z následujících knihoven:

  • PHPMailer – https://github.com/PHPMailer/PHPMailer
  • Swift Mailer – https://swiftmailer.symfony.com

Příklad použití pro Swift Mailer (vyžadována verze PHP 7 nebo vyšší):

require_once ‚/path/to/vendor/autoload.php‘;

// Create the Transport
$transport = (new Swift_SmtpTransport(‚smtp.example.org‘, 25))
->setUsername(‚your username‘)
->setPassword(‚your password‘)
;

// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);

// Create a message
$message = (new Swift_Message(‚Wonderful Subject‘))
->setFrom([‚john@doe.com‘ => ‚John Doe‘])
->setTo([‚receiver@domain.org‘, ‚other@domain.org‘ => ‚A name‘])
->setBody(‚Here is the message itself‘)
;

// Send the message
$result = $mailer->send($message);

Příklad použití PHPMailer (vyžadována verze PHP 5.5 nebo vyšší):

<?php

// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;

//Load Composer’s autoloader
require ‚vendor/autoload.php‘;

$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
//Server settings
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = ‚smtp1.example.com‘; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = ‚user@example.com‘; // SMTP username
$mail->Password = ‚secret‘; // SMTP password
$mail->SMTPSecure = ‚tls‘; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to

//Recipients
$mail->setFrom(‚from@example.com‘, ‚Mailer‘);
$mail->addAddress(‚joe@example.net‘, ‚Joe User‘); // Add a recipient
$mail->addAddress(‚ellen@example.com‘); // Name is optional
$mail->addReplyTo(‚info@example.com‘, ‚Information‘);
$mail->addCC(‚cc@example.com‘);
$mail->addBCC(‚bcc@example.com‘);

//Attachments
$mail->addAttachment(‚/var/tmp/file.tar.gz‘); // Add attachments
$mail->addAttachment(‚/tmp/image.jpg‘, ‚new.jpg‘); // Optional name

//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = ‚Here is the subject‘;
$mail->Body = ‚This is the HTML message body in bold!‚;
$mail->AltBody = ‚This is the body in plain text for non-HTML mail clients‘;

$mail->send();
echo ‚Message has been sent‘;
} catch (Exception $e) {
echo ‚Message could not be sent. Mailer Error: ‚, $mail->ErrorInfo;
}

Důležité je také vždy nastavit správný server pro odesílání pošty (SMTP), který najdete v našem WebAdminu s přihlašovacím jménem, heslem a odesílatelem.

Pokud máte stránky WordPress

V případě, že máte web WordPress, nemusíte nic programovat. Stačí použít doplněk pro ověřování SMTP nebo použít formulář, který odesílá zprávy přes SMTP:

  • https://wordpress.org/plugins/easy-wp-smtp (ideální pro kontaktní formulář 7)
  • https://wordpress.org/plugins/pirate-forms (formulář, který odesílá zprávy přes SMTP)
  • https://wordpress.org/plugins/wp-mail-bank

Pro více informací kontaktujte naši zákaznickou podporu.

Poslední aktualizace: