Помощь, Регистрационные письма идут в почтовый ящик спама - PullRequest
0 голосов
/ 10 февраля 2011

Я только начал предлагать учетные записи пользователей на своем веб-сайте (большой сайт PR6, с хорошей репутацией) и заметил, что регистрационные электронные письма почти всегда идут в ящик для спама получателей.

Пока мы только отправилинесколько электронных писем, так что это не так, как если бы мы отбрасывали тысячи.

Я отправляю электронные письма через PHP с помощью функции mail ().Ниже вы можете найти заголовки, которые я отправляю с помощью функции mail ().

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers  .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers  .= 'From: Domain.com <noreply@mydomain.com>' . "\r\n";

Есть ли способ или хитрость, чтобы обойти эти фильтры спама?Это явно не спам, что я рассылаю.Регистрационное письмо содержит 3 ссылки.

Ответы [ 3 ]

6 голосов
/ 10 февраля 2011

Есть много вещей, которые могут привести к тому, что письма будут помечены как спам. Решение двоякое: с одной стороны, вы должны использовать хороший SMTP-сервер (доставляемость), а затем вы должны правильно формировать свои электронные письма. (Утомительная задача с использованием mail ().)

Правильная отправка писем с использованием PHP

Вы действительно должны использовать что-то вроде PHPMailer. Это php-библиотека для отправки электронных писем, которая делает их правильно, поэтому у писем больше шансов на правильное поступление.

http://phpmailer.worxware.com/

Доставка по электронной почте

Доставка электронной почты может быть головной болью, но я могу порекомендовать http://www.sendgrid.com - Вы в основном устанавливаете их в качестве сервера smtp phpmailer и используете их сервер исходящей почты. Они являются экспертами в области доставки электронной почты, и вы намного легче время Особенно, когда вы начинаете рассылать орды писем.

Пример кода

Пример электронного письма с сайта phpmailer:

<?php
require_once('../class.phpmailer.php');

$mail             = new PHPMailer();

$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPDebug  = 2;  // enables SMTP debug information (for testing)
                                       // 1 = errors and messages
                                       // 2 = messages only
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Host       = "smtp.sendgrid.net"; // sets the SMTP server to sendgrid's server
$mail->Port       = 25;                    // set the SMTP port for the GMAIL server
$mail->Username   = "emailuser@host.com"; // Sendgrid user
$mail->Password   = "yourpassword";        // Sendgrid passw.

$mail->SetFrom('name@yourdomain.com', 'First Last');

$mail->AddReplyTo("name@yourdomain.com","First Last");

$mail->Subject    = "PHPMailer Test Subject via smtp, basic with authentication";

$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

$mail->MsgHTML($body);

$address = "whoto@otherdomain.com";
$mail->AddAddress($address, "John Doe");

echo !$mail->Send() ? "Mailer Error: " . $mail->ErrorInfo : "Message sent!";    
?>

Я бы хотел сказать, что я никоим образом не связан с Sendgrid. Я просто большой поклонник их обслуживания. Я много лет боролся с функцией mail (), smtp-серверами, почтовыми очередями и службами в веб-магазине разработчика, и я не желаю этой участи для моего злейшего врага. Сэкономьте время и заботы.

Ура ...

0 голосов
/ 10 февраля 2011

Пара советов от: http://pauldowman.com/2008/02/17/smtp-mail-from-ec2-web-server-setup/

Если вы используете сторонний SMTP-ретранслятор, такой как authsmtp, вы должны добавить spf-запись в свой DNS.

spfwizard.ком.

Не подделывать поле От

Вы должны отправлять почту только по адресу somebody@yourdomain.com.Например, если вы попытаетесь отправить письмо с somebody@pauldowman.com, получатель увидит, что pauldowman.com имеет запись SPF и что он не авторизует ваш почтовый сервер.Затем в папку со спамом вы идете.

Чтобы обойти это, вы можете отправить что-то вроде noreply@yourdomain.com и установить заголовок Reply-To на somebody@pauldowman.com.Вы даже можете указать имя в поле from, например: «Paul Dowman via yoursite».Заголовок Reply-To будет следить за тем, чтобы ответы большинства людей приходили на правильный адрес, но некоторые из них неизбежно окажутся по адресу noreply@yourdomain.com, поэтому, вероятно, будет хорошей идеей установить автоответчик по этому адресу или, по крайней мере, сделатьуверен, что сообщение отскочило, так что пользователь в конце концов осознает ошибку.

И я второй на использование PHPMailer ().Заботится о куче мелочей.

0 голосов
/ 10 февраля 2011

Вы, вероятно, сделали это, но я бы хотел проверить, что в вашем письме нет ключевых слов, которые бы представляли собой большой красный флаг для фильтра спама.Очевидно, что «регистрация» необходима, но старайтесь избегать других слов, которые часто встречаются в реальном спаме.Я уверен, что спам-фильтры также чувствительны к количеству ссылок в электронном письме, поэтому уменьшение их с 3 также может быть хорошей идеей.

...