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 PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

//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 <b>in bold!</b>';
$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.

Sdílejte článek

Vstupte do světa domén

Každý správný web potřebuje doménu a kvalitní webhosting. Buďte online s námi.