Проблема проста. Всякий раз, когда я пытаюсь отправить электронное письмо с моего PHP-сервера на адрес горячей почты, оно даже не достигает горячей папки INBOX и не попадает в папку СПАМ.
Я использую пользовательскую функцию для отправки по электронной почте, но я предполагаю, что некоторые из заголовков, вероятно, неверны, или, возможно, они должны быть в определенном порядке?
function send_mail($from,$to,$subject,$body){
global $sitename;
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= 'To: $to' . "\r\n";
$headers .= 'From: $sitename <$from>' . "\r\n";
$headers .= 'Cc: $from' . "\r\n";
$headers .= 'Bcc: $from' . "\r\n";
$headers .= 'Reply-To: $from' . "\r\n";
$headers .= "Return-Path: $from\n";
$headers .= "Message-ID: <" . md5(uniqid(time())) . "@" . $_SERVER['SERVER_NAME'] . ">\n";
$headers .= "Date: " . date('r', time()) . "\n";
if (mail($to,$subject,$body,$headers)) {return TRUE;} else {return FALSE;}
}
Я проверил сервер, чтобы увидеть, если он в черном списке. Это не.
В чем может быть проблема? Или, может быть, у кого-то есть проверенная функция почты PHP, которая работала с hotmail?
Спасибо
Почему вы не отправляете через PHPMailer? Просто создайте одну учетную запись Gmail или собственную учетную запись электронной почты в своем домене.
Пример с учетной записью Gmail:
require("phpmailer/class.phpmailer.php");
function send_mail($fromEmail, $fromName, $subject, $body)
{
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 0; // 1 tells it to display SMTP errors and messages, 0 turns off all errors and messages, 2 prints messages only.
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->Username = "[email protected]";
$mail->Password = "yourpassword";
$mail->From = "[email protected]";
$mail->FromName = "yourname";
$mail->AddAddress($fromEmail, $fromName);
$mail->AddReplyTo("[email protected]", "yourname");
$mail->WordWrap = 50; // set word wrap to 50 characters
// $mail->AddAttachment("/folder/file.zip"); // add attachments
$mail->IsHTML(true); // set email format to HTML
$mail->AddEmbeddedImage('img/logo.png', 'logo'); //if you need a logo signature
$mail->Subject = $subject;
$mail->Body = $body."<br/><br/><a href=\"http://www.yourwebsite.com\"><img src=\"cid:logo\" alt=\"You website title\"></a>";
// $mail->AltBody = "This is the body in plain text for non-HTML mail clients ;-)";
$mail->Send();
if($mail->Send())
{
return true;
}
else
{
return false;
}
}
Дополнительная информация: http://phpmailer.worxware.com/?pg=examplebgmail
Запись SPF — это тип записи службы доменных имен (DNS), которая определяет, каким почтовым серверам разрешено отправлять электронную почту от имени вашего домена.
Цель записи SPF — запретить спамерам отправлять сообщения с поддельными адресами From в вашем домене. Получатели могут обратиться к записи SPF, чтобы определить, поступило ли сообщение с вашего домена с авторизованного почтового сервера.
Если в вашем домене нет записи SPF, некоторые домены-получатели могут отклонять сообщения от ваших пользователей, потому что они не могут проверить, что сообщения приходят с авторизованного почтового сервера.
SPF-записи для исходящего шлюза
Если вы решите включить функцию шлюза электронной почты, вам необходимо убедиться, что адрес SMTP-сервера Google и сервера исходящего шлюза включен в запись SPF.
Для более подробной информации вы можете проверить эту ссылку
Это может произойти из-за нашего сервера, на котором мы разместили наш файл php.
Я также столкнулся с той же проблемой. Но моя проблема возникла из-за сервера Dreamhost. Это черный список с сервера горячей почты.
Решение заключается в том, что я купил mailjet для отправки электронной почты.
У вас есть запись SPF? Hotmail блокирует домены без записи SPF