2017-08-29 139 views
0

我正在爲使用通過Vars提供的數組值的MJML編寫的Mailjet的電子郵件模板生成發件人希望從郵件收件人。數組中的所有值都是純文本值。Mailjet:通過變量提供的數組值使電子郵件在發送時被阻止

傳遞到API請求的數據是這樣的:

{ 
    "FromEmail":"[email protected]", 
    "FromName":"Chris Crumble", 
    "Subject":"Data Request", 
    "MJ-TemplateID":"200000", 
    "MJ-TemplateLanguage":true, 
    "Recipients":[ 
     { 
      "Email":"[email protected]", 
      "Name":"Hans Henson" 
     } 
    ], 
    "Vars":{ 
     "mailTitle":"Data Request", 
     "userName":"Chris Crumble", 
     "imageUrl":"http://my.host.com/image.jpg", 
     "userBirthDate":"1.3.1982", 
     "recipientName":"Hans Henson", 
     "uploadUrl":"https://my.upload.com/", 
     "authVideoUrl":"https://my.authvideo.com", 
     "records":["Document A","Document B"], 
     "authPhone":"113777840097" 
    } 
} 

模板使用var:records這樣的:

 ... 
     </mj-text> 
     <mj-raw> {% if var:records:false %} </mj-raw> 
     <mj-text> 
      <p> 
      I, <strong>{{var:userName}}, born on {{var:userBirthDate}}</strong> am asking you to provide the following documents: 
      </p> 
     </mj-text> 
     <mj-raw> {% for item in var:records %} </mj-raw> 
     <mj-text> 
      {{item}} 
     </mj-text> 
     <mj-raw> {% endfor %} </mj-raw> 
     <mj-raw> {% else %} </mj-raw> 
     <mj-text> 
      <p> 
      I, <strong>{{var:userName}}, born on {{var:userBirthDate}}</strong>, am asking you to provide all my existing documents. 
      </p> 
     </mj-text> 
     <mj-raw> {% endif %} </mj-raw> 
     <mj-text> 
      ... 

只要var:records與發送的數據沒有被設置請求,郵件按預期發送。只要請求中提供了一個(非空)數組值,該郵件就會在發送時被Mailjet阻止,而不會提供有關原因的更多信息。

不知道如何得到這個工作。

UPDATE:

由於Zhivko的提示將通過Mailjet提供的錯誤報告機制,我能夠獲得一些更深入地瞭解這個問題。

模板產生以下錯誤:

expression parsing error ## Unknown identifier: var:records:false ## near ## var:records:false ## 

這仍然沒有任何意義,我所提到的線是if條件與情況定義的false的默認值,沒有對價值var:records提供了api請求。 此外,該模板僅在Vars中明確設置值並且爲而不是爲空時纔會產生此錯誤。 我的測試到目前爲止讓我猜測,它可能必須處理提供的值是數組值,因爲如果該值爲明碼字符串,則該行不會引起任何問題。

回答

1

我添加了同樣的問題,並要求MJML隊在他們的時差後,我加入一個答案。只需使用defined()方法:

例子:

{% if defined(employees) %} 
    My employees : 
    <ul> 
    {% for employee in var:employees %} 
     <li>{{employee.firstname}} {{employee.lastname}}</li> 
    {% endfor %} 
    </ul> 
{% endif %} 

這種方法是正確的,MJML的核心維護者只是說:

It's not publicly documented yet 

PS:他們的時差是一個好地方,問這個這是一個問題,我在幾分鐘內就有了答案。 (mjml.slack.com

2

由於模板語言中的錯誤,可能會阻止該消息。要獲取有關錯誤的詳細信息,請啓用error reporting mechanism。如果您在調試錯誤消息時遇到麻煩,請使用Mailjet打開support ticket以深入調查特定模板。

+0

感謝您的提示。幫助我獲得關於這個問題的更多信息。順便更新了問題。還將打開支持票。 – Oliver