aVogt
Returning Creator

Mail vom Redaktionssystem (JavaClient) verschicken

Jump to solution

Hallo,

aus Scripten verschicke ich eine Mail an den ausfürhrenden Redakteur (funktioniert bestens)

de.espirit.firstspirit.client.MailServiceImpl mailSer = (MailServiceImpl) context.getConnection().getMailService();
String absenderMail= ""+gs.getProjectProperties().getData().get("ps_absender_email").getEditor().get(mLang);
String absenderName = ""+gs.getProjectProperties().getData().get("ps_system_name").getEditor().get(mLang);
String absenderEMail = SABConvert.convertEmail(absenderName, absenderMail);
String EmpfMail=us.getConnection().getUser().getEMail();
de.espirit.firstspirit.access.MailHeader mHeader = new MailHeader(EmpfMail);

mHeader.sender=absenderEMail;
String Betreff = "setzen der Verlinkungen - ";
mailSer.sendMail(mHeader,Betreff,MailText,"html",false,(Attachment) null);

de.espirit.firstspirit.client.MailServiceImpl mailSer = (MailServiceImpl) context.getConnection().getMailService();

kann auch durch

de.espirit.firstspirit.access.MailService mailSer = (MailService) context.getConnection().getMailService();

ersetzt werden, funktioniert auch.

Nun wollte ich das in eine Klasse (und ein Modul) packen, da ich aus anderen Scripten auch Mails verschicke:

public boolean sendLinkMail(String LinkText, String Nummer) {
        try{
            String MailText="<!DOCTYPE HTML PUBLIC \"-W3CDTD HTML 4.0 TransitionalEN\">\n" +
                "<html>\n<HEAD>\n"+
                " <title>Fehlerhafte Links</title>\n"+
                this.getStyle() +
                "</HEAD>\n<body>\n"+
                "<p><b>Linksetzung für: " + Nummer + "</b></p>\n"+
                "<p>" + LinkText + "</p>\n"+
                "</body>\n</html>\n";
           
            MailServiceImpl mailSer = (MailServiceImpl) this.ct.getConnection().getMailService();
            String absenderMail= ""+gs.getProjectProperties().getData().get("ps_absender_email").getEditor().get(this.lang);
            String absenderName = ""+gs.getProjectProperties().getData().get("ps_system_name").getEditor().get(this.lang);
            String absenderEMail = SABConvert.convertEmail(absenderName, absenderMail);
            String EmpfMail=this.us.getConnection().getUser().getEMail();
            MailHeader mHeader = new MailHeader(EmpfMail);
            mHeader.sender=absenderEMail;
            String Betreff = "setzen der Verlinkungen - " + this.getSystem();
            mailSer.sendMail(mHeader,Betreff,MailText,"html",false,(Attachment) null);
        } catch(Exception E) {
            this.error("Error sendLinkMail: " + E.getMessage());
            this.setErrorStatus(true);
            return false;
        }

this.ct ist ProjectScriptContext (habs auch mit WorkflowScriptContextImpl versucht)

ich bekomme bei mailSer.sendMail einen Fehler.

0 Kudos
1 Solution

Accepted Solutions
gockel
Crownpeak employee

So,

nachdem ich per DM die eigentliche Exception erfahren habe:

context.logError("Error sendLinkMail", e);


java.lang.NullPointerException
    at de.espirit.firstspirit.server.mailmanagement.MailClientHandler.packParameter(MailClientHandler.java:20)
    at de.espirit.firstspirit.io.DefaultClientHandler.packParameters(DefaultClientHandler.java:66)
    at de.espirit.firstspirit.io.DefaultClientHandler.callManager(DefaultClientHandler.java:49)

Das Problem ist diese Zeile:

mailSer.sendMail(mHeader,Betreff,MailText,"html",false,(Attachment) null);

Die NullpointerException fliegt, weil Sie null als Attachment übergeben.

Es sollte so gehen:

mailSer.sendMail(mHeader,Betreff,MailText,"html",false);

View solution in original post

0 Kudos
5 Replies
aVogt
Returning Creator

upps, zu zeitig abgeschickt.

Also ich bekomme bei ,

     mailSer.sendMail(...)

einen fehler "null"

Der Stacktrace sagt mir auch nicht wirklich viel => anhang

Muss ich noch irgendwelche Werte setzen, die in einem Script automatisch gesetzt werden?

Im Script funktioniert es ja problemlos

0 Kudos
gockel
Crownpeak employee

Können Sie noch ein paar mehr Infos posten. Fragen werfen diese Codestelle auf:

this.ct

gs.getProjectProperties()

Wann werden die Instanzvariablen ct und gs intitialisiert?

Wie und von wo wird die Methode sendLinkMail aufgerufen?

Können Sie hier mal den kompletten Stack ausgeben, bitte:


             

catch(Exception e) {

     context.logError("Error sendLinkMail", e);
     this.setErrorStatus(true);
     return false;
}


0 Kudos
aVogt
Returning Creator

der Konstruktor sieht wie folgt aus:

public RsMail(WorkflowScriptContextImpl context){
        this.ct = context;
        this.us = context.getUserService();
        this.gs = (GlobalStoreRootImpl) us.getStore(de.espirit.firstspirit.access.store.Store.Type.forName("GLOBALSTORE"),false);
        this.lang = context.getProject().getMasterLanguage();
    }

Aufgerufen wird der aus einem Script:

RsMail Mail = new RsMail(context);
if(!Mail.sendLinkMail(LINKS.getMailtext(), Nummer)){
     log.WFError("Fehler beim Mailversenden: " + Mail.getError());
}

gs.getProjectProperties()

holt Einstellungen von den Projekteinstellungen (also Email, etc.) Die werden auch geholt.

Den Stacktrce habe ich im zweiten Posting schon angehangen (hatte zu zeitig das erste abgeschickt)

0 Kudos
gockel
Crownpeak employee

So,

nachdem ich per DM die eigentliche Exception erfahren habe:

context.logError("Error sendLinkMail", e);


java.lang.NullPointerException
    at de.espirit.firstspirit.server.mailmanagement.MailClientHandler.packParameter(MailClientHandler.java:20)
    at de.espirit.firstspirit.io.DefaultClientHandler.packParameters(DefaultClientHandler.java:66)
    at de.espirit.firstspirit.io.DefaultClientHandler.callManager(DefaultClientHandler.java:49)

Das Problem ist diese Zeile:

mailSer.sendMail(mHeader,Betreff,MailText,"html",false,(Attachment) null);

Die NullpointerException fliegt, weil Sie null als Attachment übergeben.

Es sollte so gehen:

mailSer.sendMail(mHeader,Betreff,MailText,"html",false);

0 Kudos
aVogt
Returning Creator

funktioniert bestens. hab mal wieder die Api nicht richtig gelesen ...

Vielen Dank

0 Kudos