JavaScript:是否可以仅使用JavaScript将图像附加到电子邮件中?

JavaScript:是否可以仅使用JavaScript将图像附加到电子邮件中?,javascript,email,frontend,email-attachments,Javascript,Email,Frontend,Email Attachments,我有一个为iOS iPresent应用程序编写的JavaScript应用程序。它为用户提供了一些计算。最后,获取结果并以纯文本形式发送到电子邮件中。此行为通过以下方式实现: var emailSubject = 'Subject'; //email template var emailMessage = '' + 'Dear Mr. / Mrs.,[BR]' + '[BR]' + 'Lorem ipsum ...' + '[BR]' + You

我有一个为iOS iPresent应用程序编写的JavaScript应用程序。它为用户提供了一些计算。最后,获取结果并以纯文本形式发送到电子邮件中。此行为通过以下方式实现:

var emailSubject = 'Subject';

//email template
var emailMessage = '' +

    'Dear Mr. / Mrs.,[BR]' +

    '[BR]' +

    'Lorem ipsum ...' +

    '[BR]' +

    Your result is: '[RESULT]'     
;
下面的函数获取一个电子邮件模板,用数据填充它,然后打开一个邮件对话框

openMailbox: function() {

        var message,
            Message,
            br = '%0D%0A'
        ;

        message = emailMessage
            .replace(/\[BR\]/g, '%0D%0A' )
            .replace(/\[RESULT\]/g, result )
            .replace(/&/, '%26')    

        Message = '' +
            'mailto:' +
            '?subject=' + emailSubject +
            '&body=' + message
        ;

        window.location.href = Message;

    },

这样的电子邮件只是一个纯文本。是否有可能以某种方式增强电子邮件的外观?添加一些样式,例如,在其中附加一个图像或pdf文件,但仅使用前端技术,如JavaScript、HTML、CSS?

纯理论-您可以。但这肯定不是最好的主意

我只是想说清楚。电子邮件由以下几个部分组成:

  • 服务头。这里可以指明发送电子邮件的地址、地址来源、返回路径、主题、dkim签名、dmarc政治和许多其他内容
  • 电子邮件正文。信息本身
  • 电子邮件附件
在客户端上,您应该只生成消息体。从理论上讲,您可以在那里构建整个信件(添加所有需要的标题),然后将其传递给邮件服务器,但很可能这不是一个好的解决方案

后端是更好的地方做这件事,你应该通过那里只有电子邮件正文

同样,您可以通过从图像生成一个base 64字符串并将其附加到带有所需标题的信函中,将图像附件添加到邮件正文中,如下所示:

------------F81BD43094AAFAF6EC4AE17F5F68753C
Content-Transfer-Encoding: base64
Content-Type: image/png; filename="facebook.png"
Content-Disposition: inline; charset=utf-8; filename="facebook.png"
Content-ID: <facebook.png>

iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ
bWFnZVJlYWR5ccllPAAAA9xJREFUeNrEV0toE1EUvUkmxJpEUHQjaFuL9VM34ocWFNEqCrpo60oq
uHNhET8guBDcaEEXgrgRtwoi+Fsp6sZlKYpaSWljqzGmiqS22lKbzudd582beXlvZt70g+Klycz7
nvvOPffmNYaI0NJ+uXNsEq/qFq4Eu80M2cf5o19eG0PaBPg6/7jb5+3J3rCQiMXOfu65/ijW3Hap
M72i/k7TpjpYlEqyCRzU28eGQNYmxOtH9iF0zAXm/XLb3Yo7MqPrMJQfgJHixw6NnnzrrlpIJjV4
21dkCzx/UWABibsp8qc3LvbxdUKbs+Iebl1jA6xpaIRiYfhaXDfJSk1LQN97GbzqRdVzMTgq88Cj
bDA/BJqm0dc659s0reC2UtzEmMofzkJgDELeq6eyLMt505yG7QBlWJyACDJAVXNV/xDU/fbDmJ4E
Yuqc/nhCg2RqifMuOaCbpnAKz1nBc1HRouKBuDMICEqDX9/zMDE6DE2Nq2HJ0jQXdMVMQFnPOnNM
y3QdsAdM3WLqFlNFFJAkrqqiudq5nwg/vryDrqM74diRi5DNpKWo9r4ZgNNXXjIGTNcButzQDfcU
wukxPBRsDhEEW2VoarwE3ec6oP3Q7iiZMgZMzoAdAsPWgEWkKbIT6FO4kHpQrQsHd6yKBvfSmQvf
1YBhmHIKChpQggsh8VjoPNwamX5xLcVJlBgwbQeImAaiCFHUhIoNNn9DY50EODH5G+4/z/E9v5Un
uNAtS9SAYdAa60tXFPzw0S3knVgtAwXnQxFu3euVwul9G27mRTAgxx+U4L5SKxjdk/1QBdQl1gHC
BEEwWFIlMYKUCd54+VMPVKZG3bknpD2ymRoYyT3lh0+ll8Hy2u1yGtIB6g0h4aVYlRHenLs3z8O2
zetDRbdxXT2Uck94u+d1P5zsfsHYcfE0SpFHRzBnfNQhSHU3nPjZDGUHnPgREjpJJgN9zCAsAD3w
a6kxWknwR9DviAI4mcrMGTyZygYOq0kXh6C74EvKQFiOX3jAx149PC0tL30tQ1vXbWFJEEdzdE2I
inzFDURIScVKaiPfyuwqF+WAKoeDk9H3iAZXaSfoAISJMEwDEcCoVvxsVzRNus4oNpsXQ8FyGClM
pxCNj5XnkrpKIFU1oPXl5/joLA7Y1rpv/2zJO59ubovTGdiz94By/NmTRyEhmFMxgb9mGv4H0KAI
fUCx2PwBcYEexm38QqVSAfTf7f8x+MxMhT4K8UQ8dnZwoN/rmBcoRpVx21I1WSV43sa07UyMblDb
fKrdIniN/q82x1wMtZYta313wmnI5UthUwsUvNR74/EfAQYA2LBjPIifyRUAAAAASUVORK5CYII=
------F81BD43094AAFAF6EC4AE17F5F68753C
内容传输编码:base64
内容类型:图片/png;filename=“facebook.png”
内容配置:内联;字符集=utf-8;filename=“facebook.png”
内容ID:
IVBORW0KGGOAAAANSUHEUGAAACAAGCAYAAABZENR0AAAAGXRFWHRTB2Z0D2FYZQBBZG9IZSBJ
Bwfnzvjlywr5ccllpaaaa9xjrefuenRev0toe1euvukmxjpeuhqjaful9vm34ocwfnneqcrpo60oq
uHNhET8guBDcaEEXgrgRtwoi+FSP6SZLKYPASWLJQZGMIQ22LKBZUDD582BEXLVZT70G+Klycz7
nvvOPffmNYaI0NJ+uXNsEq/qFq4Eu80M2cf5o19eG0PaBPg6/7jb5+3J3RCQIMXOUF65/ijW3Hap
M72i/k7TpjpYlEqyCRzU28eGQNYmxOtH9iF0zAXm/XLB3YO7MQPRMJQFGHIXW6NNNZRRLPIJV4
21dkCzx/UWABibsp8qc3LvbxdUKbs+Iebl1jA6xpaIRiYfhaXDfJSk1LQN97GbzqRdVzMTgq88Cj
bDA/BJQM0DC659S0REC2UTZEMMOZKJGDLEQ6EYLMT505YG7QBLWJYACDJAVXNV/xDU/fbDmJ4E
Yuqc/nhCg2RqifMuOaCbpnAKz1nBc1HRouKBuDMICEqDX9/ZMDE6DE2NQ2HJ0QXDMVMQFNPONNM
Y3QDSAM3WLQFLNFJAKRQQQIUDQ5NWG/VRYDRQM74DIRI5DNPKWO9R4ZGNXXJIGTNCBUTZQDFCU
Wukxpbrsdheew2voarwe3ec6op3q7iizmgzmzoadaspwgewkbit6fo4khpqrqshd6ykbvsfsmqvf
1YBHHIKCHPQGGSH8VJOPNWAMX5XLCVJLBGWBQEIMAICFHUHIONN9DY50EODH5G+4/z/E9v5Un
UNTAS9SAYDA60TXFPZW0S3KNVGTAWXNQXFU3EUVHUL9G27MRTAGxx+U4L5SKxjdk/1QBdQl1gHC
BeewfilmyKUCD54+VMPVKZG3bknpD2ymRoYyT3lh0+ll8Hy2u1yGtIB6g0h4aVYlRHenLs3z8O2
zetDRbdxXT2Uck94u+D1P5ZSFSHYCFE0SPFHRZBNQHSHU3NPJZDGUHNPREJPJJGN9ZCASAD3W
A6KXWKNWR9DVIAI4MCRMGTYYGYOKXH6C74EVKQFIOX3JAX149PC0TL30TQ1VxBWFJEEDZE2I
inzFDURIScVKaiPfyuwqF+WAKOEDK9H3iazxasfoisjmewdeccovxsvzrnus4onPSXQ8FYGCLM
pxCNj5XnkrpKIFU1oPXl5/joLA7Y1rpv/2zJO59ubovTGdiz94By/NMTRYEHMxGB9MGV4H0KAI
fUCx2PwBcYEexm38QqVSAfTf7f8x+MxMhT4K8UQ8dnZwoN/rmBcoRpVx21I1WSV43sa07UyMblDb
fKrdIniN/q82x1wMtZYta313wmnI5UthUwsUvNR74/EFAQYA2LBJPIfIfIfruaaasuVORK5cYII=
但在本例中,您不仅要创建字母的主体,还要创建字母本身,并且需要其他标题。比如:

