За последние 24 часа нас посетили 17862 программиста и 1283 робота. Сейчас ищут 1555 программистов ...

Как отправлять почту с помощью PHP

Тема в разделе "Вопросы от блондинок", создана пользователем Zabini, 21 ноя 2006.

  1. Zabini

    Zabini Активный пользователь

    С нами с:
    21 ноя 2006
    Сообщения:
    3
    Симпатии:
    0
    Подскажите, кто может...как почту отправлять(как работать с SMTP?)... у меня не получается/
     
  2. с SMTP в PHP работать нужно абсолютно точно так же, как и в любях других языках и приложениях. Устанавливать соединение с сокетом и обмениваться текстовыми командами.
     
  3. Zabini

    Zabini Активный пользователь

    С нами с:
    21 ноя 2006
    Сообщения:
    3
    Симпатии:
    0
    у меня не контачит с www.e1.ru... я в питоне пытался так SMTP('mail.e1.ru')... ошибка возникала 10060
     
  4. Zabini

    Zabini Активный пользователь

    С нами с:
    21 ноя 2006
    Сообщения:
    3
    Симпатии:
    0
    причина нашлась..админ нашей сети закрыл порт 25
     
  5. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
  6. draak

    draak Guest

    PHP:
    1. <?php
    2.  
    3. function JC_mail($to,$from,$subject,$message,$f)
    4. {
    5.   for ($i=0; $i<count($f); $i++)
    6.     {
    7.       $attach_file = $f[$i][file_link];
    8.       $filename    = $f[$i][name];
    9.       $file = fopen($attach_file, "r");
    10.       $contents = fread($file, filesize ($attach_file));
    11.       $encoded_attach = chunk_split(base64_encode($contents));
    12.       fclose($file);
    13.  
    14.       $msg_body_f .= "Content-Type: application/octet-stream; name=\"$filename\"\n";
    15.       $msg_body_f .= "Content-Transfer-Encoding: base64\n";
    16.       $msg_body_f .= "Content-Disposition: attachment; filename=\"$filename\"\n\n";
    17.       $msg_body_f .= "$encoded_attach\n";
    18.       $msg_body_f .= "--Message-Boundary\n";
    19.     }
    20.  
    21.   $mailheaders = "From: $from\n";
    22.   $mailheaders .= "Subject: $subject\n";
    23.   $mailheaders .= "X-Mailer: jcda online mailer\n";
    24.   $mailheaders .= "MIME-version: 1.0\n";
    25.   $mailheaders .= "Content-type: multipart/mixed; boundary=\"Message-Boundary\"";
    26.   $msg_body = "\n\n--Message-Boundary\n";
    27.   $msg_body .= "Content-Type: text/html; charset=Windows-1251\n\n";
    28.   $msg_body .= "$message";
    29.   $msg_body .= "\n\n--Message-Boundary\n";
    30.   $msg_body .= $msg_body_f;
    31.  
    32.   if (mail($to, $subject, $msg_body, $mailheaders)) return true; else return false;
    33. }
    34.  
    35. $f=array();
    36. $f[] = array(file_link=>"1.rar", name=>"архив.rar");
    37. $f[] = array(file_link=>"2.jpg", name=>"картинка.jpg");
    38.  
    39. $res = JC_mail("jcda@mail.ru", "admin@mail.ru", "проверка провекра", "<h1>Я текст</h1>",$f);
    40. if ($res) {echo("Ушло");} else {echo("Ошибка, убей сибя апстену");}
    41.   }
    42.  
    43. ?>
    [/code]
    В той-же папке должны быть и 2.jpg, 1.rar - это так для примера.
    Вообще я скрипт накидал за пол часа, я незнаю как правильно писать заголовки в письмах, поэтому вместе с файлами приходит пустой файл (вроде), а может и нет... Но все почтовики его отлично принимают.
    Ах да на всякий случай, если будешь тестировать на локальной машине, не забудь о 2-x вещах (рекомендуется).
    1) строка в теле письма желательна From: $from\n"; хоть ты ее в параметрах и указал у функции mail();.
    2) в твоем php.ini в секции [mail function] параметр sendmail_from должен иметь адрес, такий же что ты используешь в функции mail
    ; For Win32 only.
    SMTP = mail.ru
    smtp_port = 25
    sendmail_from = jcda@mail.ru