我正在尝试使用node.js和AWS SES创建google now卡。
我的HTML是:
<html>
<body>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "EventReservation",
"reservationNumber": data_bookingId,
"reservationStatus": "http://schema.org/Confirmed",
"underName": {
"@type": "Person",
"name": data_userFirstName
},
"reservationFor": {
"@type": "Event",
"name": data_eventTitle,
"startDate": data_startTime,
"location": {
"@type": "Place",
"name": data_shortAddress,
"address": {
"@type": "PostalAddress",
"streetAddress": data_address1,
"addressLocality":data_address2,
"addressRegion": data_city,
"postalCode": data_pincode,
"addressCountry": "IN"
}
}
},
"numSeats":data_numberOfReserves,
"bookingAgent":{
"image":data_featured_image
}
}
</script>
<p>
Dear data_userFirstName, thanks for booking your data_eventTitle ticket with us.
</p>
<p>
BOOKING DETAILS<br/>
Order for: data_userFirstName <br/>
Event: data_eventTitle <br/>
When: data_startTime<br/>
Venue: data_address1 , data_address2, data_city - data_pincode IN <br/>
Reservation number: data_bookingId <br/>
</p>
</body>
</html>
我的代码是:
nowCard.html
var nodemailer = require('nodemailer');
var fs = require('fs');
var aws = require('aws-sdk');
var awsSesMail= function(mailOptions) {
console.log("emailTemplate=====>\n",mailOptions.Message.Body.Html.Data);
aws.config.loadFromPath('./config.json');
var ses = new aws.SES({
apiVersion: '2012-10-17'
});
ses.sendEmail(mailOptions,function(err, data) {
if (data) {
print('Email sent:');
print(data);
} else {
print('Email not sent:\n')
print(err);
}
});
};
createGoogleNowCard = function (data) {
var mapObj= {'data_bookingId':"BN-"+data.bookingId,data_userFirstName:data.userFirstName,data_eventTitle:data.eventTitle,data_startTime:data.startTime,data_shortAddress:data.shortAddress,data_address1:data.address1,data_address2:data.address2,data_city:data.city,data_pincode:data.pincode,data_numberOfReserves:data.numberOfReserves,data_featured_image:data.featured_image}
//read the template file
var emailTemplate = fs.readFileSync('./views/nowCard.html',"utf-8");
var regexp = new RegExp(Object.keys(mapObj).join("|"),"gi");
//replace the snippet with actual data
emailTemplate = emailTemplate.replace(regexp, function(matched){
return '"'+mapObj[matched]+'"';
});
var emailTemplate = fs.readFileSync('./nowCard.js',"utf-8");
var mailOptions = {
Source: 'xyz@gmail.com',
Destination: {
ToAddresses: ['xyz@gmail.com']
},
Message: {
Subject: {
Data: "New Booking"
},
Body: {
Text: {
Data: "New Booking"
},
Html:{
Data:emailTemplate
}
}
}
};
awsSesMail(mailOptions);
};
我将邮件从xyz@domain.com发送到abc@domain.com,我收到了邮件但谷歌现在卡我没有收到。 我的邮件通过DIKM验证。
AWS SES邮件有问题吗?
当我记录HTML文件时,我正在使用脚本获得正确的HTML文件。
请帮帮我。
答案 0 :(得分:2)
您的邮件需要由DKIM或SPF进行身份验证才能使电子邮件操作正常运行。您不能自己为gmail.com设置DKIM或SPF,因此您必须通过Gmail SMTP而不是通过AWS SES发送消息
答案 1 :(得分:0)
这是他们的通知页面:
要为您的用户启动Google即时贴,您需要注册 与谷歌。但是,出于测试目的,您可以发送电子邮件 你自己(从x@gmail.com到x@gmail.com)和你的标记将是 显示在Google产品中。
https://developers.google.com/schemas/tutorials/google-now-cards