簡體   English   中英

嘗試使用sendgrid發送電子郵件時出錯

[英]I am getting an error when attempting to use sendgrid to send email

我收到一個錯誤,我相信它是從sendgrid回來的。 但是,我在Twilio / Sendgrid故障排除文檔中找不到此錯誤。 我已經看到一些引用它表明這是一個版本不匹配的問題。 這就是事情,我對這個項目知之甚少。 開發者離開了一會兒。 我一直在努力幫助,並且相當成功。 然而,這個讓我難過。 錯誤不是指任何行號或模塊(我可以告訴)

這是來自Firebase控制台日志的嘗試發送此電子郵件的雲功能:

{ 
 insertId: "000000-55176214-acd2-453d-8258-048000f1e9e3"   
   labels: {…}   
 logName: "projects/wsos-base/logs/cloudfunctions.googleapis.com%2Fcloud-functions"   
 receiveTimestamp: "2019-06-21T16:40:19.541487656Z"   
   resource: {…}   
 severity: "ERROR"   
 textPayload: "TypeError: Object.values is not a function"   
 timestamp: "2019-06-21T16:40:13.253Z"   
 trace: "projects/wsos-base/traces/bdb710bad4f92297c239de4409de2323"   
}

在日志中顯示sendgrid.send調用之前的控制台日志消息。 此調用之后沒有顯示任何日志消息。 我已經注釋掉了整個調用,並且日志文件中沒有顯示錯誤。 我幾乎100%肯定這是在通話中發生的。 但是,從查找sendgrid的東西,我應該至少期待響應中的錯誤號。我通過替換字符串錯誤消息確認'catch'正在工作。 我確實在日志中看到了該錯誤消息。 當我把它放回原始catch時,我得到報告的“TypeError ... Object.values ...”消息。 沒有錯誤消息。 沒有行號。 沒有模塊。

return admin.auth().getUser(user)
                      .then(mentorObj => {
                        var mentorEmail = mentorObj.email;
                        var menteeObj = doc2.data();
                        console.log("Sending to Mentor: ", mentorEmail);
                        const confirmationMentor = {
                              to: mentorEmail,
                              from: *******,
                              template_id: ********,    
                              dynamicTemplateData: {
                                name: mentor.firstName,
                             menteeName: "MenteeNameHere"
                          },
                        };
                        console.log("Sent to Mentor: ", confirmationMentor);

                        return sendgrid.send(confirmationMentor)
                          .then(() => {
                            // console.log('Confirmation successfully sent to ' + mentorEmail);
                            console.log("sending to mentee");
...
})
                         .catch(error => console.error(error.toString()));

只需用“SomeText”替換上面的“error.toString()”就可以用“SomeText”替換控制台中的TypeError消息。 此外,“發送給受指導者”不在控制台日志中。 此外,在所有源代碼中的任何地方都不引用“.values”。

在控制台日志中,我看到傳遞的JSON:

{ to: '*****',
  from: '*****',
  template_id: '******',
  dynamicTemplateData: { name: 'Rocky McChocolate', menteeName: 'MenteeNameHere' } }

我把它放在一個在線JSON驗證器中,它是無效的。 但是,我認為這是因為它在日志中的顯示方式,而不是JSON的實際外觀。 由於這是有效的,我改變的只是模板ID。 好吧,我想我已經在上面描述了這一點(也許是在錯誤的地方)。 客戶端有一個firebase應用程序,它會發送電子郵件。 他們想要一封不同的郵箱。 因此,我創建了電子郵件(在Twilio / Sendgrid中),並更改了template_id值並發送了預期的新電子郵件。 相反,我收到此錯誤消息。 我已經向客戶確認電子郵件是在我處理之前發送的。

該錯誤"TypeError: Object.values is not a function"來自您的代碼,而不是來自SendGrid。 在某個地方,有些東西以無效的方式調用.values ,但它不在你在這里顯示的代碼中。

你是對的,那是無效的JSON。 你需要在值上調用toJSON或類似的東西,將它轉換為JSON字符串嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM