Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
den_ZiG

Работа с почтовым сервером

20.01.2011, 14:21. Показов 2209. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте ,есть скрипт который подклчается к почтовому серверу просматриваетписьмо и если есть вложения в письме , то сохраняет его .... , все работает , но определенного момента т.е папку для сохранения вложения создает, а сохранять ничего не сохраняет ....
помогите пожалуйста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<? 
include("function.php");
$pop_conn = fsockopen("pop.mail.ru", 110,$errno, $errstr, 10);
print fgets($pop_conn,1024); 
fputs($pop_conn,"USER *****\r\n"); // логин юзера
print fgets($pop_conn,1024); 
fputs($pop_conn,"PASS *****\r\n"); // пароль юзера
print fgets($pop_conn,1024);
 
fputs($pop_conn,"STAT\r\n");
$count = fgets($pop_conn,1024);
$count = explode(' ',$count); //разбивает строку на подстроки
$count = $count[1];
                print_r ($count[1]);
echo "1";
for ($j=1;$j<=$count;$j++) 
    {
        //$text=0;
        $number = "$j";
 
        if (file_exists("$number")) // проверка папки 
        {
            echo "exists <br/>";
        }
        else
        {    
            mkdir("$number");
 
            echo "$number <br/>";
            fputs($pop_conn,"RETR ".$number."\r\n");// чтение письма
            $text.= get_data($pop_conn);
 
            $struct=fetch_structure($text); //функция возвращает заголовки и тело письма
            $mass_header=decode_header($struct['header']);//разбирает все заголовки и выводит массив, в котором каждый элемент является соответсвующим заголовком
        /*  echo "<br>"; // выводит заголовки
            print_r ($mass_header);*/
            $mass_header["subject"] = decode_mime_string($mass_header["subject"]);//кодировка письма
            $type = $ctype = $mass_header['content-type'];
            $ctype = split(";",$ctype); //split делает из строки массив с помощью регулярного выражения.
 
            $types = split("/",$ctype[0]);//split делает из строки массив с помощью регулярного выражения.
            $maintype = trim(strtolower($types[0])); //удаляет пробелы с начало и конца строки
            $subtype = trim(strtolower($types[1])); 
//print_r ($types);
//print_r ($subtype);           
print_r ($mass_header);
            if($maintype=="multipart" and ereg($subtype,"signed,mixed,related"))
            {
                $boundary=get_boundary($mass_header['content-type']);
 
                $part = split_parts($boundary,$struct['body']); // если письмо будет состоять из нескольких частей (текст, файлы и т.д.)
// то эта функция разобьет такое письмо на части (в массив), согласно разделителю boundary
 
                for($i=0;$i<count($part);$i++) 
                {
 
                    $email = fetch_structure($part[$i]);
                    $header = $email["header"];
                    $body = $email["body"];
                    $headers = decode_header($header);
                    $ctype = $headers["content-type"];
                    $cid = $headers["content-id"];
                    $Actype = split(";",$headers["content-type"]);//split делает из строки массив с помощью регулярного выражения.
                    $types = split("/",$Actype[0]);//split делает из строки массив с помощью регулярного выражения.
                    $rctype = strtolower($Actype[0]);
 
                    $is_download = (ereg("name=",$headers["content-disposition"].$headers["content-type"]) || $headers["content-id"] != "" || $rctype == "message/rfc822");
                    if($rctype == "text/plain" && !$is_download) 
                    {
                        $body = compile_body($body,$headers["content-transfer-encoding"],$headers["content-type"]);
                        print $body;
                    }
 
                    elseif($rctype == "text/html" && !$is_download) 
                    {
                        $body = compile_body($body,$headers["content-transfer-encoding"],$headers["content-type"]);
                        print $body;
                    }
                    elseif($is_download) 
                    {
                        $cdisp = $headers["content-disposition"];
                        $ctype = $headers["content-type"];
                        $ctype2 = explode(";",$ctype);
                        $ctype2 = $ctype2[0];
                        $Atype = split("/",$ctype);//split делает из строки массив с помощью регулярного выражения.
                        $Acdisp = split(";",$ctype);//split делает из строки массив с помощью регулярного выражения.
                        $fname = $Acdisp[1];
                        if(ereg("name=(.*)",$fname,$regs))
                        $filename = $regs[1];
                        if($filename == "" && ereg("name=(.*)",$ctype,$regs))
                        $filename = $regs[1];
                        $filename = ereg_replace("\"(.*)\"","\\1",$filename);
                        $filename = trim(decode_mime_string($filename));
                        $ext = explode('.',$filename);
                        $ext = $ext[1];
                        if ($ext=='xls') 
                        {
                            $body = compile_body($body,$headers["content-transfer-encoding"],$ctype2);
                            $ft=fopen("$number/$filename","wb");
                            fwrite($ft,$body);
                            fclose($ft);
                            
                        }
 
                            $ext = explode('.',$filename);
                            $ext = $ext[1];
 
                        if ($ext=='xls') 
                        {
                            $objPHPExcel = PHPExcel_IOFactory::load("$number/$filename");
                            $objPHPExcel->setActiveSheetIndex(0);
                            $aSheet = $objPHPExcel->getActiveSheet();
                            $aSheet->getRowDimension('1')->setVisible(false);
                            $aSheet->getRowDimension('2')->setVisible(false);
                            $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
                            $objWriter->save("$number/$filename"); 
 
                        }
                    }
                }
            }
            
            //fputs($pop_conn,"QUIT\r\n");
        }
    }
 
