Я не могу посылать электронную почту с функцией mail () php в CentOS 7

Ну, у меня есть проблема с функцией mail PHP, каждый раз, когда я выполняю этот код:

<body>
    <p align="center">
        <font face="arial" size=4>
        <?php
            $para = "nare.phantasie.1990@gmail.com";
            $asunto = "Prueba de envío de email";
            $cabecera = "From: nrojas.orioncorp@gmail.com\r\n".
            "Reply-To: nrojas.orioncorp@gmail.com\r\n";
            $cuerpo = "Hola Mundo.";
            echo mail($para, $asunto, $cuerpo, $cabecera)?"Enviado.\n":"Lo sentimos, no se pudo enviar.\n";
        ?>
        </font>
    </p>
</body>

Тогда в браузере оно является сообщением "Посланник." но я никогда не вижу сообщение в моем почтовом ящике моей почты в gmail.
Я всегда вижу сообщение в консоли, как "у Него Есть новое сообщение в/var/spool/mail/root".
У моего сервера есть CentOS 7, и он имеет также httpd и PHP5 установленные правильно.
Как я могу посылать почту с моего Веб сервера?

2
задан 24.08.2016, 15:55
3 ответа

Первое состояло бы в том, чтобы осветлять, что. хотя ты получишь стоимость true и покажи "Посланное" сообщение, это не означает, что сообщение было послано. Просто почта была принята для Вашего отправления, как показывается он в документации PHP:

Возвращенная стоимость

Возврати TRUE, если почта была принята для Вашего отправления, иначе FALSE.

Важно иметь в виду, что, если почта принята для Вашего отправления, он не означает, что почта достигла указанной судьбы.

Поскольку ты получаешь true, это означает, что PHP переместил его информацию в твой почтовый сервер. PHP сделал Вашу часть, и с этого времени, что произошло после, будет вне Вашего достижения. В аналогии с реальным миром: человек (PHP) поместил письмо в один на, поместил ему печать и поместил ее в почтовый ящик; сейчас это работа почтальона (почтовый сервер) распространять ее и вручать ее правильному адресату.

Имея это в виду, первый шаг (и я знаю, что это прописная истина) состоял бы в том, чтобы обеспечивать тебя в том, что у тебя есть почтовый сервер установленный SMTP, и прокручивая изображение в окне на твоем сервере, и(или) которого сервер конфигурировался для того, чтобы он послал просьбы почты в сервер SMTP (в php.ini).

Если все хорошо конфигурировавшее, и прокручивая изображение в окне, как он был должен, но ты продолжаешь, не получая сообщений, тогда дебет проверять logs почтового сервера, чтобы видеть, что является тем, что он бьет козырем в Вашей части. Возможно, что какой-либо из параметров не является действительным или ему не нравится немного в заголовках. logs были бы должны показывать какое-то сообщение ошибки.

Если logs не показывают никакого сообщения ошибки, но они показывают, что электронная почта была послана правильным способом, тогда проблема перешла бы к тому, чтобы быть в распределителе почты (в этом случае GMail). Что может помечать сообщение как spam и бросая это в корзину прямо.

1
ответ дан 24.11.2019, 13:35

Если у тебя есть php, 5.3 может говорить тебе, что enviГі почта, но никогда не прибывает в поднос почты (до сих пор не, потому что, но с php 5.3 не функционирует mail уже, я это протестировал) с версия 5.4 из php в дальнейшем, если оно функционирует

0
ответ дан 24.11.2019, 13:35

Заметь: Для отправления почты посредством PHP необходимо, чтобы этот располагал правильной конфигурацией.

Если наш Веб находится на сервере поставщика hosting конечно, уже они конфигурировали PHP для отправления mails. Если мы будем работать на собственном сервере, да мы будем должны конфигурировать PHP.

PHP конфигурируется в файле php.ini, где мы должны определять такие данные как исходящий почтовый сервер, который, должно быть, использует PHP, чтобы переносить сообщения.

Внутри php.ini, мы должны искать эпиграф [mail function]. В зависимости от нашей системы мы будем должны конфигурировать способа или другой.

Заметь: Если работает правильно function mail, ты был бы должен проверять, если почта или сообщение эта или не помечая как spam

Пример, которую я использую, чтобы посылать почту или сообщение.

<?php
$sender = $_POST['name'];
$return = $_POST['email'];
$message = nl2br($_POST['message']);

$to = "example@example.com";
$subject = "Message from Spyre Contact Form";

$headers = "From: " . strip_tags($return) . "\r\n";
$headers .= "Reply-To: ". strip_tags($return) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";


$msg = "<html><body>";
$msg .= "<h2 style='font-weight:bold;border-bottom:1px solid #bbb;'>New Contact Message</h2>\r\n";
$msg .= "Sent by: <strong>".$sender."</strong><br />\r\n";
$msg .= "Respond to: <strong>".$return."</strong><br /><br />\r\n";
$msg .= "Message: <br />\r\n";
$msg .= "<em>".$message."</em><br />\r\n";
$msg .= "</body></html>";

if(mail($to, $subject, $msg, $headers)) {
    echo "Mensaje Enviado";
} else {
    echo "Error, al enviar mensaje";
}

?>

Добавочные параметры:

//para el envío en formato HTML 
$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 

//dirección del remitente 
$headers .= "From: Miguel Angel Alvarez <pepito@desarrolloweb.com>\r\n"; 

//dirección de respuesta, si queremos que sea distinta que la del remitente 
$headers .= "Reply-To: mariano@desarrolloweb.com\r\n"; 

//ruta del mensaje desde origen a destino 
$headers .= "Return-path: holahola@desarrolloweb.com\r\n"; 

//direcciones que recibián copia 
$headers .= "Cc: maria@desarrolloweb.com\r\n"; 

//direcciones que recibirán copia oculta 
$headers .= "Bcc: pepe@pepe.com,juan@juan.com\r\n"; 

Важно Наблюдать документацию php http://php.net/manual/es/function.mail.php

1
ответ дан 24.11.2019, 13:35

Теги

Похожие вопросы