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

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()?

Мож я туплю? Просто че-то совсем не въеду чего за глюк такой.
 

Фанат

oncle terrible
Команда форума
открыв сокет на почтовый сервер и запихнув ручками.
 

kvf77

Red Devil
Фанат
да я так в общем-то и думал - просто решил уточнить по проще вариант. Просто сокеты это на мой взгляд будет гемор если надо будет скрипт использовать на другом хостинге.
 

Фанат

oncle terrible
Команда форума
как раз, наоборот.
функция, которая общается с почтовиком, укладывается в 20 строчек.
а больше у тебя вариантов никаких нету.
Хотя, может, если сендмейл из командной строки вызвать.
погляди его хелп
 

Alexandre

PHPПенсионер
это работает только убери принты
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;
}
 

kvf77

Red Devil
Alexandre

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