mailgun send inline image не работает?
Я использую mailgun для отправки почты. Я пытаюсь использовать Python API
pwd = "path-to-image/logo.png"
return requests.post(
"https://api.mailgun.net/v2/sandboxsomething.mailgun.org/messages",
auth=("api", "key-something"),
files=[("inline", open(pwd)),],
data={"from": src,
"to": des,
"subject": sub,
"html": message})
но он не может отправить изображение.
после этого я пытаюсь показать только png файл при печати print open(pwd).read()
Я получил:
�PNG
none
но когда я пытаюсь print open('path-to-image/a.txt')
Я получаю содержимое файла:
all content of a.text
none
Почему png
файл не читается?
3 ответа
Открытое изображение должно быть:
open(pwd,"rb")
для чтения в двоичном режиме.
Немного поздно, чтобы ответить на это, но я также искал решение и не мог найти онлайн. Я закодировал свой собственный, и я учил, что делюсь этим здесь.
Когда почтовое оружие отправляет новое сообщение конечной точке, оно анализирует встроенные изображения как вложения. Вот исправление, чтобы сохранить изображения встроенными с помощью PHP.
//Handling images
if(!empty($_FILES)){
//Remove <> from string to set proper array key
$inline_images=str_replace(array('<', '>'), '', $_POST['content-id-map']);
//Get inline images
$inline_images=json_decode($inline_images, true);
if(!empty($inline_images)){
foreach($inline_images as $key=>$i){
if(isset($_FILES[$i])){
//Now we have the inline images. You upload it to a folder or encode it base64.
//Here is an example using base64
$image=file_get_contents(base64_encode($_FILES[$i]['tmp_name']));
//Now, we will str_replace the image from the email body with the encoded 6ase64 image.
$_POST['body-html']=str_replace('cid:'.$key, 'data:image/png;base64,'.$image, $_POST['body-html']);
}
}
//Parsing actual attachments
//Unset all inline images from attachments array
foreach($inline_images as $i){
unset($_FILES[$i]);
}
//Now, since we have removed all inline images from $_FILES. You can add your code to parse actual attachments here.
}
}
Вот вам и простой способ разбора встроенных вложений с помощью mailgun.
open(pwd,"rb")
Вы можете использовать эту ссылку: /questions/17761382/smuschaet-rezhim-fajla-python-w/17761396#17761396