The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Как отправить письмо с аттачем на PHP (php base64 mail)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: php, base64, mail,  (найти похожие документы)
Date: Wed, 25 Sep 2002 08:55:00 +0600 From: Eugene Belyaev <Eugene_Belyaev@p210.f83.n469.z2.fidonet.org> Newsgroups: ftn.ru.php Subject: Как отправить письмо с аттачем на PHP VK> Как сделать аттач к е-мейлy пpи отпpавке его с помощью фyнкции mail? <? function XMail( $from, $to, $subj, $text, $filename) { $f = fopen($filename,"rb"); $un = strtoupper(uniqid(time())); $head = "From: $from\n"; $head .= "To: $to\n"; $head .= "Subject: $subj\n"; $head .= "X-Mailer: PHPMail Tool\n"; $head .= "Reply-To: $from\n"; $head .= "Mime-Version: 1.0\n"; $head .= "Content-Type:multipart/mixed;"; $head .= "boundary=\"----------".$un."\"\n\n"; $zag = "------------".$un."\nContent-Type:text/html;\n"; $zag .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n"; $zag .= "------------".$un."\n"; $zag .= "Content-Type: application/octet-stream;"; $zag .= "name=\"".basename($filename)."\"\n"; $zag .= "Content-Transfer-Encoding:base64\n"; $zag .= "Content-Disposition:attachment;"; $zag .= "filename=\"".basename($filename)."\"\n\n"; $zag .= chunk_split(base64_encode(fread($f,filesize($filename))))."\n"; if (!@mail("$to", "$subj", $zag, $head)) return 0; else return 1; } ?>

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Роман Теннер (?), 09:27, 09/09/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Класс! Код заработал с первого раза! Я кучу сайтов перекопал. Везде есть примеры, но не рабочие, или с ошибками. Народ хоть сам-то смотрит, чего другим советует?
     
  • 1.2, Андрей (??), 11:42, 21/09/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нет слов, молодец!
     
  • 1.3, Тема (?), 09:48, 25/10/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А как два и более файла отправить?
     
     
  • 2.4, Slv (?), 22:23, 14/12/2004 [^] [^^] [^^^] [ответить]  
  • +/
    Нет ничего проще...
    Достаточно дописать...

    $zag      .= "------------".$un."\n";
    $zag      .= "Content-Type: application/octet-stream;";
    $zag      .= "name=\"".basename($filename2)."\"\n";
    $zag      .= "Content-Transfer-Encoding:base64\n";
    $zag      .= "Content-Disposition:attachment;";
    $zag      .= "filename=\"".basename($filename2)."\"\n\n";
    $zag      .= chunk_split(base64_encode(fread($f2,filesize($filename2))))."\n";

    При помощи этого примера удалось даже налету создать rtf и домазать к письму...

     

  • 1.5, bob (??), 12:57, 22/12/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Первый скрипт, который реально все это делает без гвоздей. Молодец.
     
     
  • 2.13, critic (?), 14:05, 29/10/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Как без гвоздей?
    А поле Subject в Base64 запаковать?
     

  • 1.6, PsinA (?), 00:38, 24/02/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    мм..я что-то не очень понял...
    а куда он все это отправляет? где мыло вписывать куда это все придет?
     
  • 1.7, JeWeL (?), 15:40, 20/06/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пишу такой код:
    $filename = "1.JPG";

    $un        = strtoupper(uniqid(time()));
    $m ="HELO\n";
    $m.="MAIL FROM: srz@srz-holding.ru\n";
    $m.="RCPT TO: srz@srz-holding.ru\n";
    $m.="DATA\n";
    $m.="FROM: srz@srz-holding.ru\n";
    $m.="To: srz@srz-holding.ru\n";
    $m.="Subject: SIMPLE TEST\n";
    $m.="MIME-Version: 1.1
    Content-Type: multipart/mixed; boundary=\"----------C0BB13F44576C2\"

    ------------C0BB13F44576C2
    Content-Type: text/plain; charset=Windows-1251
    Content-Transfer-Encoding: quoted-printable

    simple test

    srz                          mailto:srz@srz-holding.ru
    ------------C0BB13F44576C2
    Content-Type: application/octet-stream; name=\"$filename\"
    Content-transfer-encoding: base64
    Content-Disposition: attachment; filename=\"$filename\"

    ";

    $fp = fsockopen("192.168.0.1", 25, &$errno, &$errstr);
    if(!$fp)
    {
    echo "$errstr ($errno)<br>\n";
    }
    else
    {
    fputs($fp,$m);
    fclose($fp);
    echo"That's OK<hr>";
    }
    ---------
    Говорит что все отправлено успешно, а на серваке сервис ругается, что:
    read failed. Error Code=connection reset by peer
    failed to receive message body (250407 bytes). Error Code=connection reset by peer

    отправляет не все типы файлов и не любого размера.
    Подскажите в чем проблема?

     
  • 1.8, Michael Yakovis (?), 21:39, 30/01/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо большое за скриптик. Все четко и понятно.
     
  • 1.10, gomez.ru (?), 14:21, 11/08/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я тут немного доработал этот кодик Функция проверки переменной function ht... большой текст свёрнут, показать
     
  • 1.11, gomez.ru (?), 14:53, 11/08/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Тоже самое, но с проверкой e-mail-ов Функция проверки переменной function ... большой текст свёрнут, показать
     
  • 1.12, gomez.ru (?), 15:15, 11/08/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кстати, как налету переформатировать текст из $text в html и сразу прикрепить его к файлу?
     
  • 1.14, Dmitry (??), 16:07, 12/06/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А нет случайно примера, как отправить html с картинкой? Насколько я знаю, картинки тоже хранятся в аттаче. А в html в атрибуте src хранится имя аттача и какой-то его идентификатор.
     
  • 1.15, Razer (ok), 00:37, 20/10/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Подскажите пожалуйста! Я пользуюсь ниже указанным кодом для отправки формы с прикрепленным файлом (к примеру фотография) на почтовый ящик. У меня всё нормально доходит,а вот фотография не хочет открываться, хотя она и прикреплена, отображается только крести. Сколько я уже скриптов не перепробывал везде так получается, что вся текстовая информация доходит нормально, а вместо прикрепленной фотографии только крестик (т.е. невозможно отобразить!), интересно, что размер прикрепленной фотографии указан в письме правильно.
    Помогите пожалуйста разобраться!
     
  • 1.16, Антон (??), 00:37, 30/10/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У меня та же проблема, только я понял в чем дело, но не знаю как правильно поступить.

    Файл не успевает сохраняться на сервере.

    Код такой:

    if ($_FILES['attach1']['name'] != '')
    {
    $uploadfile1 = $uploaddir.basename($_FILES['attach1']['name']);
    if (!move_uploaded_file($_FILES['attach1']['tmp_name'], $uploadfile1))
    {
    $errors .= 'Не удалось загрузить файл 1.<br/>';
    $uppload1 = 'error';
    }
    else
    {
    $attach1_content = implode('', file ($uploadfile1));
    //$attach1_content = file_get_contents($uploadfile1);
    $mime1 = $_FILES['attach1']['type'];
    }
    }

    т.е. когда забираешь текст с файла, он еще на диск не записался. Если файл маленький - все ок. Если файл большой - приходит либо обрезанный, либо 0 длины.

    Как сделать правильно?

    Желательно избежать функции sleep.

     
  • 1.17, anchar (?), 12:27, 14/05/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    function xmail($from, $to, $subj, $text)
    {
    $un  = strtoupper(uniqid(time()));

    $head = "From: $from\n";
    $head .= "Subject: $subj\n";
    $head .= "X-Mailer: PHPMail Tool\n";
    $head .= "Reply-To: $from\n";
    $head .= "Mime-Version: 1.0\n";
    $head .= "Content-Type: multipart/mixed;";
    $head .= "boundary=\"----------".$un."\"\n\n";

    $zag = "------------".$un."\nContent-Type: text/html;\n";
    $zag .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n";

    $filenames = array_slice(func_get_args(), 4);
    foreach($filenames as $filename)
    {
    if (is_readable($filename))
    {
    $zag .= "------------".$un."\n";
    $zag .= "Content-Type: application/octet-stream;";
    $zag .= "name=\"".basename($filename)."\"\n";
    $zag .= "Content-Transfer-Encoding: base64\n";
    $zag .= "Content-Disposition: attachment;";
    $zag .= "filename=\"".basename($filename)."\"\n\n";
    $zag .= chunk_split(base64_encode(file_get_contents($filename)))."\n";
    }
    }
    return (!@mail($to, $subj, $zag, $head)) ? false : true;
    }

    xmail("a@a", "b@b", "Заголовок", "Сообщение", "site.zip", "photo.jpg");

     
     
  • 2.25, Валерий (??), 16:47, 30/05/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >   $zag .= "Content-Transfer-Encoding: base64\n";
    >   $zag .= "Content-Disposition: attachment;";
    >   $zag .= "filename=\"".basename($filename)."\"\n\n";
    >   $zag .= chunk_split(base64_encode(file_get_contents($filename)))."\n";
    >  }
    > }
    > return (!@mail($to, $subj, $zag, $head)) ? false : true;
    >}
    >
    >xmail("a@a", "b@b", "Заголовок", "Сообщение", "site.zip", "photo.jpg");

    проблему это не решило.. теперь просто не прикладывает файл

     

  • 1.18, Grach (?), 11:20, 02/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ребят, спасибо за примеры и скрипты.
     
  • 1.19, vedemir (?), 11:34, 24/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    лНКЧЯЭ МЮ ЮБРНПЮ.
    ДКЪ МЕЦН МСФМН ОНЯРЮБХРЭ РНРЕЛ,
    ОПХМЕЯРХ ЕЛС ФЕПРБШ,
    Х ЛНКХРЭЯЪ МЮ МЕЦН...
    ЛНКХРЭЯЪ...ЛНКХРЭЯЪ...ЛНКХРЭЯЪ...

    яоюяхан юбрнпс!!!!!!!!!!!!!!!!!!!!!!!!!!

     
  • 1.20, vedemir (?), 11:39, 24/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    domo arigato gozaimasu ^_^
     
  • 1.21, mama (??), 23:23, 27/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    п п╟п╨ п╬я┌п©я─п╟п╡п╦я┌я▄ п©п╦я│я▄п╪п╬ я│ п╟я┌я┌п╟я┤п╣п╪ п╫п╟ PHP (php base64 mail)???????
     
  • 1.22, Витос (?), 20:09, 05/02/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Огромное спасибо, автор!
     
  • 1.23, Гриша (?), 23:56, 11/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо автору, очень полезная вещь.
     
  • 1.24, gunner (??), 20:59, 11/05/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Скопировано с http://phpclub.ru/detail/article/mail#part_7
     
  • 1.26, Just XXX (?), 15:05, 03/04/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё работает, но немогу понять, как можно отправить АНОНИМНОЕ письмо с аттачем (типа с левого адреса)

    что бы обратная связь потом незамучила))

     
  • 1.27, Чапай (?), 18:11, 24/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Автор гений, спасибо
     
  • 1.28, Андрей (??), 20:52, 16/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Отлично работает. Но не отправляет exe или zip.
    Как пофиксить?
     
  • 1.29, tongeren (?), 13:30, 21/11/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Моя функция на три файла function XMail from, to, subj, text, filename, f... большой текст свёрнут, показать
     
  • 1.30, tongeren (?), 13:32, 21/11/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вызывается так XMail( '1@mail.ru', $mailto, $Conff, $StrokaZakaza, $_FILES['fileadd1']['tmp_name'], $_FILES['fileadd1']['name'], $_FILES['fileadd2']['tmp_name'], $_FILES['fileadd2']['name'], $_FILES['fileadd3']['tmp_name'], $_FILES['fileadd3']['name']);
     
  • 1.31, anonfghjk (?), 01:25, 28/12/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Так не вызывается. Выкидывает ошибки. Как прописать несколько файлов аттача с определенными именами в строке вызова функции?

    вызывается так XMail( '1@mail.ru', $mailto, $Conff, $StrokaZakaza, $_FILES['fileadd1']['tmp_name'], $_FILES['fileadd1']['name'], $_FILES['fileadd2']['tmp_name'], $_FILES['fileadd2']['name'], $_FILES['fileadd3']['tmp_name'], $_FILES['fileadd3']['name']);

     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру