使用AngularJS发送带有附件的邮件时出现问题

时间:2019-01-02 03:02:18

标签: javascript html css angular

我正在使用Angular。当我发送带有电子邮件附件的邮件时,响应是我收到了文件的数据代码,而不是其实际文件格式。 像这样:

enter image description here

我不知道出了什么问题。

这是代码: html:

<div class="uploadfile">
<input fileread="formData.attached" (change)="onFileSelected" type="file" id="real-file" hidden="hidden" />
<button type="button" id="custom-button">Upload CV</button>
<span id="custom-text">No file chosen, yet.</span>
</div>

<!--Script upload -->
<script>
const realFileBtn = document.getElementById("real-file");
const customBtn = document.getElementById("custom-button");
const customTxt = document.getElementById("custom-text");

customBtn.addEventListener("click", function() {
  realFileBtn.click();
  });

realFileBtn.addEventListener("change", function() {
     if (realFileBtn.value) {
    customTxt.innerHTML = realFileBtn.value.match(
      /[\/\\]([\w\d\s\.\-\(\)]+)$/
     )[1];
     } else {
      customTxt.innerHTML = "No file chosen, yet.";
        }
    });
    </script>
<!--End of Script upload -->

app.js:

myApp.directive("fileread", [function () {
    return {
        scope: {
            fileread: "="
        },
        link: function (scope, element, attributes) {
            element.bind("change", function (changeEvent) {
                var reader = new FileReader();
                reader.onload = function (loadEvent) {
                    scope.$apply(function () {
                        scope.fileread = loadEvent.target.result;
                    });
                }
                reader.readAsDataURL(changeEvent.target.files[0]);
            });
        }
    }
}]);

希望您能提供帮助。 预先感谢。

1 个答案:

答案 0 :(得分:0)

在您附加的图像中,我看到该文件实际上是基于64的字符串。所以问题出在您的角度代码上。

reader.readAsDataURL(changeEvent.target.files[0]);

readAsDataURL将返回base64编码的字符串。您可以在此处FileReader.readAsDataURL()

检查链接

因此,您仅在电子邮件中收到字符串,但未收到实际文件。因此,您应该指定文件名和编码= base64。

我不确定您所使用的后端技术。您可以在此处查看示例nodeJs代码。

const mailOptions = {
  ...
  attachments: [
    {   // encoded string as an attachment
      filename: yourFileName,
      content: fileString,
      encoding: 'base64'
    }
  ]
};