Как отправить электронную почту с localhost с помощью PHP на Linux

Я знаю, что для отправки электронной почты с localhost в Windows вам нужно изменить SMTP-сервер в php.ini, но это действительно только для Windows:

[mail function] ; For Win32 only. ; http://php.net/smtp SMTP = localhost ; http://php.net/smtp-port smtp_port = 25 

Итак, что я должен сделать, чтобы отправлять электронную почту из ОС Linux?

Я бы предложил установить ssmtp вместо установки полного почтового сервера, такого как postfix. Если это только локальная тестовая среда, вам, вероятно, не нужен полный MTA. ssmtp очень прост в настройке – вы просто предоставляете свои учетные данные smtp для удаленного сервера. Здесь есть учебник.

Если вы используете Debian и его варианты (* buntu и т. Д.), Вы можете установить почтовый сервер, запустив sudo tasksel install mail-server , который должен настроить вас на основные возможности электронной почты. Вы можете проверить это, запустив в командной строке echo 'body' | sendmail recipient@example.net echo 'body' | sendmail recipient@example.net или, как упоминалось другими, mail($to, $subj, $msg) в PHP.

Установите sendmail или exim. Найдите в своем диспетчере пакетов любой из параметров и установите их. Senmail распространен, и его настройка должна выполнять эту работу. Командой mail на linux является агент MUA или почтового пользователя, агент почты (MUA) – это приложение, которое используется для отправки и получения электронной почты, а также для клиента. В то время как агент передачи почты передает электронные письма с одного компьютера на другой с использованием архитектуры приложения клиент-сервер.

В вашем файле php.ini должен быть заглушка, что-то вроде:

 ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). sendmail_path = /usr/sbin/sendmail -t -i 

Убедитесь, что указанная команда существует в вашей файловой системе, и вы (установили и) настроили MTA правильно.

Если у вас еще нет MTA, есть много MTA, доступных для Linux-систем, я бы рекомендовал sendmail (компилировать / сложно настроить, но отличную производительность и потрясающую гибкость) или постфикс (проще настроить, обеспечить безопасность коробки).

Узнайте, как использовать клиенту «mail» cli или запустить другой MUA на сервере, чтобы настроить настройку MTA из интеграции PHP.

Вам необходимо установить MTA, например sendmail (некоторые дистрибутивы, например Debian, предпочитают exim или, возможно, постфикс).

Использование PHP-реализации SMTP – это плохая идея, потому что она не будет соблюдать требование повторения RFC5321 «4.5.4.1. Стратегия отправки: почта, которая не может быть немедленно передана, должна быть поставлена ​​в очередь и периодически повторена отправителем».

Это нарушение требования RFC «MUST» обычно снижает надежность и в большинстве случаев будет мешать правильному взаимодействию. Вот почему вам нужно использовать локальный MTA (под Linux или Windows). В идеале вам нужен механизм, отличный от SMTP, для отправки сообщений в MTA, поэтому PHP должен выполнить «sendmail» для отправки почты. Как правило, это делается по умолчанию, если установлен MTA.

Это работало для меня в Linux Mint 17 для отправки писем с localhost:

 sudo apt-get install sendmail 

Для отправки почты с localhost (WAMP, XAMP или LAMP) вы можете использовать пакет PHPMailer (ссылка для загрузки для zip-файла: http://phpmailer.apache-extras.org.codespot.com/files/PHPMailer_5.2.3.zip ).

Сначала вам нужно отредактировать «php.ini». Чтобы найти этот файл, отобразите phpinfo, используя следующий код с сервера WAMP. Создайте один php-файл и добавьте этот контент.

 <?php echo phpinfo(); ?> 

Там найдите «Загруженный файл конфигурации». Это будет путь к вашему php.ini.

В этом файле удалите; (semi colour), заданный для расширения = php_openssl.dll.

После загрузки пакета PHPMailerX.XX

Extract-> Скопируйте полную папку в папку проекта.

В тестовой папке есть один файл с именем testemail.php.

Измените параметр в соответствии с вашими потребностями. (Пример приведен ниже).

Затем в браузере типа 127.0.0.1/PHPMailer/test/testemail.php.

Затем он будет показывать успешное сообщение, если отправлено электронное сообщение, иначе оно выдаст сообщение об ошибке. Пример:

 //add these codes if not written $mail->IsSMTP(); $mail->SMTPAuth = true; // enable SMTP authentication $mail->SMTPSecure = "ssl"; // sets the prefix to the servier $mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server $mail->Port = 465; //You have to change these parameters to your requirements. //…….code…. $mail->Username = “abc@gmail.com”; // GMAIL username $mail->Password = “abcdefgh”; // GMAIL password //……..code….. There are many other functions to attach file etc.. For that refer doc file. $mail->AddAddress(“destination@gmail.com”,”Nick name”); //…….code…..