Search the FirstSpirit Knowledge Base
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.
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);
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;
}
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)
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);
funktioniert bestens. hab mal wieder die Api nicht richtig gelesen ...
Vielen Dank