찾아보기 버튼을 사용하여 Mandrill 메시지에 파일 첨부
-
21-12-2019 - |
문제
이것이 가능한지 잘 모르겠지만 다음과 같은 발신 이메일에 파일을 첨부하려고 합니다. 맨드릴 API 파일 업로드 버튼(input type="file"
).솔직히 말해서 뭔지 전혀 모르겠어 document.getElementById('idOfFileInput').value
실제로 돌아옵니다.여기가 그런 초보적인 질문을 하는 곳이 아니라는 것을 알고 있지만 여기저기 찾아봤는데 찾을 수가 없습니다(여러분 중 한 분이 교활해서 5분 안에 어떤 기사를 가리킬 것이라는 것을 압니다).그 외에도 메시지에 첨부할 .txt 파일을 얻었습니다. C:\fakepath\test.txt
, 브라우저가 보안을 위해 제공하는 파일 경로인 것으로 알고 있습니다.어쩌면 코드로 묻는 것이 더 나을 수도 있습니다.
단추:
Attachment(s): <input type="file" id="file">
JS:
"attachments": [
{
"type": "text/*",
"name": "file_attachment",
"content": document.getElementById('file').value
}
],
문맥을 위장한 간단한 질문이라면 죄송합니다만, 그렇더라도 일주일 동안 이것저것 시도해 보고 어떤 유형의 질문을 찾아봤기 때문에 이 질문이 향후 좋은 참고 자료가 될 수 있을 것 같은 느낌이 듭니다. 해결책을 찾았지만 찾지 못했습니다.어떤 아이디어가 있나요?
해결책
파일을 첨부하려면 AJAX 파일 업로드
을 볼 수 있습니다.Mandrill API는 파일의 Base64 인코딩 문자열이 필요하므로 파일을 업로드 할 수있는 경우 서버가 API에서 사용할 수있는 Base64 인코딩 문자열을 쉽게 리턴 할 수 있습니다.
Ajax를 통해 파일을 업로드 할 많은 플러그인이 있으며 jQuery와 같은 Jaubercript 라이브러리를 사용하는 경우 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));
.
예제에 대해 짧게 유지했지만 파일 형식 등을 확인해야합니다.
및 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가 액세스할 수 있는) 파일 이름을 사용하여 메소드의 스팸성을 최소화할 수 있었습니다.
파일 이름] (직접 다운로드 링크와 하이퍼 링크) 이이 이메일에 첨부되었습니다.