Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: подскажите, где можно почитать про то, как слать прикреплённые файлы
Форумы портала PHP.SU » PHP » Программирование на PHP » подскажите, где можно почитать про то, как слать прикреплённые файлы

Страниц (1): [1]
 

1. dyuchus - 12 Февраля, 2007 - 18:11:11 - перейти к сообщению
собственно весь сабж сформулирован в названии темыУлыбка
2. valenok - 12 Февраля, 2007 - 19:31:49 - перейти к сообщению
Топаем на сайт php.net/
находим ф-цию mail и читаем комментарии

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. if(isset($_POST['submit']))
  5. {
  6.  
  7. // Reads in a file (eml) a user has inputted
  8. function eml_read_in()
  9. {
  10.  
  11.    $file_ext = stristr($_FILES['upload']['name'], '.');
  12.  
  13.    // If it is an eml file
  14.    if($file_ext == '.eml')
  15.    {
  16.  
  17.        // Define vars
  18.        $dir = 'eml/';
  19.        $file = $dir.basename($_FILES['upload']['name']);
  20.        $carry = 'yes';
  21.      
  22.        // Try and upload the file
  23.        if(move_uploaded_file($_FILES['upload']['tmp_name'], $file))
  24.        {
  25.      
  26.            // Now attempt to read the file
  27.            if($eml_file = file($file))
  28.            {
  29.          
  30.                // Create the array to store preliminary headers
  31.                $headers = array();
  32.                $body = '';
  33.                $ii = -1;
  34.  
  35.              
  36.                // For every line, carry out this loop
  37.                foreach($eml_file as $key => $value)
  38.                {
  39.              
  40.                    $pattern = '^<html>';
  41.                  
  42.                    if(((eregi($pattern, $value)))||($carry == 'no'))
  43.                    {
  44.                  
  45.                        // Stop putting data into the $headers array
  46.                        $carry = 'no';
  47.                        $i++;
  48.                        $body .= $value;
  49.                      
  50.                    }
  51.                  
  52.                    else
  53.                    {  
  54.                      
  55.                        // Separate each one with a colon
  56.                        if(($eml_file_expl = explode(':', $value))&&($carry == 'yes'))
  57.                        {
  58.  
  59.                      
  60.                            // The row has been split in half at least...
  61.                            if(isset($eml_file_expl[1]))
  62.                            {
  63.      
  64.                                // Put it into the preliminary headers
  65.                                $headers[$eml_file_expl[0]] = $eml_file_expl[1];
  66.                          
  67.                                // There might be more semicolons in it...
  68.                                for($i=2;$i<=$count;$i++)
  69.                                {
  70.                          
  71.                                    // Add the other values to the header
  72.                                    $headers[$eml_file_expl[0]] .= ':'.$eml_file_expl[$i];
  73.                                  
  74.                                }
  75.                          
  76.                            }  
  77.                          
  78.                        }      
  79.                  
  80.                    }
  81.                  
  82.                }
  83.              
  84.                // Clear up the headers array
  85.                $eml_values = array();
  86.                $eml_values[to] = $headers[To];
  87.                $eml_values[from] = $headers[From];
  88.                $eml_values[subject] = $headers[Subject];
  89.                $eml_values['reply-to'] = $headers['Reply-To'];
  90.                $eml_values['content-type'] = $headers['Content-Type'];
  91.                $eml_values[body] = $body;
  92.              
  93.                unlink($file);
  94.      
  95.                return $eml_values;
  96.              
  97.              
  98.                      
  99.            }
  100.          
  101.        }
  102.      
  103.        else
  104.        {
  105.      
  106.            return '<p>File not uploaded - there was an error</p>';
  107.                      
  108.        }
  109.      
  110.    }
  111.  
  112. }  
  113.  
  114. // Takes information automatically from the $_FILES array...
  115. $eml_pattern = eml_read_in()
  116.  
  117. // Headers definable...through eml_read_in() again, but I'm guessing they'll be the same for each doc...
  118.  
  119. if(mail($eml_pattern[to], $eml_pattern[subject], $eml_pattern[content], $headers)) echo 'Mail Sent';
  120.  
  121. ?>
  122.  
3. dyuchus - 13 Февраля, 2007 - 00:20:27 - перейти к сообщению
не совсем правильно, похоже, был понят вопрос:
у меня есть код скрипта, при помощи которого можно отправлять файлы.
Там в headers прописывается непонятно откуда берущийся код.
Вопрос в том, где почитать про то, как по headers'ам обратно составляется файл.
4. valenok - 13 Февраля, 2007 - 06:16:01 - перейти к сообщению
Как принимать сервером файлы?
5. dyuchus - 13 Февраля, 2007 - 08:25:55 - перейти к сообщению
попробую описать подробно:
из формы передаётся текст сообщения и прикреплённый файл.
Я хочу при помощи mail() отослать и сообщение и файл по почте.
У меня есть скрипт - написан класс, в котором реализована функция типа add_attachment() и несколько вспомогательных для неё. Насколько я понял, основное, что там делдается - это добавляется информация про то, как нужно обрабатывать строку необязательного аргумента additional_headers.
Теперь тогда 2 вопроса:
правильно ли я понимаю - это разУлыбка
и второй:
если павильно, то как при приёме письма распознаётся, что есть прикреплённый файл, как он извлекается из письма.
если нет - опишите в 2 словах, основные моменты того, как происходит передача прикреплённых файлов по электронной почте и где подробнее можно прочитать про то, как использовать необязательный аргумент additional_headers.
6. kamikadze - 13 Февраля, 2007 - 17:02:50 - перейти к сообщению
ща я вам офигетельный и очень маленький пример передачи ( картинки ) опишу

пхп 5


(Добавление)
Очень долго перепечатовать с книги но думаю догадаетесь начало и конец
PHP:
скопировать код в буфер обмена
  1. ..........
  2. $headers = "Content-disposition: attachment; filename=logo.gifn";
  3. $headers .="Content-type: image/gifn";
  4. $headers .="Content-Transfer-Encoding: base64n";
  5. ........  


с книги перепечатал!


блин форум \\\ сьедает


там один надо!


админы покормите форум
7. dyuchus - 13 Февраля, 2007 - 19:27:07 - перейти к сообщению
спасибо.
у меня есть пример написаного класса mime_mail.
В нём написана функция add_attachment(...)
Так там, равно как и вы, дописывют строки типа:
content-..
Я хочу найти не конретный пример, как написать, а найти, откуда те, кто писал это, знают, что надо писать именно content-... и в каком случае.
8. kamikadze - 13 Февраля, 2007 - 21:14:45 - перейти к сообщению
давай немного расскажу про кантент - тайп

это чтото вроде формата

1 часть до / это тип

image

video

audio

application


после / формат (расширение)


если двоичный файл и неизвестно какой то


application/octet-stream


а вот там где трансфер енкординг, дак то я расшифровивал файл который зашифровал в сообщении которого не написал!


юзай Радость
9. dyuchus - 13 Февраля, 2007 - 21:24:58 - перейти к сообщению
всё равно не стало понятней..
смотря на код я могу объснить, почему так написано, а вот сам по аналогии написать не смогуНедовольство, огорчение
поэтому и хочу найти ссылочку, где можно подробно прочесть, как mail-сервер обрабатывает заголовки.
ps: ещё один вопрос, а как установить кодировку на тело письма, которое третим параметром в mail() передаётся?
10. kamikadze - 13 Февраля, 2007 - 21:43:08 - перейти к сообщению
Скажу чесно я сам кофейник, но просто немного всю ету канитель понял и кстати у меня те-же проблемы! Тут не надо расстраиватся , а надо включить интерпритатор и начинать убивать клетки мозга, настроение, и опыт прийдёт! (мне так советуют)\n\n(Добавление)
напиши письмо HTML документом!
11. evgenijj - 14 Февраля, 2007 - 13:45:40 - перейти к сообщению
Я в свое время читал здесь - мне понравилось: все очень доступно описано.
http://www[dot]spravkaweb[dot]ru/sovet/php/mail/about/
http://www[dot]spravkaweb[dot]ru/sovet/php/mail/file/
http://www[dot]spravkaweb[dot]ru/sovet/php/mail/image/

 

Powered by ExBB FM 1.0 RC1