Я использую ОС Windows Vista. PHP, MySQL как база данных и веб-сервер Apache.
Я хочу отправить уведомление тем, кто хочет присоединиться к моему сайту. Но проблема в том, когда я нажимаю кнопку «Отправить». Он ничего не отправляет на адрес электронной почты пользователя.
Как вы думаете, что для вас лучше всего подходит?
<?php $to = "recipient@example.com"; $subject = "Hi!"; $body = "Hi,\n\nHow are you?"; if (mail($to, $subject, $body)) { echo("<p>Message successfully sent!</p>"); } else { echo("<p>Message delivery failed...</p>"); } ?>
У вас есть несколько вариантов:
Zend_Mail Zend Framework выполняет очень аккуратную работу с отправкой E-Mail! Вам не нужно использовать всю Zend Framework, вы можете просто использовать Zend_Mail!
Используйте класс «Почта», который требует доступа к отдельному SMTP-серверу, прослушивающему порт 25.
Пример кода:
function sendmail($from, $to, $subject, $message, $headers) { if (is_array($to)) { $recipients = implode(', ', $to); } else { $recipients = $to; } $errorlevel = error_reporting(); $headers["From"] = $from; $headers["To"] = $to; $headers["Subject"] = $subject; $params = array(); $params["host"] = "localhost"; $params["port"] = "25"; $params["auth"] = false; error_reporting($errorlevel & ~E_WARNING); $mail_object =& Mail::factory("smtp", $params); $res = $mail_object->send($recipients, $headers, $message); error_reporting($errorlevel); return $res; }
nb: это старый код – я не помню, почему мне пришлось маскировать E_WARNING
Похоже, у вас нет установленного почтового сервера. Apache или PHP не отправляют вам письма. Php регистрирует функции для этого, но внутри вы должны настроить почтовый SMTP-сервер для фактической отправки.
Проверьте этот пост .
Просто посмотрите « Как отправить электронную почту с PHP-скрипта ». Он использует почтовую функцию для отправки почты, а также предоставляет конфигурацию для локальной и удаленной конфигурации SMTP.
Существует множество способов отправки электронной почты через PHP. Использование внутренней функции mail()
является первой, если вы не используете какую-либо фреймворк. Я предлагаю использовать компонент Zend_Mail в Zend Framework . Я работал с ним, и он работает очень хорошо и предоставляет вам хороший объектно-ориентированный способ отправки писем с помощью PHP. Но если у вас есть причины использовать функцию mail()
, я думаю, вам, возможно, понадобится знать следующее: PHP mail()
не отправляет сам по электронной почте. Он использует другие инструменты для отправки электронных писем. Если вы запускаете свое приложение в системах Unix, mail()
пытается отправить электронное письмо с помощью программы sendmail, которая обычно устанавливается в большинстве Unix-подобных систем. На платформах Windows не установлен sendmail, поэтому PHP попытается отправить электронное письмо с помощью SMTP-сервера. поэтому вы должны указать PHP, где находится этот SMTP-сервер, и предоставить ему имя пользователя / пароль SMTP-сервера, если таковые имеются. Вы можете сделать это, отредактировав свой файл конфигурации PHP, php.ini
. Этот файл представляет собой текстовый файл конфигурации, который PHP будет использовать при выполнении. Найдите файл php.ini
и измените эти значения в этом файле:
SMTP = localhost smtp_port = 25 sendmail_from = me@example.com
Если вы не знаете, где находится ваш файл php.ini
, создайте простой файл PHP, например info.php
и поместите в него этот код:
<?php phpinfo(); ?>
Запустите страницу и .ini
поиск .ini
. Теперь вы знаете, где находится ваш файл php.ini
.
Я бы рекомендовал использовать библиотеку swiftmailer, проект имеет очень хорошую документацию и прост в использовании. Он предлагает несколько преимуществ использования функции PHP mail () по умолчанию.