2009-03-11 2 views
1

Я использую ОС Windows Vista. PHP, MySQL как база данных и веб-сервер Apache.Как отправить почту с помощью PHP?

Я хочу отправить уведомление тем, кто хочет присоединиться к моему сайту. Но проблема в том, когда я нажимаю кнопку «Отправить». Он ничего не отправляет на адрес электронной почты пользователя.

Что вы считаете лучшим решением для этого?

<?php 
$to = "[email protected]"; 
$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>"); 
} 
?> 
+0

Можете ли вы показать нам код, который вы пытаетесь использовать для этого? –

+0

Если вы тестируете это локально, убедитесь, что ваша локальная конфигурация smtp установлена ​​... (проверьте ответ serioys sam) – karlipoppins

ответ

2

Используйте Груша класс "Почта", который требует доступа к отдельным сервером 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; 
} 

нб: это старый код - Я не помню, почему мне пришлось маскировать E_WARNING

0

Просто зарегистрируйтесь «How to Send Email from a PHP Script». Он использует почтовую функцию для отправки почты, а также предоставляет конфигурацию для локальной и удаленной конфигурации SMTP.

3

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

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

работает ли PHPmailer в ОС Windows Vista? – 2009-03-11 11:00:07

+1

Я пробовал как на Windows, так и на Linux, и он работает. –

3

Zend_Mail из Zend Framework делает очень аккуратно работу с отправки электронной почты !! Вам не нужно использовать всю Zend Framework, вы можете просто использовать Zend_Mail!

0

Существует множество способов отправки электронной почты через 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 = [email protected] 

Если вы не знаете, где ваш php.ini файл, создать простой PHP файл, как info.php и поместить этот код в нем:

<?php 
phpinfo(); 
?> 

Заполните свою страницу и выполните поиск .ini. Теперь вы знаете, где находится ваш файл php.ini.

0

Похоже, что у вас нет установленного почтового сервера. Apache или PHP не отправляют вам письма. Php регистрирует функции для этого, но внутри вы должны настроить почтовый SMTP-сервер для фактической отправки.

Check this post.

0

Я бы рекомендовал использовать библиотеку swiftmailer, проект имеет очень хорошую документацию и прост в использовании. Он предлагает несколько преимуществ использования функции PHP mail() по умолчанию.

http://swiftmailer.org/

Смежные вопросы