Отправить польностью готовое письмо

  • Автор темы Автор темы kvf77
  • Дата начала Дата начала

kvf77

Red Devil
Отправить польностью готовое письмо

Имеем полностью готовое письмо, это значит, что все заголовки и прочее у него уже есть.

Пример:

-------------------------------------------
From: [email protected]
Subject: =?UTF-8?B?0L/RgNC+0LLQtdGA0LrQsA==?=
To: [email protected]
MIME-Version: 1.0
Content-Type: TEXT/plain; CHARSET=UTF-8
Content-Transfer-Encoding: BASE64

0YLQtdGB0YLQuNGA0YPQtdC8

-------------------------------------------

Никак не удается его правильно отправить. Функции типа mail() или imap_mail()
вставляют туда дополнительные заголовки и в результате письмо приходит
к адресату сломаным и не воспринимается прогами. Как отправить письмо
если оно полностью готово и все заголовки в нем оформлены?

То есть без команд mail() или imap_mail()?

Мож я туплю? Просто че-то совсем не въеду чего за глюк такой.
 
открыв сокет на почтовый сервер и запихнув ручками.
 
Фанат
да я так в общем-то и думал - просто решил уточнить по проще вариант. Просто сокеты это на мой взгляд будет гемор если надо будет скрипт использовать на другом хостинге.
 
как раз, наоборот.
функция, которая общается с почтовиком, укладывается в 20 строчек.
а больше у тебя вариантов никаких нету.
Хотя, может, если сендмейл из командной строки вызвать.
погляди его хелп
 
это работает только убери принты
PHP:
  function xSend($host, $port, $to,$subject,$headers,$message)
  {

 $from="[email protected]";

 print "$to\n$subject\n$headers\n";
  print "\n";
  // Open an SMTP connection

  $connection = fsockopen ($host, $port, &$errno, &$errstr, 1);
  if (!$connection)
   {
   die (" connection to $host failed  $errstr \n");
   return false;
   }

  //print_r( socket_get_status($connection));
  $res =fgets($connection,256);
  print $res;

  // Introduce ourselves
  fputs($connection, "HELO mail.moscowout.ru\r\n");

   $res=fgets($connection,2);
    $status= socket_get_status($connection);
    if ( $status ['unread_bytes']>0 )
                 $res .=fgets($connection, $status ['unread_bytes']);
    print $res."\n";

  // Envelope from
  fputs($connection, "MAIL FROM: $from\r\n");
   $res=fgets($connection,2);
    $status= socket_get_status($connection);
    if ( $status ['unread_bytes']>0 )
                 $res .=fgets($connection, $status ['unread_bytes']);
    print $res."\n";

  // Envelope to
  fputs($connection, "RCPT TO: $to\r\n");
   $res=fgets($connection,2);
    $status= socket_get_status($connection);
    if ( $status ['unread_bytes']>0 )
                 $res .=fgets($connection, $status ['unread_bytes']);
    print $res."\n";

   fputs($connection, "DATA\r\n");
   $res=fgets($connection,2);
    $status= socket_get_status($connection);
    if ( $status ['unread_bytes']>0 )
                 $res .=fgets($connection, $status ['unread_bytes']);
    print $res."\n";

  fputs($connection, "To: $to\nFrom: $from\nSubject: $subject\n$headers\n\n$message\r\n.\r\n");
   $res=fgets($connection,2);
    $status= socket_get_status($connection);
    if ( $status ['unread_bytes']>0 )
                 $res .=fgets($connection, $status ['unread_bytes']);
    print $res."\n";

  fputs($connection,"QUIT\r\n");
   $res=fgets($connection,1);
    $status= socket_get_status($connection);

    if ( $status ['unread_bytes']>0 )
                 $res .=fgets($connection, $status ['unread_bytes']);
    print $res."\n";
   fclose($connection );

  return true;
}
 
Alexandre

спасибо, но я уже сделал - обошлось без сокетов :-) все гораздо проще и быстрее можно сделать. Опишу в статье, посвященной IMAPу
 
Сверху