Vložení obrázku z jiné domény do těla emailu
- SamuelThorn
- Člen | 29
Zdravím,
řeším problém s vložením obrázku do těla emailu. Obrázek se
nachází na jiné doméně (static.domain.cz) než samotný web (domain.cz).
Pokud jako druhý parametr metody setHtmlBody
uvedu cestu
‚static.domain.cz‘, pak se sice sestaví správná adresa (po zkopírování
do prohlížeče se obrázek zobrazí), ale běh skriptu skončí chybovým
hlášením laděnky Unable to read file
‚https://static.domain.cz/path/image.png‘.
Předpokládám, že je to způsobeno právě tím, že obrázky jsou na jiné doméně než samotný web. Je to tak? Má to prosím řešení?
- SamuelThorn
- Člen | 29
- allow_url_fopen je povolené
- certifikát je validní, je společný pro obě domény (www i static)
- SamuelThorn
- Člen | 29
Tak jsem o kousek dál. Doklikal jsem se skrz zdrojové soubory až ke
createAttachment
, které používá
file_get_contents()
. Pokud zavolám jen
file_get_contents(url)
, skončím hlášením:
file_get_contents(): SSL operation failed with code 1. OpenSSL Error
messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate
verify failed
- matopeto
- Člen | 395
SamuelThorn napsal(a):
Tak jsem o kousek dál. Doklikal jsem se skrz zdrojové soubory až ke
createAttachment
, které používáfile_get_contents()
. Pokud zavolám jenfile_get_contents(url)
, skončím hlášením:file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
Tzn certifikat nie je validny pre PHP/OpenSSL, pravdepodobne neaktualizovany zoznam root certifikacnych autorit teda ak to je podpisane nejakou znamou a nie custom, pokial custom tak v DEBUG mode pridat certifikacnu custom atoritu, pripadne vypnut overovanie (nedoporucujem)
Tzn stiahnut z najnovsie autority napr z: https://curl.haxx.se/…extract.html ale neviem ako je to dvoverihodne. (existuju weby, ktore to generuju z mozzila/chrome zoznamov)
a potom nastavit v php.ini
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = "c:/WAMP/PHP/cacert.pem"
openssl.cafile = "c:/WAMP/PHP/cacert.pem"
Viac info tu: http://php.net/….openssl.php
Editoval matopeto (2. 6. 2017 14:42)
- SamuelThorn
- Člen | 29
Díky. Certifikát je od SpaceSSL. Ale nakonec to vypadá, že je to nějaký problém v konfiguraci IIS serveru na lokálním stroji, na kterém vyvíjím. Když jsem si to cvičně poslal na „venkovní“ testovací server, tak se to tvářilo, že to funguje.
- SamuelThorn
- Člen | 29
matopeto napsal(a):
a potom nastavit v php.ini
[curl] ; A default value for the CURLOPT_CAINFO option. This is required to be an ; absolute path. curl.cainfo = "c:/WAMP/PHP/cacert.pem" openssl.cafile = "c:/WAMP/PHP/cacert.pem"
Tak jen potvrzuji, že to opravdu bylo cestami k souboru cacert.pem v php.ini. Plus mi ještě na lokálním serveru chybělo rozšíření php_fileinfo.dll. Teď už všechno šlape, jak má.
Děkuju za pomoc.