?>
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.01.2011, 14:21
Ответы с готовыми решениями:

Работа с почтовым сервером (создание/удаление ящика, фильтрация)
Здравствуйте! Скажите пожалуйста, каким образом через PHP можно производить следующие действия: - Создание почтового ящика ...

Работа с почтовым сервером
Почтовый сервер не отвечает на команду &quot;HELO&quot; после того как произошел коннект ...

Безопасность соединения с почтовым сервером.
Установил почтовый клиент Thunderbird для работы с почтовым ящиком на mail.ru. Подключиться к почтовому серверу получается только с...

1
52 / 52 / 4
Регистрация: 10.11.2010
Сообщений: 171
21.01.2011, 09:21
Давайте начнем с того, что код нужно форматировать, для более удобного прочтения. Это во-первых, а во-вторых, зачем вы нам показываете весь скрипт? Он весь содержит ошибки? В таком случае, его проще переписать сначала - это будет проще и быстрее. В противном случае, выложите ту часть кода, которая может содержать ошибки. Поймите, что никто не будет рыться в большом коде, гоняясь за призрачной ошибкой. Тем более, что код оформлен так: тут читаем, тут не читаем, тут рыбу заворачиваем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.01.2011, 09:21
Помогаю со студенческими работами здесь

Проблема с почтовым сервером на FreeBSD
Народ, подскажите плиз, такая проблемка, проблема с почтовым ящиком пользователя, пришел на фирму паролей на ящики никто не оставил ,...

Как работать с почтовым сервером через интернет
Подскажите пожалуйста, как сделать чтобы почта приходила на один компьютер, а пользователи находящияся в разных частях города могли к этому...

Веб-панель управления почтовым сервером на PHP
Добрый день! Есть почтовый сервер(freeBSD,postfix,dovecot,MySql). Нужна веб-панель управления этим сервером, нечто подобное...

Настройка Notes для работы с внешним почтовым сервером(gmail)
Пытаюсь настроить работу с лотусиного клиента для работы с gmail настройка Smtp прошла успешно. Был принят сертификат gmail и отправка...

Работа с сервером
Добрый вечер!Вопрос может быть не по тему,но очень распространенный.Я начинающий веб программист, изучил php,js,node js. Основные языки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru