Вопрос

Я не уверен, что это возможно, но я пытаюсь прикрепить файл в исходящую электронную почту с помощью Mandrill API из кнопки загрузки файла (input type="file"). Если честно, я не совсем уверен, что Renacodicetacode на самом деле возвращает. Я знаю, что это не место, чтобы задать вопрос на новичок такой, но я посмотрел повсюду, и я не могу его найти (я знаю, что один из вас будет похищен и укажет мне какую-то статью в течение пяти минут). Кроме того, в стороне, я получил файл .txt, чтобы прикрепить к сообщению document.getElementById('idOfFileInput').value, который я знаю, чтобы быть пункт файла, который браузер дает для безопасности. Может быть, лучше спросить в коде:

кнопка:

Attachment(s):&nbsp;&nbsp;<input type="file" id="file">
.

js:

"attachments": [
        {
            "type": "text/*",
            "name": "file_attachment",
            "content": document.getElementById('file').value
        }
    ],
.

Извините, если это простой вопрос, замаскированный его контекстом, но даже если это так, у меня есть ощущение, что этот вопрос может быть хорошим будущим ссылкой, потому что я пробую вещи на неделю и ищу Некоторые виды решения, но я не смог найти один. Любые идеи?

Это было полезно?

Решение

Если вы хотите прикрепить файл, вы можете посмотреть на файл ajax загрузка файла

Mandrill API требует кодированной строки файла Base64 файла, поэтому, если вы можете загрузить файл, вы можете легко сделать сервер возвращать строку в кодировке BASE64 для вас для использования в API ..

Есть много плагинов, которые загружают файлы через ajax, и если вы используете библиотеку JavaScript, подобную jQuery, вы можете посмотреть на jquery файл загрузка

Если вы используете php , например:

$result = array();
$result['status'] = 'error';
if(isset($_FILES["mandrill_attachment"]))
{
    $base64 = base64_encode(file_get_contents($_FILES["mandrill_attachment"]["tmp_name"]));
    $result['base64'] = $base64;
    $result['status'] = 'ok';
}

die(json_encode($result));
.

Я сохранил это короткое время для примера, но вы должны проверить типы файлов и т. Д., Не просто предполагая, что это файл OK

и JS

var mandrill_attachment = false;

$(".attachment").uploadFile({
    url: "upload.php",
    dragDrop:false,
    multiple:false,
    autoSubmit:true,
    fileName: "mandrill_attachment",    
    returnType:"json",
    onSuccess:function(files,data,xhr)
    {
        if( data.status == 'ok' )
        {
            mandrill_attachment = data.base64;
        } else {
            alert('something went wrong...');
        }
    }
});
.

Другие советы

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

Я смог обойти это, используя, используя Picker файлов для чернил API для размещения загрузки ссылки на скачивание В нижней части электронной почты в файл, но это выглядит немного рыбным. Это, очевидно, было бы лучше сделать это в родом, но, как я уже сказал, что кажется невозможным.

Этот компромисс, однако, имеет несколько способов лучше , чем у родного способа: API чернил позволяет пользователям загружать из различных услуг, а также классическую загрузку файлов, которая улучшает как расширяемость и простота использования механизма загрузки файла.

Использование ссылки для вложений все еще выглядит подозрительно, но я смог минимизировать спамильность метода с помощью имени файла (которое API дает вам доступ к):

[Имя файла] (гиперссылка на прямую ссылку для скачивания) было приложено к этому электронная почта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top