Php mail () не работает на сервере ubuntu

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

Php mail () не работает на сервере ubuntu

А вот мой php-код (я тестировал этот же код на другом производственном онлайн-сервере и отлично работает):

<?php 
$ToEmail = '[email protected]'; 
$EmailSubject = 'Site contact form'; 
$mailheader = "From: ".$_POST["email"]."\r\n"; 
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n"; 
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$MESSAGE_BODY = "Name: ".$_POST["name"].""; 
$MESSAGE_BODY .= "Email: ".$_POST["email"].""; 
$MESSAGE_BODY .= "Comment: ".nl2br($_POST["comment"]).""; 
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); ?>

Этот код не работает на моем сервере Ubuntu, что мне делать? Я не хочу использовать библиотеки. Я читал, что на сервере Linux нет необходимости ничего устанавливать и не нужно добавлять конфигурацию SMTP в код, даже в руководстве по php приведены некоторые основные примеры для отправки электронных писем, а в них нет кода SMTP. В чем проблема с этим кодом?

Вы получаете код ошибки или он просто не отправляется?

user5283119 18.05.2018 11:24

@MikeRodham, когда я выполняю код, он говорит о сбое, а электронное письмо не приходит.

Capitan Duke 18.05.2018 11:26

Какая-то конкретная причина, по которой вы против библиотек? Потому что PHPMailer сделает вашу жизнь намного проще. Поскольку единственная ошибка, которую фактически возвращает функция mail (), - это true, если send false, если нет. Кроме того, тот факт, что mail () может возвращать значение true, НЕ означает, что он достигнет предполагаемого места назначения.

user5283119 18.05.2018 11:30

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

user5283119 18.05.2018 11:33

@MikeRodham, потому что я новичок в php и буду усложнять работу с библиотеками, я уверен, что простой код будет работать, и мой код работает на другом сервере, и я не знаю, почему на этом сервере не работает. Но если это не сработает, я установлю PHPMailer. :)

Capitan Duke 18.05.2018 11:33

@MikeRodham, сервер не является localhost, и SMTP настроен с моим собственным почтовым сервером.

Capitan Duke 18.05.2018 11:36

PHPMailer не является сложной библиотекой, я знаю, что библиотеки могут показаться довольно сложными для нового PHP-исполнителя, но на самом деле они намного проще, чем вы думаете. Немного проб и ошибок, и вы сразу же улыбнетесь. Кроме того, уверены ли вы, что ваш сервер успешно взаимодействует с вашим SMTP-сервером?

user5283119 18.05.2018 11:36

@MikeRodham с PHPmailer Я сохраню тот же код или мне нужно написать новый код для адаптации к библиотеке phpmailer?

Capitan Duke 18.05.2018 11:49

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

user5283119 18.05.2018 11:50

@MikeRodham Спасибо, Майк, я попробую !!!!

Capitan Duke 18.05.2018 11:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
10
967
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это не тот ответ, который вы хотели, но, вероятно, лучший способ ответить, учитывая нашу дискуссию по основному вопросу.

Пример PHPMailer

Вам просто нужно адаптировать текущий код к вашим переменным, указанным в исходном коде.

Источник: Пример PHPMailer - официальный пакет GitHub

<?php
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

//Load Composer's autoloader
require 'vendor/autoload.php';

$mail = new PHPMailer(true);                              // Passing `true` enables exceptions
try {
    //Server settings
    $mail->SMTPDebug = 2;                                 // Enable verbose debug output
    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp1.example.com;smtp2.example.com';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = '[email protected]';                 // SMTP username
    $mail->Password = 'secret';                           // SMTP password
    $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 587;                                    // TCP port to connect to

    //Recipients
    $mail->setFrom('[email protected]', 'Mailer');
    $mail->addAddress('[email protected]', 'Joe User');     // Add a recipient
    $mail->addAddress('[email protected]');               // Name is optional
    $mail->addReplyTo('[email protected]', 'Information');
    $mail->addCC('[email protected]');
    $mail->addBCC('[email protected]');

    //Attachments
    $mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
    $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name

    //Content
    $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';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}

Другие вопросы по теме