grails mail:通过电子邮件从数据库中呈现个人资料图片

时间:2012-12-29 12:20:06

标签: email grails groovy amazon-s3 imagesource

在grails-mail插件中,您需要在服务中定义内联图像数据,假设您使用的是来自服务的Grails邮件。

你在service.groovy

中这样做
inline 'header', 'image/jpg', new File('./web-app/images/mailAssets/alert_header_pre.png')

在服务定义中,让我们说:

def mailService
def contactUser(userName, email) {
    mailService.sendMail {
        multipart true
        to email
        from "marc.heidemann@live.de"
        subject "Hello from grails-mail"
        text "Hallo from grails-mail multipart text modus"
        html view:"/alert/test", model:[name:userName]
        inline 'header', 'image/jpg', new File('./web-app/images/mailAssets/alert_header_pre.png')
        inline 'footer', 'image/jpg', new File('./web-app/images/mailAssets/suchebottomre.gif')
    }
}

目前,该应用正在呈现页脚和标题图片,确定。

好吧,现在这个项目规划者的计划是在他们的电子邮件中呈现来自数据库(大约15.000个用户)的个人资料图片 - 如果不知道如何在不声明service.groovy中的每个用户的个人资料图片的情况下如何实现?此外,这些图片存储在我的应用程序的亚马逊s3之外。这可能是邮件插件的边界还是可以使这个工作?如果不可能,那么你会为那些策划和创意人提供什么选择呢?欢迎任何意见。

1 个答案:

答案 0 :(得分:2)

  1. 循环用户。
  2. 使用grails-aws-plugin从S3获取相应的图片。
  3. 将图片插入电子邮件
  4. 使用mail-plugin发送邮件
  5. 这样您就不必在服务中声明它。您可以从S3下载图片以将其用作内嵌图片,或者您可以使用S3提供的网址。

    要访问内联使用的文件:

    def file = aws.s3().on(bucket).get(name, path)
    

    获取公共网址:

    def url = aws.s3().on(bucket).url(name, path)