Autor Zpráva
Gogo_v
Profil *
Dobrý den,potřeboval bych poradit jak načtu přílohu v e-mailu který je s digitálnim podpisem. Jedná se o emaily z banky s přílohou xml. Potřebuji v podstatě jen vydolovat nějak tu přílohu. Trápím se s tím čtvrtý den a stále jsem na to nepřišel :(

Structure :
stdClass Object ( [type] => 3 [encoding] => 3 [ifsubtype] => 1 [subtype] => X-PKCS7-MIME [ifdescription] => 0 [ifid] => 0 [bytes] => 8006 [ifdisposition] => 0 [ifdparameters] => 0 [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => smime-type [value] => signed-data ) [1] => stdClass Object ( [attribute] => name [value] => smime.p7m ) ) )

Není to šifrované a nemám ani žádný pub klič či heslo. V outlooku to ma normálni přílohu xml kterou otevřu. Potřebuju to dostat do scriptu na parsovani xml.
Děkuji moc za jakykoliv konstruktivní nápad.
Gogo_v
Profil *
Gogo_v:
Dobrý den.
Tak jsem přílohu z mailu nakonec dostal. Ted ale řeším další problém. Pokud je příloha větší jak 16kb tak jsou na konci XML chyby :( zkoumal jsem proč to dělá na žádné limity v nastavení PHP to nevypada ale prostě to dělá nesmyslné znaky na konci nesetkal se s tim náhodou někdo ??
$message = imap_body($mbox, $i, 1); 
$target = 'localfile.data';
$whandle = fopen($target,'w');
stream_filter_append($whandle, 'convert.base64-decode',STREAM_FILTER_WRITE);
fwrite($whandle,$message);
fclose($whandle);


zkoušel jsem to i přes
base64_decode($message);


se stejným výsledkem

<partneraccbank>0100</partneraccbank>
    €€ń 
atd.

Při porovnávání zakodovaného řetězce stejným textem jsem zjistil že je tam pár znaků navíc. netuším ale kde se tam berou :( Při otevření přílohy v outlooku je xml v pořádku. Už si s tím vůbec nevím rady... Děkují moc za pomoc.
Gogo_v
Profil *
Gogo_v:
Další zjištění toto je část zakodovane zprávy base64
eWRHNWxja0ZqWTBKaGJtcytEUW9nSUNBZwSCAkNJQ0E4UTI5dWMzUmgNCmJuUlRlVzFpYjJ3K016QTRQQzlEYjI1emRHRnVkRk41YldKdmJENE5DaUFnSUNBZ0lEeFdZWEpUZVcxaWIydytPREEyTVRB eE1ERTUNClBDOVdZWEpUZVcxaWIydytEUW9nSUNBZ0lDQThSR1Z6WTNKcGNIUnBiMjR4UGp3dlJH VnpZM0pwY0hScGIyNHhQZzBLSUNBZ0lDQWcNClBFUmxjMk55YVhCMGFXOXVNajQ4TDBSbGMyTnlh WEIwYVc5dU1qNE5DaUFnSUNBZ0lEeEVaWE5qY21sd2RHbHZiak0rUEM5RVpYTmoNCmNtbHdkR2x2 YmpNK0RRb2dJQ0FnSUNBOFJHVnpZM0pwY0hScGIyNDBQand2UkdWelkzSnBjSFJwYjI0MFBnMEtJ Q0FnSUNBZ1BFMXYNCmRtVnRaVzUwVkhsd1pVTnZaR1UrTURRNFBDOU5iM1psYldWdWRGUjVjR1ZE YjJSbFBnMEtJQ0FnSUNBZ1BGQmhlVU5qZVQ1RFdrczgNCkwxQmhlVU5qZVQ0TkNpQWdJQ0FnSUR4 UVlYbEJiVzkxYm5RK05EQXdQQzlRWVhsQmJXOTFiblErRFFvZ0lDQWdQQzlZVFc5MlpXMWwNCmJu UStEUW9nSUR3dldGTjBZWFJsYldWdWRENE5Dand2V0VGalkwMXZkajROQ2c9PQ0K 


po dekodování vyleze
ydG5lckFjY0Jhbms+DQogICAgCICA8Q29uc3Rh
bnRTeW1ib2w+MzA4PC9Db25zdGFudFN5bWJvbD4NCiAgICAgIDxWYXJTeW1ib2w+ODA2MTAxMDE5
PC9WYXJTeW1ib2w+DQogICAgICA8RGVzY3JpcHRpb24xPjwvRGVzY3JpcHRpb24xPg0KICAgICAg
PERlc2NyaXB0aW9uMj48L0Rlc2NyaXB0aW9uMj4NCiAgICAgIDxEZXNjcmlwdGlvbjM+PC9EZXNj
cmlwdGlvbjM+DQogICAgICA8RGVzY3JpcHRpb240PjwvRGVzY3JpcHRpb240Pg0KICAgICAgPE1v
dmVtZW50VHlwZUNvZGU+MDQ4PC9Nb3ZlbWVudFR5cGVDb2RlPg0KICAgICAgPFBheUNjeT5DWks8
L1BheUNjeT4NCiAgICAgIDxQYXlBbW91bnQ+NDAwPC9QYXlBbW91bnQ+DQogICAgPC9YTW92ZW1l
bnQ+DQogIDwvWFN0YXRlbWVudD4NCjwvWEFjY01vdj4NCg==


kde je to ztučněné C navíc. Když ho smažu dostanu rozkodované to co tam ma být.

tnerAccBank>
      <ConstantSymbol>308</ConstantSymbol>
      <VarSymbol>806101019</VarSymbol>
      <Description1></Description1>
      <Description2></Description2>
      <Description3></Description3>
      <Description4></Description4>
      <MovementTypeCode>048</MovementTypeCode>
      <PayCcy>CZK</PayCcy>
      <PayAmount>400</PayAmount>
    </XMovement>
  </XStatement>
</XAccMov>


Z jedenácti mailů mám takto špatné zatím dva a netýka se to větsich než 16kb příloh jak jsem se původně domníval. Mám i 24kb přílohu kterou rozkóduju bez chyb.
V obou mailech je jeden znak navíc a u obou je to na stejnem mistě .. v posledním bloku první znak za těmi bílími znaky. Nejvíce mne mate to že v outlooku všechny ty xml rozkoduje správně jinak bych řekl že je to chyba přímo v tom mailu....

Opravdu se s tím nikdo nesetkal ??
Gogo_v
Profil *
Dobrý den.
Tak uz jsem to vyřešil. Pokud to někoho zajímá problém byl opravdu v těch bílých znacích. Ty bloky byly rozdělené hexa 04 82 04 některé ale 04 82 03 nebo 04 82 02 ci 01 a když to nebyla ta první varianta tak patřil k oddělovači i čtvrtý znak. a ve dvou případech se ten 4tý znak vešel mezi (a-z A-Z 0-9) Proto mi to na konci přidávalo znak a rozhodilo dekódování.
Zjevně špatně zpracovávám tu přílohu nicméně lépe to neumím a tak jak to je to funguje.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0