2

メール送信にmail:1.0.1プラグインを使用しています

しかし、メールの送信中にエラーが発生します..

ソース :-

def serviceMethod(EmailModel mailObj) {
        PageRenderer groovyPageRenderer;
        try{
            sendMail {
                to "abc@gmail.com"
                subject mailObj.subject;
                  html groovyPageRenderer.render(template:"myMailTemplate", model: [mailObj: mailObj])


            }
        } catch (Throwable th) {
                    th.printStackTrace();
        }
    }
4

2 に答える 2

1

Java クラスから Service Class(.groovy) メソッドを呼び出していると思います。EmailService クラスのオブジェクトを使用して。そのため、PageRenderer クラスの Object を取得できません。このため、src/java にSpringsUtilクラスを作成し、EmailService の定数オブジェクトを定義します。このような

public class SpringsUtil {

    public static ApplicationContext getCtx() {
        return getApplicationContext();
    }

    public static ApplicationContext getApplicationContext() {
        return (ApplicationContext) ServletContextHolder.getServletContext().getAttribute(GrailsApplicationAttributes.APPLICATION_CONTEXT);
    }

    @SuppressWarnings("unchecked")
    public static <T> T getBean(String beanName) {
        return (T) getApplicationContext().getBean(beanName);
    }


    public static final String EMAIL_SERVICE = "emailService";
//  public static final String INVENTORY_REORDER_SERVICE =  "InventoryReorderService";

}

Serviceクラスのオブジェクトを作成してメソッドを呼び出す

EmailService emailService = SpringsUtil.getBean(SpringsUtil.EMAIL_SERVICE);

于 2016-05-17T06:46:06.630 に答える
1

gsp ページをメール本文として送信する場合は、次のように送信できます。

def mailService

def serviceMethod(EmailModel mailObj) {
...
    mailService.sendMail {
        to email
        subject "subject"
        body(view: "/_template", model: [mailObj: mailObj])
    }
...
}

編集................................................. ...................................................

PageRenderer groovyPageRendererのように、グローバルに注入するだけです

import grails.gsp.PageRenderer
class TestService {
    PageRenderer groovyPageRenderer

    def getText() {
        String s = groovyPageRenderer.render(template: "../first/temp", model: [name: 'user1690588'])
        println "Content = ${s}"
    }
}
于 2013-08-29T08:05:32.373 に答える