AWS SES 原始电子邮件同时发送 html 和纯文本
AWS SES Raw Email is sending both html and plain text
我正在关注 this helpful article 使用 AWS SES(原始电子邮件)发送附件。
正在运行!只有一个问题...电子邮件同时提供 html 和纯文本。纯文本显示在 html.
正下方
如果我不包含纯文本,它将进入 gmail 垃圾邮件。
关于如何防止纯文本显示在 html 下面有什么建议吗?
var mimemessage = require('mimemessage');
const sendAWSEmailWithAttachment = (emailDetails) => {
AWS.config.update({
accessKeyId: process.env.AWS_ACCESS_KEY,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
region: process.env.AWS_REGION
})
const ses = new AWS.SES({ apiVersion: "2010-12-01" });
var mailContent = mimemessage.factory({contentType: 'multipart/mixed',body: []});
mailContent.header('From', 'Ticketglen <tickets@ticketglen.com>');
mailContent.header('To', emailDetails.emailAddress);
mailContent.header('Subject', emailDetails.subject);
var alternateEntity = mimemessage.factory({
contentType: 'multipart/alternate',
body: []
});
var htmlEntity = mimemessage.factory({
contentType: 'text/html;charset=utf-8',
body: emailDetails.content
});
var plainEntity = mimemessage.factory({
body: emailDetails.plainText
});
alternateEntity.body.push(htmlEntity);
alternateEntity.body.push(plainEntity);
mailContent.body.push(alternateEntity);
var data = fs.readFileSync(emailDetails.pathToAttachment);
var attachmentEntity = mimemessage.factory({
contentType: 'text/plain',
contentTransferEncoding: 'base64',
body: data.toString('base64').replace(/([^[=11=]]{76})/g, "\n")
});
attachmentEntity.header('Content-Disposition', `attachment ;filename=${emailDetails.fileName}`);
mailContent.body.push(attachmentEntity);
ses.sendRawEmail({
RawMessage: { Data: mailContent.toString() }
}, (err, sesdata, res) => {
console.log('err', err)
console.log('sesdata', sesdata)
console.log('res', res)
});
}
你只需要评论这句话:
// alternateEntity.body.push(plainEntity);
我用你的代码测试过。我每次都将正确的电子邮件发送到我的 gmail 收件箱,一次是在 html 文本之后使用纯文本,一次是仅使用 html 文本。
您注意到 gmail 将其发送到垃圾邮件的原因可能更多地与接收方的 Gmail 设置有关。这可能是收件人定义的规则或他们过去将某些电子邮件标记为不重要或垃圾邮件的行为导致 Gmail 将此电子邮件也识别为垃圾邮件。您电子邮件的内容(HTML & Plan TexT)被用户特定设置过滤并被发送到垃圾邮件。但这对您所有的电子邮件收件人来说可能并不相同。
我正在关注 this helpful article 使用 AWS SES(原始电子邮件)发送附件。
正在运行!只有一个问题...电子邮件同时提供 html 和纯文本。纯文本显示在 html.
正下方如果我不包含纯文本,它将进入 gmail 垃圾邮件。
关于如何防止纯文本显示在 html 下面有什么建议吗?
var mimemessage = require('mimemessage');
const sendAWSEmailWithAttachment = (emailDetails) => {
AWS.config.update({
accessKeyId: process.env.AWS_ACCESS_KEY,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
region: process.env.AWS_REGION
})
const ses = new AWS.SES({ apiVersion: "2010-12-01" });
var mailContent = mimemessage.factory({contentType: 'multipart/mixed',body: []});
mailContent.header('From', 'Ticketglen <tickets@ticketglen.com>');
mailContent.header('To', emailDetails.emailAddress);
mailContent.header('Subject', emailDetails.subject);
var alternateEntity = mimemessage.factory({
contentType: 'multipart/alternate',
body: []
});
var htmlEntity = mimemessage.factory({
contentType: 'text/html;charset=utf-8',
body: emailDetails.content
});
var plainEntity = mimemessage.factory({
body: emailDetails.plainText
});
alternateEntity.body.push(htmlEntity);
alternateEntity.body.push(plainEntity);
mailContent.body.push(alternateEntity);
var data = fs.readFileSync(emailDetails.pathToAttachment);
var attachmentEntity = mimemessage.factory({
contentType: 'text/plain',
contentTransferEncoding: 'base64',
body: data.toString('base64').replace(/([^[=11=]]{76})/g, "\n")
});
attachmentEntity.header('Content-Disposition', `attachment ;filename=${emailDetails.fileName}`);
mailContent.body.push(attachmentEntity);
ses.sendRawEmail({
RawMessage: { Data: mailContent.toString() }
}, (err, sesdata, res) => {
console.log('err', err)
console.log('sesdata', sesdata)
console.log('res', res)
});
}
你只需要评论这句话:
// alternateEntity.body.push(plainEntity);
我用你的代码测试过。我每次都将正确的电子邮件发送到我的 gmail 收件箱,一次是在 html 文本之后使用纯文本,一次是仅使用 html 文本。
您注意到 gmail 将其发送到垃圾邮件的原因可能更多地与接收方的 Gmail 设置有关。这可能是收件人定义的规则或他们过去将某些电子邮件标记为不重要或垃圾邮件的行为导致 Gmail 将此电子邮件也识别为垃圾邮件。您电子邮件的内容(HTML & Plan TexT)被用户特定设置过滤并被发送到垃圾邮件。但这对您所有的电子邮件收件人来说可能并不相同。