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}"
}
谢谢大家,期待回复,我很沮丧
答案 0 :(得分:4)
该插件支持多个地址,它们可以位于Object[]
数组或List
中。但是你得到一个以逗号分隔的字符串,因为只有一个whogetsemail
字段。如果有多个具有相同名称的输入,则request.getParameterValues()
仅返回多个值。
如果你改成它,它应该有效:
List<String> recipients = params.whogetsemail.split(',').collect { it.trim() }
和
to recipients
答案 1 :(得分:0)
尝试取出地址周围的括号:
to recipients.toArray()
我在很多地方做到这一点......