Как отправить письмо с localhost с помощью PHP на Linux - PullRequest
10 голосов
/ 03 августа 2011

Я знаю, что для отправки электронной почты с локального хоста в 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?

Ответы [ 7 ]

5 голосов
/ 05 сентября 2012

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

3 голосов
/ 03 августа 2011

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

2 голосов
/ 25 августа 2015

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

sudo apt-get install sendmail
2 голосов
/ 24 декабря 2012

Для отправки почты с локального хоста (WAMP, XAMP или LAMP) вы можете использовать пакет PHPMailer (Скачать PHPMailer с здесь ).

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

<?php
     echo phpinfo();
?>

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

В этом файле удалите; (точку с запятой), присвоенную расширению = php_openssl.dll.

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

Извлечь-> Скопировать всю папку в папку вашего проекта.

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

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

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

.

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

//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…..
1 голос
/ 04 августа 2011

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

Использование реализации SMTP в PHP - плохая идея, поскольку она не будет соответствовать требованию повторенияRFC5321 «4.5.4.1. Стратегия отправки: почта, которая не может быть отправлена ​​немедленно, ДОЛЖНА быть поставлена ​​в очередь и периодически повторяться отправителем».взаимодействие в большинстве случаев.Вот почему вам нужно использовать локальный MTA (под Linux или Windows).В идеале вам нужен механизм не SMTP для отправки сообщений в MTA, поэтому PHP должен будет выполнять «sendmail» для отправки почты.Это имеет тенденцию делать это по умолчанию, если установлен MTA.

1 голос
/ 03 августа 2011

В вашем файле 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.

1 голос
/ 03 августа 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...