- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何添加 List-Unsubsribe : <mailto:abc@cdf.com>
使用 Amazon SES(简单电子邮件服务)时要在我的外发电子邮件中添加 header ?我正在使用 AWS 的 JavaScript SDK。
以下是我查看过但未能找到答案的各种文档链接:Link1 , Link2 , Link3 , Link4 .
我尝试过同时使用 SendMail 和 SendRawEmail API。
使用 SendMail API
let params={
Source: auth.host,
Destination: { ToAddresses: [email] },
Headers:{ListUnsubscribe :'<mailto:abc@def.com>'}, //error unexpected key Headers
Message: {Subject:{Data: subject },Body:{Text: {Data: mail}}}
}
ses.sendEmail(params,(err, data)=>{
if(err){
console.error(err);
}else{
console.log('Email sent: ');
console.log(data);
}
});
使用 SendRawEmail API
var mailOptions = {
from: auth.host,
subject: subject,
text: mail,
to: email,
};
var mail = mailcomposer(mailOptions);
mail.build(function (err, message){
var req = ses.sendRawEmail({RawMessage: {Data: message}});
req.on('build', function() {
req.httpRequest.headers["List-Unsubscribe"] = "<mailto:abc@abc.com>";
});
req.send(function (err, data) {
if(err) //code
else //code
});
});
最佳答案
根据 AWS 文档,您只能使用 SendRawEmail API 指定自定义 header :
The SendRawEmail API provides you the flexibility to format and send your own raw email message by specifying headers, MIME parts, and content types. SendRawEmail is typically used by advanced users. You need to provide the body of the message and all header fields that are specified as required in the Internet Message Format specification (RFC 5322). For more information, see Sending Raw Email Using the Amazon SES API.
这解释了为什么您的第一个示例不起作用。凉爽的。
这就是为什么实际上使用 SendRawEmail API 的第二个示例不起作用。
不幸的是,为了在发送电子邮件时指定自定义 header ,您必须在原始邮件正文中内联指定它们。在制作此原始消息时,您必须遵循一些非常严格的格式要求,否则您的传递可能会失败/输出不正确。尽管它会非常有帮助,但没有可以使用的 api 方法可以让您使用键/值对指定 header 。
此限制可能是因为 AWS 必须解码您的 base64 编码的原始消息(可以是任何类型的 Buffer、blob、类型化数组、字符串),希望您正确格式化您的消息,并插入您的标题在正确的位置。毫无疑问,这会对 API 的最终用户有所帮助,但对于他们来说,这绝对像是一场噩梦,因为他们必须进行所有验证和错误处理。
以下是使用 SendRawEmail API 发送电子邮件的详细要求:
RawMessage — (map) The raw text of the message. The client is responsible for ensuring the following:
Message must contain a header and a body, separated by a blank line. All required header fields must be present. Each part of a multipart MIME message must be formatted properly. MIME content types must be among those supported by Amazon SES. For more information, go to the Amazon SES Developer Guide. Must be base64-encoded. Per RFC 5321, the maximum length of each line of text, including the , must not exceed 1,000 characters. Data — required — (Buffer, Typed Array, Blob, String) The raw data of the message. This data needs to base64-encoded if you are accessing Amazon SES directly through the HTTPS interface. If you are accessing Amazon SES using an AWS SDK, the SDK takes care of the base 64-encoding for you. In all cases, the client must ensure that the message format complies with Internet email standards regarding email header fields, MIME types, and MIME encoding.
The To:, CC:, and BCC: headers in the raw message can contain a group list.
If you are using SendRawEmail with sending authorization, you can include X-headers in the raw message to specify the "Source," "From," and "Return-Path" addresses. For more information, see the documentation for SendRawEmail.
Do not include these X-headers in the DKIM signature, because they are removed by Amazon SES before sending the email. For more information, go to the Amazon SES Developer Guide.
我的两分钱
这看起来确实很不方便。我建议使用像 Sendgrid 这样的服务,它内置了订阅管理(订阅/取消订阅)、模板管理等功能,以及现代专用电子邮件服务应具备的一大堆功能。但是,如果您别无选择,那么您可能会 Revel 于 SendRawEmail API 为您提供大量自定义的事实,但代价是有点乏味。
您可以从 AWS SES Javascript API docs 访问此信息及更多信息:
关于javascript - 在aws-sdk nodejs中列出取消订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49168291/
我的 React 项目需要更新 nodejs。那么我如何将我的 Node js 重新安装到 Ubuntu 16.04 中的最新版本。 我当前的 Node 版本是 node -v v6.0.0 我当前的
我正在寻找逐步调试 NodeJS 服务器代码的有效方法。目前我使用了几十个console.log(),这非常困难。完美的工具可以让我检查堆栈中每个变量的值并逐行跟踪我的程序。首选操作系统 = MacO
我的网站上有以下两个文件: firebase.js gridsome-server.js firebase.js 是一个“常规”javascript 文件,包含以下内容: import firebas
我有一个nodejs应用程序从文件夹A执行,二进制X也在文件夹A中执行(使用子进程exec)。二进制 X 在文件夹 A 中生成输出文件 O,因此始终从调用位置开始。 我需要nodejs应用程序来在仲裁
我有以下nodeJS服务器,它似乎工作正常。我想编写一个客户端,从服务器接收消息并根据消息调用一些 JS。 涉及的步骤是: 用户访问网址http://server.xyz.com:8080/pa no
我想从 Node 服务器进行其余 api 调用。我目前脑子里有请求模块。 您是否会建议用于 Nodejs 中生产实践的 REST 调用(get/post)的任何其他最佳模块? 问候,公羊 最佳答案 R
我正在尝试像这样使用 mainModule: const { mainModule } = require('process'); module.exports = path.dirname(main
我现在对那些版本号真的很困惑。我正在计划一个新项目,想知道这两个版本之间有什么区别。这两个版本之间似乎有很大的跳跃,但现在我找不到区别。 使用 4.1 版安全吗? 感谢您的帮助! 最佳答案 跳转到 v
我试图找到我的问题的解决方案,但找不到,并且正在寻找一些“最佳实践示例”。我有一个 nodejs express 应用程序,我的函数在文件中拆分。例如我有这个 Controller (oktacont
这看起来像是一个非常简单的问题,但作为一个 JS 初学者,我想知道是否可以在 webextension 中使用 NodeJS 模块(例如我想使用这个:https://github.com/yaronn
我有一个文件。a.js class A{ constructor(name){ this.name = name; } displayName(){ conso
我想做的是这样的: node x.js | node y.js 文件 x.js 只是打印一个字符串: console.log("hi"); 文件 y.js 旨在通过 process.stdin 获取字
对于这个新的nodejs debugger I am working on我想对显示的源代码行进行着色。有什么关于 npm 使用的建议吗? 有很多语法荧光笔,但使这种情况有点不同的是 输出是到终端;它
有没有什么方法可以从 ejs View 中引用包含在 node_modules 文件夹中的 Nodejs 库? 我正在使用 expressjs 并且我的客户端库由 /public 文件夹提供,如下所示
我是 NodeJS 的新手,我正在尝试根据 NodeJS 站点上的指南在 NodeJS 中创建一个服务器。我已经在我的电脑上安装了 NodeJS 并使用以下代码制作了 app.js 文件。 const
我有一个 nodejs-express 服务器 (1) 与 mongodb 通信,还有一个 web 服务器 (2) 在 nodejs-express 和 Angularjs 中。我正在尝试发出 pos
我一直在解决(firebase 和 nodejs)问题,这是该问题的第四部分,如何在登录到 server.js 后传递数据 我已经尝试过this但未能使其正常工作。 基本上,我正在尝试将用户idTok
每次页面刷新时,NodeJS 都会在套接字上多次写入数据。当我刷新页面时,nodejs 服务器写入套接字的计数增加,在多个页面刷新时,写入计数固定为 3。 请检查控制台输出是否有此奇怪的响应。请提出同
我在尝试更新文件夹并再次部署其内容时遇到问题。我必须使用 NodeJS 并已获得端口 8080 来使用。我尝试创建一个 php 脚本(update.php): 现在我想启动NodeJS脚本进行更新,
我不明白java多线程系统和Nodejs多线程系统在性能和资源共享方面的区别。由于 NodeJS 为您的程序使用事件循环单线程,但在幕后,它将任务分配给不同的线程,如文件读取或数据库查询。所以它使用多
我是一名优秀的程序员,十分优秀!