Как я могу отправить электронное письмо из нескольких частей с текстовыми / обычными и текстовыми / HTML-частями с помощью Grails? - PullRequest
5 голосов
/ 14 сентября 2010

Я просмотрел код и документацию для плагина Grails Mail (версия 0.9), и у него нет поддержки, которую я ищу.Вы можете установить только одно тело, а затем предоставить вложение MIME, которое указывает на статический файл.Мне нужно передать модель в GSP и сделать так, чтобы она отображала как HTML, так и текстовые версии, а затем иметь обе эти версии в сообщении.Это позволит клиентам электронной почты, не основанным на HTML, отображать часть text / plain, а клиентам, поддерживающим HTML, отображать часть text / html.

Кто-нибудь делал это с Grails?Есть ли простой способ сделать это, или мне нужно изменить почтовый плагин или просто зайти в библиотеку Java Mail напрямую?

Ответы [ 3 ]

5 голосов
/ 19 апреля 2012

Начиная с версии 1.0 почтовый плагин изначально поддерживает многокомпонентный альтернативный контент, как описано в 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 голосов
/ 02 декабря 2010

Похоже, что это потенциальное содержимое версии 1.0 плагина Mail, см. это и это проблема.Глядя на патч первого выпуска, я думаю, что html и текстовое многокомпонентное сообщение можно просто создать следующим образом:

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

Было бы довольно круто!Не знаю, если / когда это будет выпущено, хотя.

0 голосов
/ 17 сентября 2010

Мы используем составную электронную почту со стандартным почтовым плагином. Следующий фрагмент кода находится в классе обслуживания, поэтому мы используем стандартный шаблонный шаблон вместо движка gsp:

        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 письмо с вложением.

...