2010-09-14 14 views
5

我已經瀏覽了Grails Mail插件(0.9版)的代碼和文檔,但它沒有我期待的支持。您只能設置單個主體,然後提供指向靜態文件的MIME附件。我需要實際將模型傳遞給GSP,並使其呈現HTML和純文本版本,然後在消息中提供這些模型。這將允許非基於HTML的電子郵件客戶端顯示文本/純文本部分和支持HTML以顯示文本/ html部分的客戶端。如何使用Grails發送包含text/plain和text/html部分的多部分電子郵件?

有人用Grails做過這個嗎?有沒有簡單的方法來做到這一點,或者我必須修改郵件插件還是直接轉到Java郵件庫?

回答

5

http://jira.grails.org/browse/GPMAIL-37

mailService.sendMail { 
    multipart true 
    to <recipient> 
    subject <subject string> 
    text 'my plain text' 
    html '<html><body>my html text</body></html>' 
} 
+0

我不跟Grails的工作,現在描述由於1.0版本的郵件插件本身支持多可供選擇的內容,所以我沒有測試了這一點的時候,但我會聽取你的意見。 ;-) – 2012-04-20 21:29:12

0

我們使用標準電子郵件插件的多部分電子郵件。下面的代碼片段位於服務類,這就是爲什麼我們使用,而不是GSP引擎標準的Groovy模板:

 Template template = groovyPagesTemplateEngine.createTemplate(<templatename>) 
     Writable emailBody = template.make(<data model as map>) 
     StringWriter bodyWriter = new StringWriter() 
     emailBody.writeTo(bodyWriter) 

     String xml = <some xml> 

     mailService.sendMail { 
      multipart true 
      to <recipient> 
      subject <subject string> 
      body bodyWriter 
      attachBytes "filename.xml", "text/xml", xml.getBytes('UTF-8') 
     } 

關鍵的一點是,「多真」出現在封閉的開始。如果你添加

html '<b>Hello</b> World' 

上面的關閉,我假設你會得到一個附件的文本和HTML電子郵件。

0

似乎這是Mail插件1.0版的潛在內容,請參閱thisthis問題。看着第一個問題的補丁,我想一個HTML和文本多部分消息可以簡單地這樣來創建:

mailService.sendMail { 
    multipart true 
    to <recipient> 
    subject <subject> 
    dualBody(template:<template>, model:<model>) 
} 

將是很酷!不知道如果/當這將被釋放。

相關問題