Я получаю электронные письма и затем разбираюсь в базе данных.
Но проблема в том, что я могу получить электронную почту, но часть вложения также отображается в браузере. Мне нужно сохранить эту часть вложения в какое-то место. Формат вложения – текстовый / обычный.
вот мой код
<?php $inbox=imap_open("{xyz.com:995/pop3/ssl/novalidate-cert}INBOX", "username", "password"); $count = imap_num_msg($inbox); for($i = 1; $i <= 1; $i++) { $raw_body = imap_body($inbox, $i); echo $raw_body; imap_delete($inbox, 1); } imap_expunge ($inbox); ?>
здесь я получил запрос по электронной почте
Но я не знаю, как сохранить привязанность. Вложение также показано под телом письма, когда я использую imap_body
.
Итак, как я должен отделить эти два …
анализируя почту с помощью imap_fetchstructure (), вы можете получить список для разных частей почты. С imap_fetchstructure () вы фактически интересуетесь интересующими вас частями. Посмотрите последнюю документацию на пример кода в комментариях.
Теперь вы знаете, как извлечь вложения из источника электронной почты из ответа Lars. Я думаю, вам также потребуется декодировать приложение. Для этого вам нужно знать, как он был закодирован. 1. base64_encode () 2. chunk_split ()
Код для кодирования файла выглядит следующим образом:
<?php $body .= "--".$boundary1 . $this->line; $body .= "Content-Type: " . $file_type . "; name=\"" . $file_name . "\"" . $this->line; $body .= "Content-Transfer-Encoding: base64" . $this->line; $body .= "Content-Disposition: attachment; filename=\"" . $file_name . "\"; size=" . $file_size . ";" . $this->line; $body .= $this->line; // empty line $fp = fopen($file_url, 'r'); do { $data = fread($fp, 8192); if (strlen($data) == 0) break; $content .= $data; } while (true); $body .= chunk_split(base64_encode($content)); $body .= $this->line; $body .= $this->line; ?>
Результат выглядит примерно так:
--ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ Content-Type: text/plain; name="sample.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="sample.txt"; size=123; AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
Теперь, чтобы декодировать его, вам нужно сделать 2 вещи снова в обратном порядке. 1. возьмите закодированную часть и разделите все строки так, чтобы у вас была одна строка строки 2. декодировать ее .. и, конечно, сохранить файл на диск 🙂