Search code examples
grailsgrails-plugingrails-2.0

Cannot invoke method render() on null object in Grail while email sending


I am using mail:1.0.1 plugin for mail sending

but while sending mail its gives me an error..

Source :-

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();
        }
    }

Solution

  • If you want to send the gsp page as email body then you can send it like:

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

    EDIT...................................................................................

    Just inject PageRenderer groovyPageRenderer globally, like

    import grails.gsp.PageRenderer
    class TestService {
        PageRenderer groovyPageRenderer
    
        def getText() {
            String s = groovyPageRenderer.render(template: "../first/temp", model: [name: 'user1690588'])
            println "Content = ${s}"
        }
    }