2

グレイルズワールドは初めて。フォームからコンマ区切りのフォーム値をgrailsメールプラグインの「TO」プロパティに渡す際に問題が発生します。私が何をしようとしても、それを配列に入れたり、複数の電子メールアドレスを受け入れたりするように見えることがあります。

次のエラーが発生します。ドメイン名を削除しましたので、無視してください。

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

今、頭を悩ませています。以下のコードでどこが間違っているのかについてのアイデア。私は完全に困惑しています。

私が持っているemailpublicationGSPフォームで。これらのフィールドは、データベースとドキュメントの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>

パブリケーションコントローラーには、次のものがあります。emailpublicationgspフォームのwhogetsemailフィールドから入力された1つ以上のメールアドレスに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}"
}

みんなありがとう、返事を楽しみにしています、Imはイライラしました

4

2 に答える 2

4

プラグインは複数のアドレスをサポートしており、それらはObject[]配列またはに含めることができますList。ただし、フィールドが1つしかないため、コンマ区切りの文字列が1つ表示されwhogetsemailます。request.getParameterValues()同じ名前の入力が複数ある場合にのみ、複数の値を返します。

これに変更すると機能するはずです:

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

to recipients
于 2012-12-04T03:21:57.683 に答える
0

アドレスの前後の括弧を外してみてください。

to  recipients.toArray()

私はこれを多くの場所で正確に行います...

于 2012-12-03T23:50:39.560 に答える