WAV скачать с электронной почты

В настоящее время у нас есть PHP-скрипт, который обращается к нашим электронным письмам и извлекает .wav файлы для доступа к голосовой почте.

Но новая система голосовой почты отправляет .wav как это: 01359272577 03-14-16 20h14.wavгде старая система сделала это так: msg100.wav,

Скрипт загружает файлы wav, когда нет пробелов. Я не могу понять, почему он этого не сделает, если в имени файла есть пробелы.

РЕДАКТИРОВАНИЕ Смотрите ниже новый скрипт без SQL. Он делает все как следует, но не извлекает файл, если в имени исходного файла есть пробелы.

РЕДАКТИРОВАНИЕ Игра вокруг еще больше. Если вы отправите письмо еще раз. Но сначала перетащите файл на рабочий стол, а затем обратно в электронное письмо. Он сбрасывает 1 КБ, а затем помещает файл в папку и работает на 100%

Может кто-нибудь помочь мне понять это?

Немного отладки в отношении к файлу можно увидеть ниже.

файл, который не был извлечен.

 Extracting D:/Voicemail/Messages/test/01359272577 2016-03-14 19-47-30.wav...
stdClass Object ( [type] => 1 [encoding] => 0 [ifsubtype] => 1 [subtype] => MIXED [ifdescription] => 0 [ifid] => 0 [ifdisposition] => 0 [ifdparameters] => 0 [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => boundary [value] => multipart-mixed-boundary ) ) [parts] => Array ( [0] => stdClass Object ( [type] => 0 [encoding] => 0 [ifsubtype] => 1 [subtype] => HTML [ifdescription] => 0 [ifid] => 0 [lines] => 1 [bytes] => 247 [ifdisposition] => 0 [ifdparameters] => 0 [ifparameters] => 0 [parameters] => stdClass Object ( ) ) [1] => stdClass Object ( [type] => 3 [encoding] => 3 [ifsubtype] => 1 [subtype] => OCTET-STREAM [ifdescription] => 0 [ifid] => 0 [bytes] => 48250 [ifdisposition] => 1 [disposition] => attachment [ifdparameters] => 1 [dparameters] => Array ( [0] => stdClass Object ( [attribute] => filename [value] => 01359272577 03-14-16 19h47.wav ) ) [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => name [value] => 01359272577 03-14-16 19h47.wav

Файл, который сделал.

Extracting D:/Voicemail/Messages/test/01359272577 2016-03-15 16-15-11.wav...
stdClass Object ( [type] => 1 [encoding] => 0 [ifsubtype] => 1 [subtype] => MIXED [ifdescription] => 0 [ifid] => 0 [ifdisposition] => 0 [ifdparameters] => 0 [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => boundary [value] => _004_6774455887777E4C8AEAC737C2F28B0D95E27FISERVER2infusions_ ) ) [parts] => Array ( [0] => stdClass Object ( [type] => 1 [encoding] => 0 [ifsubtype] => 1 [subtype] => ALTERNATIVE [ifdescription] => 0 [ifid] => 0 [ifdisposition] => 0 [ifdparameters] => 0 [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => boundary [value] => _000_6774455887777E4C8AEAC737C2F28B0D95E27FISERVER2infusions_ ) ) [parts] => Array ( [0] => stdClass Object ( [type] => 0 [encoding] => 4 [ifsubtype] => 1 [subtype] => PLAIN [ifdescription] => 0 [ifid] => 0 [lines] => 6 [bytes] => 152 [ifdisposition] => 0 [ifdparameters] => 0 [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => charset [value] => us-ascii ) ) ) [1] => stdClass Object ( [type] => 0 [encoding] => 4 [ifsubtype] => 1 [subtype] => HTML [ifdescription] => 0 [ifid] => 0 [lines] => 70 [bytes] => 2137 [ifdisposition] => 0 [ifdparameters] => 0 [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => charset [value] => us-ascii ) ) ) ) ) [1] => stdClass Object ( [type] => 4 [encoding] => 3 [ifsubtype] => 1 [subtype] => WAV [ifdescription] => 1 [description] => 01359272577 03-15-16 16h05.wav [ifid] => 0 [bytes] => 87660 [ifdisposition] => 1 [disposition] => attachment [ifdparameters] => 1 [dparameters] => Array ( [0] => stdClass Object ( [attribute] => filename [value] => 01359272577 03-15-16 16h05.wav ) [1] => stdClass Object ( [attribute] => size [value] => 67660 ) [2] => stdClass Object ( [attribute] => creation-date [value] => Tue, 15 Mar 2016 16:14:54 GMT ) [3] => stdClass Object ( [attribute] => modification-date [value] => Tue, 15 Mar 2016 16:14:54 GMT ) ) [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => name [value] => 01359272577 03-15-16 16h05.wav

Это мой код:

<?php

$MSG_DIR = "D:/Voicemail/Messages";
$USER = "XX";
$PASS = "XX";

// connect to server
echo "Opening mailbox...\n<br/>";
$host = "{localhost:143/imap4/novalidate-cert}Inbox";
$mbox=imap_open($host,$USER,$PASS, NULL, 1, array('DISABLE_AUTHENTICATOR' => 'GSSAPI')) or die("Can't connect: " . imap_last_error());

// iterate over mailbox
echo "Finding emails...\n<br/>";
$MC = imap_check($mbox) or die("Can't check for messages");

$overview = imap_fetch_overview( $mbox, "1:".$MC->Nmsgs, 0 ) or die( "Can't get headers");
$countThis = 0;
foreach ( $overview as $email )
{
$subject = $email->subject;
$udate = $email->udate;
if( preg_match('/Voice Message from ([0-9]+)/', $subject, $groups) )
{
$filename = $MSG_DIR."/".$groups[1].date(" Y-m-d H-i-s", $udate).".wav";

if( file_exists( $filename ) )
{
echo "Skipping $filename...\n<br/>";
}
else
{
echo "Extracting $filename...\n<br/>";
$structure = imap_fetchstructure($mbox,$email->uid, FT_UID) or die( "could not fetch structure");
foreach ( $structure->parts as $part )
{
if( $part->subtype == "X-WAV" || $part->subtype=="WAV")
{
// found it!
$body = imap_base64( imap_fetchbody( $mbox, $email->uid, 2, FT_UID ) ) or die( "Could not fetch part");
file_put_contents( $filename, $body );
}
else
{
}
}
}
$countThis++;
}
}
echo "Found $countThis voicemails\r\n";

imap_close($mbox);  ?>

3

Решение

Добавлено ниже

$part->subtype=="OCTET-STREAM"

до конца

 if( $part->subtype == "X-WAV" || $part->subtype=="WAV")

Казалось бы, массив подтипов файлов голосовой почты NEC SV8100 — это не WAV, а OCTET-STREAM.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]