Moin,

Ziel des ganzen soll später mal ein RPG-Programm sein, in dem der Mitarbeiter bestimmte Dokumente auswählen kann und die er dann als Anhang einer E-Mail zugesendet bekommt und weiterleiten kann.
Zuerst wollte ich das per SNDDST machen, aber da kann man ja nur eine Datei im Anhang schicken. Dann wollte ich die Dateien zippen und dann per SNDDST verschicken.
Beim Suchen bin ich dann auf JavaMail gestoßen und hielt das für eine bessere Alternative. Aus dem RPG-Programm soll jetzt mein Java-Programm aufgerufen werden, dass dann die Erstellung und das Versenden der Mail übernimmt.

Inzwischen habe ich ein Test-Programm so weit runtergeschraubt, dass es erstmal eine E-Mail ohne Anhang schickt. Beim Aufruf des Programms kommt dann allerdings ein Fehler.
Wenn ich die main-Methode aktiviere und das Java-Programm über qsh aufrufe funktioniert es.

Sofern die Anweisung 80 im Fehler auf die Zeile im Java-Code verweist, ist das der Aufruf der Methode sendMail.

Kann mir jemand helfen?

Fehler:
Code:
Nachricht . . . :   Anwendungsfehler. CEE9901 nicht überwacht durch QRNXUTIL  
  bei Anweisung 0000000080, Instruktion X'0000'.                              
Ursache  . . . . :  Die Anwendung wurde abnormal beendet, da eine Ausnahme    
  aufgetreten ist, die nicht behandelt wurde. Der Name des Programms, an das  
  die nicht behandelte Ausnahme gesendet wurde, ist QRNXUTIL QRNXJNI          
  chk_jni_excp. Das Programm wurde bei der/den HLL-Anweisung/en mit der/den   
  Nummer/n 0000000080 gestoppt, als die Nachricht gesendet wurde. Wird mehr   
  als eine Anweisungsnummer angezeigt, handelt es sich bei dem Programm um ein
  optimiertes ILE-Programm. Durch die Optimierung kann keine einzelne         
  Anweisungsnummer festgelegt werden. Wird *N als Wert angezeigt, bedeutet    
  dies, dass ein reeller Wert nicht verfügbar war.
Joblog sagt:
Code:
Speicher-Offset X'00000000' oder X'00000000FFFFFFF0' liegt außerhalb der
  aktuellen Grenze für Objekt P0258_859BOTTERSBERG704879.
Java-Code:
Code:
package javaMail;

import java.io.File;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class JavaMail {

//	public static void main(String[] args) {
//		JavaMail mail = new JavaMail();
//		String[] dateien = new String[2];
//		dateien[0]="C:\\fpRedmon.log";
//		dateien[1]="C:\\PC.ini";
//		mail.sendMail(
//			"absender@test.local", "empfaenger@test.local", 
//			"Test", "Datei-Test");
////		mail.sendMailMitAnhang(
//			"absender@test.local", "empfaenger@test.local", 
//			"Test", "Datei-Test", dateien);
//	}
	
	public JavaMail() {
		super();
		
	}
	
	public void sendMailMitAnhang(
		String absender, String empfaenger, String betreff, 
		String nachricht, String[] dateien)
	{
		
	}

	public void sendMail(
		String absender, String empfaenger, 
		String betreff, String nachricht)
	{
		try {
			Properties props=new Properties();
			Authenticator auth=new MailAuthenticator();
			props.put("mail.smtp.host","IP-Adresse");
			props.put("mail.smtp.auth","true");
			Session session = Session.getDefaultInstance(props, auth);
			Message message=new MimeMessage(session);
			message.setFrom(new InternetAddress(absender));
			message.setRecipient(
				Message.RecipientType.TO, 
				new InternetAddress(empfaenger));
			message.setSubject(betreff);
			Multipart multipart = new MimeMultipart();
			BodyPart body = new MimeBodyPart();
			body.setText(nachricht);
			multipart.addBodyPart(body);
			message.setContent(multipart);
			Transport.send(message);
		} catch (AddressException e) {
			e.printStackTrace();
		} catch (MessagingException e) {
			e.printStackTrace();
		}
		
	}
	
	class MailAuthenticator extends Authenticator
	{
		public PasswordAuthentication getPasswordAuthentication()
		{
			return new PasswordAuthentication("Benutzer","Passwort");
		}
	}
	
	

}
RPG-Code:
Code:
     H main(Main)
     H dftactgrp(*no)
     H actgrp(*new)

      **********************************************************************
      *  newString constructor that accepts a byte array
      *  (an alphnumeric variable in RPG speak). It
      *  returns a string object.
      **********************************************************************
     D newString       PR              O   ExtProc(*JAVA:
     D                                             'java.lang.String':
     D                                             *CONSTRUCTOR)
     D                                     Class(*JAVA:'java.lang.String')
     D  byes                       9999A   Const Varying


     D javaMailSendMail...
     D                 S               O   CLASS(*JAVA: 'javaMail.JavaMail' )

     D  sendMail       PR                  EXTPROC(*JAVA : 'javaMail.JavaMail+
     D                                     ' : 'sendMail' )
     D  arg0                           O   CLASS(*JAVA : 'java.lang.String' )
     D  arg1                           O   CLASS(*JAVA : 'java.lang.String' )
     D  arg2                           O   CLASS(*JAVA : 'java.lang.String' )
     D  arg3                           O   CLASS(*JAVA : 'java.lang.String' )


     D javaMailSendMailMitAnhang...
     D                 S               O   CLASS(*JAVA: 'javaMail.JavaMail' )

     D sendMailMitAnhang...
     D                 PR                  EXTPROC(*JAVA : 'javaMail.JavaMail+
     D                                     ' : 'sendMailMitAnhang' )
     D  arg0                           O   CLASS(*JAVA : 'java.lang.String' )
     D  arg1                           O   CLASS(*JAVA : 'java.lang.String' )
     D  arg2                           O   CLASS(*JAVA : 'java.lang.String' )
     D  arg3                           O   CLASS(*JAVA : 'java.lang.String' )
     D  arg4                           O   DIM(99)
     D                                     CLASS(*JAVA : 'java.lang.String' )
     D                                     OPTIONS(*VARSIZE)

     D  absender       S               O   CLASS(*JAVA : 'java.lang.String' )
     D  empfaenger     S               O   CLASS(*JAVA : 'java.lang.String' )
     D  betreff        S               O   CLASS(*JAVA : 'java.lang.String' )
     D  nachricht      S               O   CLASS(*JAVA : 'java.lang.String' )

     DMain             PR                  extpgm('TEST')

     PMain             B
     D                 PI
      /free
       absender = newString('absender@test.local');
       empfaenger = newString('empfaenger@test.local');
       betreff = newString('Test');
       nachricht = newString('Datei-Test');
       sendMail(javaMailSendMail:absender:empfaenger:betreff:nachricht);
       //sendMailMitAnhang(
       //  javaMailObj:absender:empfaenger:betreff:nachricht:dateien);
      /end-free
     P                 E