Delivered-To: email@email.com
Return-Path: <email@email.com>
From: =?utf-8?B?0JDQu9C10LrRgdCw0L3QtNGA?= <email@email.com>
Subject: =?utf-8?B?YWRhZA==?=

------------F81BD43094AAFAF6EC4AE17F5F68753C
Content-Type: multipart/alternative; boundary="----------30F28BDC77E3693E345BC2E04E6615BC"

------------30F28BDC77E3693E345BC2E04E6615BC
Content-Type: text/html; charset=utf-8
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head></head>
<body><div align=left>MESSAGE BODY</div>
<hr size=1><div align=left style="height:25px">
交付给:email@email.com
返回路径:
From:=?utf-8?B?0JDQu9C10LrRgdCw0L3QtNGA?=
主题:=?utf-8?B?YWRhZA===
------------F81BD43094AAFAF6EC4AE17F5F68753C
内容类型:多部分/备选;边界=“------------30F28BDC77E3693E345BC2E04E66165BC”
------------30F28BDC77E3693E345BC2E04E66165BC
内容类型:text/html;字符集=utf-8
MIME版本:1.0
内容传输编码:8比特
消息体


否,纯文本电子邮件是纯文本。如果要添加图像,需要发送一封HTML电子邮件,并使用
标记。无论如何,这与JavaScript无关。我们真的可以使用JavaScript发送邮件吗?你能给我们看一下你的代码吗?嗨,谢谢你的提示。我目前正在尝试,但我不知道我应该如何发送这样的电子邮件。正如你在我的问题中看到的,我使用mailto发送消息。是否有其他方法仅使用JavaScript在客户端发送电子邮件?电子邮件由服务器而不是客户端发送。您只是重定向到所需的页面:`window.location.href=Message;`在查询字符串(主题、消息正文等)中使用所需的参数。在那里,后端脚本处理所有这些参数并发送电子邮件。我非常怀疑它是否会将图像附件作为base64编码字符串进行处理。您最好看看可以接受哪些参数。不,正文中不允许使用base64编码。:/太糟糕了!我只希望在客户端解决这个问题……我坚持你在后端解决。:)一个客户做这件事根本不是个好主意。我的老板坚持做前端D