Как отправить почту с помощью PHP?

Я использую ОС 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>"); } ?> 

У вас есть несколько вариантов:

  • есть встроенная функция почты , но для этого требуется, чтобы на машине выполнялся некоторый MTA, не поддерживал аутентификацию, и вам нужно много работать, чтобы отправлять вложения
  • есть пакет Pear Mail , если вы хотите использовать материал Pear
  • есть хороший класс PHPMailer, который я использовал в последние несколько лет, и он отлично работает. Это нравится, потому что это очень просто и легко включить в ваш проект (просто простой вызов), но мощный

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 () по умолчанию.

http://swiftmailer.org/