я работаю с классом для синтаксического анализа и просмотра сообщений электронной почты и он прекрасно работает: https://github.com/barbushin/php-imapbarbushin IMAP-PHP получить вложения, как сохранять вложения на сервере
Теперь я пытаюсь сохранить вложения на сервер, но ив никогда не работал с вложениями электронной почты, прежде чем не уверен, как это работает.
Это мой код для вторя из писем:
header('Content-Type: text/html; charset=utf-8');
require_once('php_imap/IncomingMail.php');
require_once('php_imap/Mailbox.php');
//require_once('PHPMailer/class.phpmailer.php');
use PhpImap\Mailbox as ImapMailbox;
use PhpImap\IncomingMail;
use PhpImap\IncomingMailAttachment;
$mailbox_name = "[email protected]";
$mailboxPassword = "xxxxxxxxxxxx";
// Accessing the mailbox
$mailbox = new PhpImap\Mailbox('{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX', $mailbox_name, $mailboxPassword);
$mails = array();
$mailsIds = $mailbox->searchMailBox('UNSEEN');
if(!$mailsIds) {
die('Mailbox is empty');
}
foreach ($mailsIds as $mailId){
$mail = $mailbox->getMail($mailId);
echo "---------------------------Start of Email ---------------------------" . "<br />";
echo $mail->date . "<br />";
echo "From: " . $mail->fromName . " - " . $mail->fromAddress . "<br />";
if($mail->cc){
echo "CC: " . $mail->cc . "<br />";
}
echo "Subject: " . $mail->subject . "<br /><br />";
if($mail->textHtml == NULL){
echo $mail->textPlain;
}else{
echo $mail->textHtml;
}
echo "<br /><br />";
echo "---------------------------End of Email ---------------------------";
echo "<br /><br /><br /><br /><br /><br />";
echo "attachments: ";
echo "<PRE>";
var_dump($mail->getAttachments());
echo "</PRE>";
}
Теперь содержимое электронной почты приходит из тонкого, вложения вторит такое:
attachments:
array(3) {
["[email protected]"]=>
object(PhpImap\IncomingMailAttachment)#21 (3) {
["id"]=>
string(30) "[email protected]"
["name"]=>
string(12) "image002.jpg"
["filePath"]=>
NULL
}
["[email protected]"]=>
object(PhpImap\IncomingMailAttachment)#12 (3) {
["id"]=>
string(30) "[email protected]"
["name"]=>
string(12) "image004.png"
["filePath"]=>
NULL
}
["[email protected]"]=>
object(PhpImap\IncomingMailAttachment)#32 (3) {
["id"]=>
string(30) "[email protected]"
["name"]=>
string(12) "image005.jpg"
["filePath"]=>
NULL
}
}
Так как путь является недействительным я не уверен, есть ли проблема с моим скриптом, или если это нормально, но без патча, как я могу сохранить изображения на своем сервере, чтобы я мог отображать их по электронной почте. Я сделал кучу googling, но я думаю, что это может быть другое приложение с этим классом, и на самом деле нет никакой документации, которую я могу найти. С чем я борюсь, я не понимаю концепцию вложений электронной почты.
Вложения, отправленные как $ _POST, я могу переместить их из временной папки в постоянную, потому что у меня есть значение пути в файле $ _files, но здесь у меня есть только идентификатор изображения и имя изображения, поэтому я не уверен, где изображение на самом деле есть. Любые идеи о том, как взять информацию о вложении и сохранить файлы на сервере, чтобы я мог отображать их для пользователя?