Программирование > PHP

PHP+Win32+Sending mail - кто объяснит ошибку в логике - пиво!

(1/2) > >>

:
Уже с полгода бьюсь с такой проблемой
Нужно послать письмо от имени васи пупкина (имя юзера с формы) на адрес робота вне моего сервера.

Проблема вот в чем.
Модель 1.
Используем майл, стандартно подставляем в заголовок From: Vasiliy Pupkin
Replay-To: Vasiliy Pupkin
To: robot
и далее по тексту

При этом в настройках php.ini:
[mail function]
SMTP      =   127.0.0.1      
sendmail_from   =   mail@server.com

Ясно что в заголовок попадает 2 адреса
сначла
From: mail@server.com
а ниже
From: Vasiliy Pupkin

И робот берет то один то второй. На робота повлиять не могу.

Модель 2.
Меняю php.ini
[mail function]
SMTP      =   127.0.0.1      
sendmail_from   =   ; закоментировал

Тогда окей, первый фром пустой игнорируется, но!

SMTP локальный не берет письмо так как получает FROM: пусто и отлупит. Нашел один который это пропускает, но он доставку писем теряет периодически ;((( то есть пропущена не только эта проверка.....

Подход 3
Берем сокетом и ручками посылаем письмо

function open_socket($socket) {
   global $smtp_id;
   fputs($socket,"EHLO SP $smtp_id\\r
");
}
function write_current_mail($socket, $from, $header, $email, $subject, $body) {
   fputs($socket,"mail from: $from\\r
");
   fputs($socket,"rcpt to: $email\\r
");
   fputs($socket,"data\\r
");
   fputs($socket,"To: $email\\r
");
   fputs($socket,"Reply-To: $from\\r
");
   fputs($socket,"Subject: $subject\\r
");
   fputs($socket,"$header\\r
");
   fputs($socket,"\\r
");
   fputs($socket,"$body\\r
");
   fputs($socket,".\\r
");  
   fputs($socket, "RSET\\r
");
}
function close_socket($socket) {
   fputs($socket, "QUIT\\r
");
   while(!feof($socket)){
      fgets($socket, "1024");
   }
   fclose($socket);
}

и выполняем сл. последовательность
    $smtp_id="localhost";

    $from=$sFrom;
    $header=$Tall;
    $email=$sTo;
    $subject=$sSubj;
    $body=$sTxt;

    $socket = fsockopen($smtp_id, 25, $errno, $errstr);
    if ($socket) {
      open_socket($socket);
      write_current_mail($socket, $from, $header, $email, $subject, $body);
      close_socket($socket);
      return (true);
    } else {
      return (false);
    }

ну с сокращениями понятно.

Так вот smtp берет а когда роботу шлет то тот постоянно отлупит - вот цитата из логов.

Thread 1: 19:29:38 [--->] : 220 тут адрес верен ESMTP
Thread 1: 19:29:38 [] : 250 unganisha.idrc.ca
Thread 1: 19:29:38 [] : 250 ok
Thread 1: 19:29:38 [] : 250 ok
Thread 1: 19:29:39 [] : 354 go ahead
Thread 1: 19:29:40 [--->] :
Thread 1: 19:29:40 [] : Error:

при этом если письмо аналогичное посылаю почтовым клиентом на тот же адрес с того же адреса то пробелем не возникает.

Просьба ко всем гуру -
как выйти из ситуации? Может есть готовые советы или примеры по
1. Какой SMTP поставить под NT чтобы глюков не было
2. Как отсылать письма сокетом чтобы проблем не было

Я не могу понять на каком этапе что то срывается ;((((


Спасибо всем огромное.
Тем кто поможет постараюсь в долгу не остаться. На самом деле!

AliMamed:
ойой как всего много. не проще ли поставить sendmail под win32 и юзать функцию mail() ?

:
Спасибо за ответ!

А такой есть? Сейчас буду искать. Однако может спасти.

Там есть подводные камни?

:
нашел sendmail for win 32
и ничего не знаю как сделать. Можно выпросить пример php.ini с соответствующей частью?
Можно вообще все вместе с нужным софтном мылом послать.
Буду очень признателен.

:
Вот тута почитай

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии