我不确定这是否可能,但我试图将文件附加到带有 山药空气污染指数 从文件上传按钮(input type="file").说实话,我不完全确定是什么 document.getElementById('idOfFileInput').value 实际上返回。我知道这不是问这样一个新手问题的地方,但我已经到处寻找,我找不到它(我知道你们中的一个会狡猾,并在五分钟内将我指向一些文章)。撇开这个不谈,我得到了一个。要随邮件附加的txt文件 C:\fakepath\test.txt, ,我知道这是浏览器为安全提供的文件路径。也许最好在代码中询问:

按钮:

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上传文件,如果你使用的是像jQuery这样的JavaScript库,你可以看看 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...');
        }
    }
});

其他提示

我已经广泛地研究了这一点,似乎不可能将文件上传输入与Mandrill API一起用于附件。服务器需要用一个 file type="input" 因为浏览器已经实施了安全限制。

我已经能够通过使用 墨水文件选择器API 要在电子邮件的底部放置一个安全的下载链接到一个文件,但这看起来有点腥。这显然会更好地做到这一点本身,但是,正如我所说,这似乎是不可能的。

然而,这种妥协在某些方面 更好 比土生土长的方式:Ink API允许用户从各种服务上传,以及经典的文件上传,这提高了文件上传机制的可扩展性和易用性。

使用附件的链接仍然看起来很可疑,但我已经能够通过使用文件名(API允许您访问该文件名)来最大限度地减少该方法的垃圾邮件:

[文件名](超链接到直接下载链接)被附加到这个 电子邮件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top