Grail邮件插件 - 无法添加多个TO地址?

时间:2012-12-03 23:43:24

标签: grails grails-2.0 grails-controller

Grails世界的新手。我有问题从表单中将逗号分隔的表单值传递到grails邮件插件的“TO”属性。无论我尝试什么,我似乎都可以将它变成一个数组或接受多个电子邮件地址。

我收到以下错误;我删除了域名,请忽略它们。

Could not parse mail; nested exception is javax.mail.internet.AddressException:
Illegal address in string ``"ian@email.com","ian@otheremail.com"''

现在抓头,任何关于我在下面的代码中出错的想法。我完全难过了。!!

在我发布的电子邮件发布GSP表单中。这些字段将自动从数据库和文档ID中填充。

<g:form action="emailpublication">

<g:field type="text" name="whogetsemail" value="${publicationInstance?.portfolio?.emailtemplates?.toemailtemplate}" /> 
<g:field type="text" name="publicationName" value="${publicationInstance?.publicationName}" />
<g:textArea type="text" name="publicationContent" value="${publicationInstance?.publicationContent}" cols="20" rows="20"/> 
<g:hiddenField name="id" value="${publicationInstance?.id}" />

<input type="submit" value="Send Email"/>
</g:form>

在出版物控制器中,我有以下内容;我需要在电子邮件发布gsp表单中的whogetsemail字段中填写一个或多个电子邮件地址发送TO

def emailpublication(){

  List<String> recipients = request.getParameterValues("whogetsemail")
    try {
     sendMail{
             to  (recipients.toArray())
             from "ineilsen@emailaddress.com"
             subject params.publicationName
             text params.emailbodyheader + "\n"+"\n" + params.publicationContent + "\n"+"\n" + params.footeremailtemplate
         }

    }
    catch (MailException e) {
        log.error "Failed to send emails: $e.message", e
    }
    catch (MessagingException e) {
        log.error "Failed to send emails: $e.message", e
    }
    redirect(uri: "/publication/show/${params}")
            flash.message = "${params.publicationName} sent to ${params.emailto}"
}

谢谢大家,期待回复,我很沮丧

2 个答案:

答案 0 :(得分:4)

该插件支持多个地址,它们可以位于Object[]数组或List中。但是你得到一个以逗号分隔的字符串,因为只有一个whogetsemail字段。如果有多个具有相同名称的输入,则request.getParameterValues()仅返回多个值。

如果你改成它,它应该有效:

List<String> recipients = params.whogetsemail.split(',').collect { it.trim() }

to recipients

答案 1 :(得分:0)

尝试取出地址周围的括号:

to  recipients.toArray()

我在很多地方做到这一点......