PHP не может отправлять почту на веб-почту

У меня есть контактная форма на веб-сайте, которая, если вы отправите ее, будет отправлена ​​​​на веб-почту. пример :

    $isi_pesan = $message;
    $additional_headers = "From: ".$email."" . "\r\n" . "Reply-To: $email";   
    $subject = 'Pesan untuk engineering.co.id';

    $to = '[email protected]';
 // $to = '[email protected]'; //this works

    if(mail($to, $subject, $isi_pesan, $additional_headers))
        echo '<div class="success-msg">Success !</div>';
    else
        echo '<div class="error-msg">Failed !</div>';

сообщение, которое я получил, это "успех!" но я ничего не получил в почтовом ящике. Почта PHP работает, если $to не является веб-почтой. Итак, какие настройки мне нужно изменить, чтобы почта работала в веб-почте? заранее спасибо.


person Dwikky Maradhiza    schedule 06.05.2013    source источник
comment
Функция mail() обычно использует sendmail на серверах Linux. Пожалуйста, проверьте, настроены ли на вашем сервере почтовые настройки настроены. Если нет, вы можете использовать PHPMailer с любым SMTP или POP3.   -  person user1190992    schedule 06.05.2013


Ответы (4)


Вы смотрели в папке СПАМ? Взгляните на этот класс PHP

https://github.com/Synchro/PHPMailer

$mail = new PHPMailer;

$mail->From = '[email protected]';
$mail->FromName = 'Mailer';
$mail->AddAddress('[email protected]');               // Name is optional
$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';

if(!$mail->Send()) {
   echo 'Message could not be sent.';
   echo 'Mailer Error: ' . $mail->ErrorInfo;
   exit;
}

echo 'Message has been sent';
person Marcos Aguayo    schedule 06.05.2013
comment
Я попробовал ваше предложение, но по-прежнему не получил сообщения в веб-почте :( как я могу проверить, было ли сообщение отправлено в папку со спамом? - person Dwikky Maradhiza; 06.05.2013
comment
вы используете gmail или адрес электронной почты вашего домена? - person Marcos Aguayo; 06.05.2013
comment
я устанавливаю $mail-›from на основе электронной почты, отправленной в контактную форму, и $mail->AddAddress я устанавливаю его на адрес электронной почты моего домена - person Dwikky Maradhiza; 06.05.2013

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

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

По большому счету, PHP-функция mail() выполняет около 0,1% процесса доставки почты, и вы продемонстрировали, что она работает успешно. Поэтому начните анализировать остальные 99,9%, чтобы понять, в чем проблема.

person Marc B    schedule 06.05.2013
comment
спасибо за ответы, я пытался выяснить, что происходит .. как проверить журналы почтового сервера ?? - person Dwikky Maradhiza; 06.05.2013

Если это ваш точный код, то вы перезаписываете первый адрес вторым здесь:

$to = '[email protected]';
$to = '[email protected]'; //this works

Если вы хотите отправить обоим, вам нужно сделать что-то вроде:

$to = '[email protected], [email protected]';
person Phylogenesis    schedule 06.05.2013
comment
Я только что видел ваше редактирование, чтобы закомментировать второе назначение $to. В этом случае вам, вероятно, нужно смотреть дальше, как предложил Марк Б. - person Phylogenesis; 06.05.2013

Настройте свою веб-почту в Microsoft Outlook. Теперь вы будете получать письма из контактной формы. Это сработало для меня. ;п

person Dhineshkumar    schedule 18.06.2016