За последние 24 часа нас посетили 15093 программиста и 1753 робота. Сейчас ищут 1482 программиста ...

PHP SMTP - русские буквы

Тема в разделе "Работа с почтой", создана пользователем Blizzard.EA, 22 июн 2011.

  1. Blizzard.EA

    Blizzard.EA Активный пользователь

    С нами с:
    22 июн 2011
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте.
    Помогите пожалуйста.
    Ниже приведённый код служит для отправки письма через Exchange 2003.
    Отправляет он нормально, но только английский текст.
    Русский текст воспринимает как иероглифы (привет)
    Перепробовал с кодировками через iconv но никак.

    Код (Text):
    1. <?php
    2.     header('Content-Type: text/plain;');
    3.     ob_implicit_flush();
    4.  
    5.     $head = strip_tags ($_POST['head']);
    6.  
    7.     $msg = $_POST['msg'];
    8.        
    9.     $address = '192.168.1.1';
    10.     $port    = 25;          
    11.    
    12.     $login   = 'my.login';    
    13.     $pwd     = 'my.secret.password';  
    14.    
    15.     $from    = 'my.login';  
    16.     $to      = 'to.techsupport@network.local';  
    17.    
    18.     $subject = "$head";
    19.     $message = "$msg";          
    20.  
    21.     try {
    22.        
    23.      
    24.         $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    25.         if ($socket < 0) {
    26.             throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n");
    27.         }
    28.  
    29.        
    30.        
    31.         $result = socket_connect($socket, $address, $port);
    32.         if ($result === false) {
    33.             throw new Exception('socket_connect() failed: '.socket_strerror(socket_last_error())."\n");
    34.         } else {
    35.            
    36.         }
    37.        
    38.      
    39.         read_smtp_answer($socket);
    40.                
    41.         write_smtp_response($socket, 'EHLO '.$login);
    42.         read_smtp_answer($socket);
    43.                
    44.         write_smtp_response($socket, 'AUTH LOGIN');
    45.         read_smtp_answer($socket);
    46.                
    47.         write_smtp_response($socket, base64_encode($login));
    48.         read_smtp_answer($socket);
    49.              
    50.         write_smtp_response($socket, base64_encode($pwd));
    51.         read_smtp_answer($socket);
    52.        
    53.        
    54.         write_smtp_response($socket, 'MAIL FROM:<'.$from.'>');
    55.         read_smtp_answer($socket);
    56.        
    57.        
    58.         write_smtp_response($socket, 'RCPT TO:<'.$to.'>');
    59.         read_smtp_answer($socket);
    60.                        
    61.         write_smtp_response($socket, 'DATA');
    62.         read_smtp_answer($socket);
    63.                
    64.         $message = "To: $to\r\n".$message;
    65.         $message = "Subject: $subject\r\n".$message;
    66.         write_smtp_response($socket, $message."\r\n.");
    67.         read_smtp_answer($socket);
    68.                
    69.         write_smtp_response($socket, 'QUIT');
    70.         read_smtp_answer($socket);
    71.        
    72.        
    73.     } catch (Exception $e) {
    74.         echo "\nError: ".$e->getMessage();
    75.     }
    76.    
    77.     if (isset($socket)) {
    78.         socket_close($socket);
    79.     }
    80.    
    81.  
    82.     function read_smtp_answer($socket) {
    83.         $read = socket_read($socket, 1024);
    84.        
    85.         if ($read{0} != '2' && $read{0} != '3') {
    86.             if (!empty($read)) {
    87.                 throw new Exception('SMTP failed: '.$read."\n");
    88.             } else {
    89.                 throw new Exception('Unknown error'."\n");
    90.             }
    91.         }
    92.     }
    93.    
    94.    
    95.     function write_smtp_response($socket, $msg) {
    96.         $msg = $msg."\r\n";
    97.         socket_write($socket, $msg, strlen($msg));
    98.     }
    99.  
    100. ?>