Autor | Zpráva | ||
---|---|---|---|
notwist Profil |
Zdravím,
používám imap_fetchbody pro zobrazení zprávy. $body = imap_fetchbody($messagemap, $msg, "1.2"); if ($body == "") { $body = imap_fetchbody($messagemap, $msg, "1"); } $body = quoted_printable_decode($body); Pokud mi přijde jakákoliv zpráva, kde není přiložená příloha nebo je příloha vložená přes CID, tak je vše v pořádku. Zpráva může být HTML nebo text. Pokud ale přijde zpráva, kde je přiložená příloha (jako v Outlooku přes sponku), tak se mi nezobrazí korektní text, ale pravděpodobně textově část přílohy (plno znaků). Ukázka: iVBORw0KGgoAAAANSUhEUgAAAKIAAABECAYAAAAC7+6EAAAAAXNSR0ICQMB9xQAAAAlwSFlzAAAO xAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUATWljcm9zb2Z0IE9mZmljZX/tNXEAABXxSURBVHja 7Z0LVFN3nsdp7bY+quUVQkBAw0MIIUDCQ0QEaQhJSEICBOQRoVDBUhZfY/E5orWWtj5KrVV8QniF h1BFZFzOWZldu+u0tD2d2e4sTul0zky704puW9tabeW/v99NwgCGyCNCoNdzfod4c+//3pv/535/ j///3muze/duG9pom2qjfwTaaBBv3rw5t7Gxcd7Vq1cDm5ubU7VabfJgO3funPqjjz7yw3UIIY/Q HUaDaBEDmOZ1dHQEAVjPtba2VgB8PdXV1dfq6+u/hmWkrq6OwGfK8DMug899sM4nOp3uckNDw77O zs41LS0tbLrzaBDHbADPCgDreQDrHQDrDgBIACYCcBGAi4KupqaG1NbWDjFcht/hOk1NTQQUktoO vvs7bNsK3+e2tbW50h1Jg2jWwL1GAyxvA0w/I3wIlBEwULlxGyqmsT0A8sb58+frAPIwukNpEIcY qFY0wNcAwFHqZwn4TBm2iVCePXsWlfO7ixcvVvb09NBA/tJBBAV0AXXSAXiUAqJbtTR8IxnuC4EE uwPuehfEowvoDv4FggiuUQbq9B7GcJMJ4HBD9UUg4XguAZBedCf/QkAE5ZkFScQhAOAuquBUATjc ZWNyAxfG5xBDSuiOnuEglpeXPwGdfmqqVXAkM2Tldy5duvQa3dkzFESA8DFQwRNY63sYiYglY0dU R4hfX6E7fIaBCPDNgo49Ze0QDo4bDaWe/XSnzxAQAb450LnHpguEg2HEGLarq2sb3fEzAERwdbuw Q6cThIPdNCQw34AyrqQ7fxqDCCq4FJTlljUmJmNJYMA+gXOxpwGYhiB2dnY6gQq+g7HWdIVw8BAh atd... Je možné nějak ošetřit, aby v tomto případě se zobrazil text zprávy? Přílohy mám pak vyřešené dalším kódem (zobrazení příloh přes CID v textu mailu, možnost stažení příloh přes odkaz...). Díky. EDIT: Tak jsem to nakonec udělal podle tohoto: www.electrictoolbox.com/php-imap-message-body-attachments a je to OK. Možná se zdejších odborníků ale zeptám na to, jak řeší zobrazování INLINE obrázků z různých serverů (Google, Outlook...). Zdá se mi, že mail je pokaždé v jiné struktuře, jelikož můj kód pro nahrazení příznaku CID na cestu k serveru funguje jen někdy. Používám: $find = '#src="cid:([^"@]*)@([^"]*)"#'; $replace = 'src="prilohyzprav/'.$slozka.'/$1"'; $html_part = preg_replace($find, $replace, $body); $body = $html_part; Neřešil jste to již někdo? Díky. |
||
Davex Profil |
#2 · Zasláno: 24. 9. 2015, 22:30:21
notwist:
„můj kód pro nahrazení příznaku CID na cestu k serveru funguje jen někdy“ Content-ID nemusí obsahovat zavináč. |
||
notwist Profil |
#3 · Zasláno: 24. 9. 2015, 23:19:07
Davex:
A uměl by někdo navrhnout string tak, aby to bralo k úvahu i tuto variantu? Bohužel se zrovna v této problematice moc neorientuji. Díky. |
||
Davex Profil |
#4 · Zasláno: 25. 9. 2015, 00:00:16
Zjednodušeně asi nějak takto:
$find = "~\bsrc=(['\"])cid:(.+?)\\1~i"; $replace = 'src="prilohyzprav/'.$slozka.'/$2"'; Pro větší spolehlivost by asi bylo lepší použít plnohodnotný HTML parser. |
||
notwist Profil |
#5 · Zasláno: 25. 9. 2015, 00:09:00
Davex:
Děkuji za rychlou reakci. Vyzkouším... |
||
Časová prodleva: 5 dní
|
|||
notwist Profil |
#6 · Zasláno: 29. 9. 2015, 13:50:02
Tak toto bohužel nefunguje. Vrátí to prázdný řetězec...
|
||
Časová prodleva: 10 let
|
0