У меня есть такой сценарий:
<?php
include('Mail.php');
include('Mail/mime.php');
$recip = "me <me@yahoo.com>";
$strSubject = "test subject";
$strMessage = "test message";
$crlf = "\n";
$headers = array('From' => $recip,
'Return-Path' => $recip,
'Subject' => $strSubject);
$mime = new Mail_mime($crlf);
$mime->setTXTBody($strMessage);
$body = $mime->get();
$headers = $mime->headers($headers);
$smtp_params["host"] = "localhost";
$smtp_params["port"] = "25";
$mail =& Mail::factory("smtp", $smtp_params);
//$mail =& Mail::factory('mail');
$confirmation = $mail->send($recip, $headers, $body);
if ($confirmation) echo "accepted";
else echo "not accepted";
?>
У меня на сервере работает postfix. Скрипт не дает мне ошибок php, а postfix ничего не показывает в журнале, когда я выполняю. когда я переключаю заводские строки (переключаю комментирование), скрипт отправляет электронную почту, а postfix регистрирует соединение. Я поместил файлы master.cf и main.cf по умолчанию для постфикса, перезагрузил и перезапустил.
Я не очень хорошо разбираюсь в электронной почте серверов. Любая информация будет полезной. Могут ли где-нибудь храниться сообщения об ошибках, касающиеся невозможности подключения? Я пробовал разные варианты $ smtp_params, но снимаю просто в темноте. Любые идеи очень приветствуются.
На большинстве машин с установленным postfix существует локальный эквивалентный файл sendmail, и, если вы не настроите postfix по-другому, он будет действовать как локальный получатель почты, а это означает, что вам не нужно специально настраивать postfix для приема почты таким образом, если вы отправляете хорошо отформатированное письмо с необходимыми заголовками.
По сути, если он локальный, нет необходимости настраивать грушу так, как будто почтовый сервер находится на другом компьютере.
Ник