Frage

Ich bin mir nicht sicher, ob das überhaupt möglich ist, aber ich versuche, mit dem eine Datei an eine ausgehende E-Mail anzuhängen Mandrill-API über die Schaltfläche zum Hochladen von Dateien (input type="file").Ehrlich gesagt bin ich mir nicht ganz sicher, was document.getElementById('idOfFileInput').value kommt tatsächlich zurück.Ich weiß, dass dies nicht der richtige Ort ist, um eine Anfängerfrage wie diese zu stellen, aber ich habe überall gesucht und kann sie nicht finden (ich weiß, dass einer von Ihnen schlau sein wird und mich innerhalb von fünf Minuten auf einen Artikel verweisen wird).Abgesehen davon habe ich jedoch eine TXT-Datei erhalten, die ich der Nachricht beifügen kann C:\fakepath\test.txt, von dem ich weiß, dass er der Dateipfad ist, den der Browser aus Sicherheitsgründen angibt.Vielleicht ist es besser im Code zu fragen:

Taste:

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

JS:

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

Es tut mir leid, wenn dies eine einfache Frage ist, die durch ihren Kontext verschleiert wird, aber selbst wenn dem so ist, habe ich das Gefühl, dass diese Frage eine gute zukünftige Referenz sein könnte, weil ich seit einer Woche Dinge ausprobiert habe und nach einer Art von Frage gesucht habe Lösung, aber ich konnte keine finden.Irgendwelche Ideen?

War es hilfreich?

Lösung

Wenn Sie eine Datei anhängen möchten, können Sie sich den AJAX-Datei-Upload ansehen

Die Mandrill-API erfordert eine Base64-codierte Zeichenfolge der Datei. Wenn Sie also die Datei hochladen können, können Sie den Server problemlos veranlassen, eine Base64-codierte Zeichenfolge zurückzugeben, die Sie in der API verwenden können.

Es gibt viele Plugins, die Dateien über Ajax hochladen. Wenn Sie eine JavaScript-Bibliothek wie jQuery verwenden, können Sie sich diese ansehen jQuery-Datei-Upload

Wenn Sie verwenden PHP zum Beispiel:

$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));

Ich habe mich für das Beispiel kurz gehalten, aber Sie sollten die Dateitypen usw. überprüfen und nicht einfach davon ausgehen, dass es sich um eine OK-Datei handelt

und das 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...');
        }
    }
});

Andere Tipps

Ich habe mir das ausführlich angesehen und es scheint, dass es unmöglich ist, Datei-Upload-Eingaben mit der Mandrill-API für Anhänge zu verwenden.Ein Server ist erforderlich, um irgendetwas mit a zu tun file type="input" aufgrund der Sicherheitsbeschränkungen, die von Browsern eingeführt wurden.

Ich konnte dies umgehen, indem ich das verwendet habe Ink-Dateiauswahl-API am Ende der E-Mail einen sicheren Download-Link zu einer Datei zu platzieren, aber das sieht ein wenig faul aus.Natürlich wäre es besser, dies nativ zu tun, aber wie ich bereits sagte, scheint das unmöglich zu sein.

Dieser Kompromiss ist jedoch in gewisser Weise besser als die native Art:Mit der Ink-API können Benutzer neben dem klassischen Datei-Upload auch von einer Vielzahl von Diensten hochladen, was sowohl die Erweiterbarkeit als auch die Benutzerfreundlichkeit des Datei-Upload-Mechanismus verbessert.

Die Verwendung eines Links für Anhänge sieht immer noch verdächtig aus, aber ich konnte die Spam-Anfälligkeit der Methode minimieren, indem ich den Dateinamen verwendet habe (auf den Sie über die API Zugriff haben):

Dateiname] (hyperlinks zum direkten Download -Link) wurde dieser E -Mail beigefügt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top