Проблемы с PHP-спамом в Gmail и Hotmail - PullRequest
0 голосов
/ 19 октября 2011

У меня возникли сумасшедшие проблемы со спамом из-за следующего кода в gMail и Hotmail ... что-то не так с точки зрения PHP?

function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
$file = $path.$filename;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$header = "From: ".$from_name." <".$from_mail.">\r\n";
$header .= "Reply-To: ".$replyto."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .= "This is a multi-part message in MIME format.\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$header .= $content."\r\n\r\n";
$header .= "--".$uid."--";
if (mail($mailto, $subject, "", $header)) {
    echo "mail send ... OK"; // or use booleans here
} else {
    echo "mail send ... ERROR!";
}
} 
$my_file = "f92ffc796f.jpg";
$my_path = $_SERVER['DOCUMENT_ROOT']."/resources/template/uploads/";
$my_name = "BB Avatar";
$my_mail = "someone@somehwerecom";
$my_replyto = "someone@somehwerecom";
$my_subject = "This is a mail with attachment.";
$my_message = "Hallo,\r\ndo Your download is attached.\r\n\r\";
mail_attachment($my_file, $my_path, $_REQUEST['email'], $my_mail, $my_name, $my_replyto, $my_subject, $my_message);

Ответы [ 3 ]

0 голосов
/ 19 октября 2011

Я вижу, что у вас могут возникнуть проблемы:

$my_mail = "someone@somehwerecom";
$my_replyto = "someone@somehwerecom";

Должно быть:

$my_mail = "someone@somehwere.com";
$my_replyto = "someone@somehwere.com";

Если вы отправляете много писем из этого сценария,Вы можете быть помечены как СПАМ, если вы не соблюдаете CAN СПАМ Акт .Возможно, это не имеет ничего общего с вашим php.

Я не использовал их, но я поговорил с парнями из Send Grid , которые утверждали, что их служба может помочь обеспечить электронную почтудоставляется правильно.

0 голосов
/ 19 октября 2011

Спам из-за следующих причин

1) Общий хостинг

Если вы используете виртуальный хостинг, PHP не является решением этой проблемы. Попробуйте связаться с поставщиками вашего сервера. Некоторое времяВаш размещенный IP-адрес рассматривается как спам. Попробуйте сменить хостинг-провайдеров, он может нормально работать.

2) Дополнительные ссылки в теле вашего письма

3) Частичный заголовок (всегда используйте reply-на, Ref Ans: TrentonMcManus)

4) Массовая электронная почта

5) Отчеты о спаме (количество людей, которые кликнули по вашей ссылке как спам)

6)Сообщение не должно быть слишком коротким или слишком длинным.

7) Отправка с черного списка IP (хостинг и SMTP-сервер))

Возможно, ваш IP-адрес ранее был занесен в черный список Googleили Hotmail Вы можете проверить черный список ip или нет на сайте с здесь

8) Проверка IP отправителя

Sender Policy Framework (SPF) - это система проверки электронной почты, предназначенная дляпредотвратить спам в электронной почте, обнаружив фальсификацию электронной почтына уязвимость, проверяя IP-адреса отправителя.

Возможно, PHP не может решить эту проблему. Вы можете сделать в php-кодировании следующие вещи

1) Всегда используйте from / reply для адреса

2) Добавить ссылку для отмены подписки в теле

3) Избегать спам-ключевых слов.

4) Сообщение не должно быть слишком коротким или слишком длинным.

5) Текстовая версиялучше чем HTML

...