无法使用电子邮件创建google now卡

时间:2016-01-21 11:01:56

标签: node.js amazon-web-services nodemailer google-schemas google-now

我正在尝试使用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文件。

请帮帮我。

2 个答案:

答案 0 :(得分:2)

您的邮件需要由DKIM或SPF进行身份验证才能使电子邮件操作正常运行。您不能自己为gmail.com设置DKIM或SPF,因此您必须通过Gmail SMTP而不是通过AWS SES发送消息

答案 1 :(得分:0)

  1. 您需要使用DKIM或SPF AND
  2. 进行身份验证
  3. 您需要在Google注册。
  4. 这是他们的通知页面:

      

    要为您的用户启动Google即时贴,您需要注册   与谷歌。但是,出于测试目的,您可以发送电子邮件   你自己(从x@gmail.com到x@gmail.com)和你的标记将是   显示在Google产品中。

    https://developers.google.com/schemas/tutorials/google-now-cards

相关问题