Мой текущий проект – это форма, которая получает вход от пользователя. После получения этих данных я должен отправить предупреждение / отчет на несколько адресов электронной почты, включая пользователя, который вставил данные. Почти все работает и работает, Apache, MySQL, PHP.
Теперь я никогда не устанавливал почтовый сервер, чтобы работать с PHP, поэтому я потерян.
У моего работодателя установлен MS Exchange 2007 на его сервере. Должен ли я использовать его, и как я могу настроить php для работы с ним? Что мне нужно от Exchange 2007 (параметры)?
Если нет, предложите ли вы установить новый почтовый сервер именно для этой цели на том же компьютере, на котором есть Apache + MySQL + PHP?
Я более склонен использовать уже существующий Exchange-сервер, но в некоторых онлайн-статьях я читал, что это не самая простая настройка.
ОБНОВИТЬ:
<?php include("Mail/Mail.php"); /* mail setup recipients, subject etc */ $recipients = "mail@mail.com"; $headers["From"] = "mail@mail.com"; $headers["To"] = "someone@mail.com"; $headers["Subject"] = "User feedback"; $mailmsg = "Hello, This is a test."; /* SMTP server name, port, user/passwd */ $smtpinfo["host"] = "mail.name.com"; $smtpinfo["port"] = "25"; $smtpinfo["auth"] = true; $smtpinfo["username"] = "username"; $smtpinfo["password"] = "pass"; /* Create the mail object using the Mail::factory method */ $mail_object =& Mail::factory("smtp", $smtpinfo); /* Ok send mail */ $mail_object->send($recipients, $headers, $mailmsg); ?>
Используя этот пример выше, я не могу отправлять почту через Exchange 2007.
Я не получаю никаких ошибок на странице, поэтому я немного потерян. Не знаю, что не так.
ОБНОВЛЕНИЕ: Может ли кто-нибудь рекомендовать хороший почтовый сервер?
Вероятно, вам нужна аутентификация. Это может быть так же просто, как предоставить свое имя пользователя и пароль учетной записи электронной почты, которую вы хотите отправить.
Если это так, я предлагаю вам использовать расширение PEAR Mail. Существует функция, называемая фабрикой, которая позволяет выполнять аутентификацию с SMTP-сервером. (Включая шифрование SSL, если вы обнаружите, что ваш сервер нуждается в нем)
http://pear.php.net/manual/en/package.mail.mail.factory.php
Ваш код будет выглядеть примерно так:
$smtp = Mail::factory('smtp', array ('host' => $host, 'port' => $port, 'auth' => true, 'username' => $username, 'password' => $password)); $mail = $smtp->send($to, $headers, $body);
Установка PEAR-расширений на вашем сервере не так сложна, как вы думаете.
Exchange поддерживает регулярную доставку почты SMTP (она должна, иначе она не могла бы общаться с остальной частью мира электронной почты), поэтому просто укажите конфигурацию вашего PHP на сервере Exchange, как если бы это был обычный почтовый сервер.
Есть некоторые настройки .ini для почты, которые описаны здесь: http://php.net/manual/en/mail.configuration.php#ini.smtp
Предполагая, что сервер обмена не требует аутентификации и будет принимать почту с вашего сервера, это все, что необходимо.
следовать за:
вы читали документы в пакете Mail? метод send()
возвращает TRUE при успешном PEAR_Error
или объект PEAR_Error
при PEAR_Error
. Он будет содержать любые сведения о сбое попытки отправки, скорее всего, вам понадобится сообщение $PEAR_Error:message
Полная информация здесь: http://pear.php.net/package/PEAR/docs/1.9.1/PEAR/PEAR_Error.html . Измените свой код
$mail_object->send($recipients, $headers, $mailmsg);
в
$status = $mail_object->send($recipients, $headers, $mailmsg); if ($status !== TRUE) { die("Error sending mail: " . $status::message); }
ОК. Получил это, чтобы работать. Уф.
Я узнал причину, прочитав много. Речь шла о проблеме реле с сервером обмена smtp.
Но я бы никогда не попал туда, если бы не люди. XD
Спасибо вам всем. знак равно