Programm von Main Methode starten

erdmulch

Bekanntes Mitglied
Hallo zusammen,

ich habe folgedes Problem:
das unten stehende Programm kann mails versenden, was auch funktioniert! :-D
nun möchte ich das Programm von einer anderen Main Methode aus starten....
was muss ich abändern dass dies geht?

danke im voraus

Java:
//MAIN Methode

public class MyAppVorapp
{

        public static void main(String[] args)
        {
        
        	
        	Mail  m = new Mail();
        	
        
        }

}

Java:
//Eigentliches Programm

import java.io.FileReader;
import java.io.IOException;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class Mail 
{
    
    public void sendMail(String smtpHost,String username,String password,String senderAddress,String recipientsAddress,String subject,String text )
{
        MailAuthenticator auth = new MailAuthenticator(username, password);
               Properties properties = new Properties();
               properties.put("mail.smtp.host", smtpHost);
               properties.put("mail.smtp.auth", "true");
               Session session = Session.getDefaultInstance(properties, auth);
 
        try {    	
        	
        	// create a message
    	    MimeMessage msg = new MimeMessage(session);
    	    msg.setFrom(new InternetAddress(senderAddress));
    	    InternetAddress[] address = {new InternetAddress(recipientsAddress)};
    	    msg.setRecipients(Message.RecipientType.TO, address);
    	    msg.setSubject(subject);
     
    	    // create and fill the first message part
    	    MimeBodyPart mbp1 = new MimeBodyPart();
    	    mbp1.setText(text);
     
    	    // create the second message part
    	    MimeBodyPart mbp2 = new MimeBodyPart();
        	    
            // attach the file to the message
       	    FileDataSource fds = new FileDataSource("C:\\Dokumente und Einstellungen\\halm_a\\Desktop\\Programme\\Diplomarbeit\\Protokoll.txt");
    	    mbp2.setDataHandler(new DataHandler(fds));
    	    mbp2.setFileName(fds.getName());
     
    	    // create the Multipart and add its parts to it
    	    Multipart mp = new MimeMultipart();
    	    mp.addBodyPart(mbp1);
    	    mp.addBodyPart(mbp2);
     
    	    // add the Multipart to the message
    	    msg.setContent(mp);
     
    	    // set the Date: header
    	    msg.setSentDate(new Date());
     
    	    // send the message
    	    Transport.send(msg);
     

 
        }
        catch (Exception e) 
        {
            e.printStackTrace( );
        }
    }
    
    class MailAuthenticator extends Authenticator
    {
 
       
        private final String user;
        private final String password;
 
       
        public MailAuthenticator(String user, String password) 
        {
            this.user = user;
            this.password = password;
        }
 
        
        protected PasswordAuthentication getPasswordAuthentication() 
        {
            return new PasswordAuthentication(this.user, this.password);
        }
    }
    
    public static void main(String[] args) 
    {
 
    	
    	try
        {
          String emailadresse = "";
          int x = 0;
          FileReader fr = new FileReader("emailadresse.txt");
          while ((x = fr.read()) != -1)
        	  emailadresse = emailadresse + (char)x;
          fr.close();
          System.out.println(emailadresse);
          
          String username = "user";
          String password = "geheim";
          String senderAddress = "test@web.de";//someone@web.de
          String recipientsAddress = emailadresse; //somereceiver@web.de
          String subject = "Java forum";
          String smtpHost = "smtp.web.de";
          
          String text = "Lieber Forum Besucher,";

          
          new Mail().sendMail(smtpHost, username, password, senderAddress, recipientsAddress, subject, text);
          
        }
        catch(IOException ioex)
        {
          System.out.println(ioex.getMessage());
        }

         
    }
}
 

Onkel Hatti

Bekanntes Mitglied
Über

Java:
m.sendmail(smtpHost, username, password, senderAddress, recipientsAddress, subject, text);

Das wird natürlich so nicht klappen, zunächst müssen natürlich die ganzen Parameter
noch ermittelt werden.
Die ermittelt bislang die "alte" main-Methode.

Hatti
 
G

Gonzo17

Gast
Ganz dreckig könnte man natürlich einfach
Code:
Mail.main(null)
aufrufen. Aber davon würde ich dir abraten, generell würde ich auch davon abraten in deiner Mail-Klasse dann noch eine main-Methode zu haben.
 

erdmulch

Bekanntes Mitglied
ja, da habt ihr recht
weiß leider nicht wie man so was macht...könnt ihr mir da weiterhelfen?
die Mainmethode in der Klasse Mail muss ich natürlich entfernen!!!
 
G

Gonzo17

Gast
Na was du zum Beispiel erstmal ganz einfach machen könntest wäre den Inhalt der main-Methode in der Mail-Klasse in die main-Methode der anderen Klasse zu kopieren. Dann passt du noch den Aufruf an (so wie Onkel Hatti schrieb) und dann hast du zumindest mal die gleiche Funktionsweise wie vorher, nut mit dem Unterschied, dass jetzt eine andere Klasse die Mail-Klasse aufruft.

Was genau willst du denn dann noch machen?
 

erdmulch

Bekanntes Mitglied
ok, das wurde auch funktionieren leider sieht dies sehr unschön aus da ich in der Mainmethode noch mehr Klassen aufrufe...

Java:
public class MyAppVorapp
{

        public static void main(String[] args)
        {
        
        	
        	Mail m = new Mail();
                Test t = new Test();
                Test1 t1 = new Test1()
        	
        	       
        }

}

was muss ich denn in meiner Mail Klasse abändern dass ich sie so wie oben aufrufen kann?
 
D

despikyxd

Gast
Layer-8-FAIL

sieh dir die MAIN der Mail.java mal an ... die macht nichts weiter als aus irgend einem txt-file irgendwas einlesen ... dann variablen setzen und dann über einer dreckige instanzierung die mail-methode aufzurufen ...

generell ist die mail-methode schlecht designed

man könnte die sendMail methode auch static machen ... dann müsste man keine Mail-Instanz erzeugen sondern könnte dierekt über Mail.sendMail() *oder nach nem import static direkt über sendMail()* ne mail schreiben ...

wenn du jetzt also deine Mail.java aus ner anderen klasse verwenden willst mach nichts weiter als ne instanz zu erzeugen und dann auf diese die sendMail() methode mit entsprechenden parametern anzuwenden ...
oder wie gesagt die änderung mit static ...

so schwer is das doch nu wirklich nich ... wird sogar so änlich in der java-insel erklärt


ps : scheiß design alles in de MAIN zu klatschen ... typischer informatiker-1-semester-fail der dozenten ...
generell sollte man in der main ne selbst-instanzierung aufrufen und dann die entsprechende methode aufrufen ... genau wie mans von außen machen würde ... aber das is der grund warum ich nie n informatik kurs belegen würde ... weil ich nur fehler und schlechte noten bekommen würde eben weil ichs NICHT in die main schreibe sondern mich in diesem punkt mal n bissl an die konventionen halte @ HoaX ... nur ums dir mal zu geben
 

erdmulch

Bekanntes Mitglied
sorry, aber ich hab kein Plan wie so was gehen soll
kannst du es mir kurz umschreiben wenn es nicht allzu schwer ist?

danke im voraus
 

Shulyn

Bekanntes Mitglied
eine schnelle und einfache lösung ist :

[Java]
//Eigentliches Programm

import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class Mail {
private String smtpHost;
private String username;
private String password;
private String senderAddress;
private String recipientsAddress;
private String subject;
private String text;

public Mail(String smtpHost, String username, String password, String senderAddress, String recipientsAddress, String subject, String text) {
super();
this.smtpHost = smtpHost;
this.username = username;
this.password = password;
this.senderAddress = senderAddress;
this.recipientsAddress = recipientsAddress;
this.subject = subject;
this.text = text;
}

public void sendMail() {

MailAuthenticator auth = new MailAuthenticator(username, password);
Properties properties = new Properties();
properties.put("mail.smtp.host", smtpHost);
properties.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(properties, auth);

try {

// create a message
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(senderAddress));
InternetAddress[] address = { new InternetAddress(recipientsAddress) };
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);

// create and fill the first message part
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText(text);

// create the second message part
MimeBodyPart mbp2 = new MimeBodyPart();

// attach the file to the message
// ganz böse. aber naja ^^
FileDataSource fds = new FileDataSource("C:\\Dokumente und Einstellungen\\halm_a\\Desktop\\Programme\\Diplomarbeit\\Protokoll.txt");
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());

// create the Multipart and add its parts to it
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);

// add the Multipart to the message
msg.setContent(mp);

// set the Date: header
msg.setSentDate(new Date());

// send the message
Transport.send(msg);

} catch (Exception e) {
e.printStackTrace();
}
}

class MailAuthenticator extends Authenticator {

private final String user;
private final String password;

public MailAuthenticator(String user, String password) {
this.user = user;
this.password = password;
}

protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(this.user, this.password);
}
}

}
[/Java]


und hier dann deine main in einer eigenen class.
[Java]
import java.io.FileReader;
import java.io.IOException;

public class MyClass {

public static void main(String[] args) {

String emailadresse = "";
try {
emailadresse = readMailAdress();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

String username = "user";
String password = "geheim";
String senderAddress = "test@web.de";// someone@web.de
String recipientsAddress = emailadresse ; // somereceiver@web.de
String subject = "Java forum";
String smtpHost = "smtp.web.de";
String text = "Lieber Forum Besucher,";

Mail myMail = new Mail(smtpHost, username, password, senderAddress, recipientsAddress, subject, text);
myMail.sendMail();
}

private static String readMailAdress() throws IOException {

String emailadressen = "";
int x = 0;
FileReader fr = new FileReader("emailadresse.txt");
while ((x = fr.read()) != -1) {
emailadressen = emailadressen + (char) x;
}
fr.close();

System.out.println(emailadressen);

return emailadressen;

}

}
[/Java]

ist nicht schön, aber so oder ähnlich könnte man es schreiben. wie gesagt dort ist noch viel platz für verbesserungen..
 

erdmulch

Bekanntes Mitglied
Danke, aber wie du selber sagt sieht es sehr unschön aus!
ich versuche es mit der static methode allerdings bisher ohne erfolg
vielleicht hast du mehr Ahnung als ich und kannst mir helfen

danke
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
X Could not find the main class programm will exit (textdokument) Allgemeine Java-Themen 3
P Java Editor Could not find the main class GUI. Programm will exit. Allgemeine Java-Themen 3
E beim Ende der main() das Programm nicht beenden Allgemeine Java-Themen 3
G Programm ohne Main Allgemeine Java-Themen 10
H jar-file in anderem main programm ausführen Allgemeine Java-Themen 2
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
T Der Aufruf von CMD-Programm Allgemeine Java-Themen 30
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
Mike80 Processing Programm fiert ohne Arduino ein Allgemeine Java-Themen 2
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
districon Programm zum Durchsuchen von (Ebay-)Artikeln Allgemeine Java-Themen 1
T Addons im eigenen Programm Allgemeine Java-Themen 1
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
D Programm designen Allgemeine Java-Themen 1
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
O 2D-Grafik BioFarben-Programm soll auf Vollbild schalten Allgemeine Java-Themen 1
S Nachrichten Filter Programm Allgemeine Java-Themen 14
S Programm schreiben, das mir aufgrund von Schlagwörtern, die ich im Internet suche, relevante Themen sofort anzeigt. Allgemeine Java-Themen 1
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
Lukas2904 Swing Anzeigen lassen das das Programm geschlossen wurde Allgemeine Java-Themen 3
TechnikTVcode Mail Programm Allgemeine Java-Themen 2
S Programm entwickeln, welches ein Dreieckspuzzle lösen kann Allgemeine Java-Themen 5
R Lesen von Interfaces (Programm Vervollständigen) Allgemeine Java-Themen 10
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
OSchriever Linux-Programm öffnen Allgemeine Java-Themen 6
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
L Eclipse Konsole im exportierten Programm Allgemeine Java-Themen 2
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
P Erstelltes Programm ist doppelt so groß Allgemeine Java-Themen 11
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
S Einfaches Programm programmieren Allgemeine Java-Themen 5
M kleines KI Programm Idee Allgemeine Java-Themen 7
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
ralfb1105 Starten Java App(s) (.jar) aus einem Java Programm Allgemeine Java-Themen 18
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
N Programm startet nicht, nur per cmd Allgemeine Java-Themen 5
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
E Java Programm mit Clients erweitern - Möglichkeiten? Allgemeine Java-Themen 2
Joker4632 Methoden Befehl an bereits extern geöffnete Programm-spezifische Konsole senden Allgemeine Java-Themen 1
M Dieses Programm schneller machen? Allgemeine Java-Themen 2
R Programm zur Rekursion Allgemeine Java-Themen 5
N Quicksort Programm hängt sich auf Allgemeine Java-Themen 6
S Compiler-Fehler Programm verhält sich in Eclipse anders Allgemeine Java-Themen 1
B Input/Output Programm zum Auslesen/Beschreiben von Textdateien, wie Geschwindigkeit erhöhen? Allgemeine Java-Themen 18
dereki2000 Programm veröffentlichen Allgemeine Java-Themen 14
mrbig2017 Threads Chat Programm mit Threads? Allgemeine Java-Themen 2
M Suche aktuelle Apache Poi Bibliothek zum Einbinden in mein Programm Allgemeine Java-Themen 2
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
S Java Programm (Spiel mit den Boxen) Allgemeine Java-Themen 1
kodela Programm hängt in der Ereigniswarteschlange Allgemeine Java-Themen 13
A Java Programm verbessern/vereinfachen Allgemeine Java-Themen 20
P Programm darf nicht mehrfach startbar sein Allgemeine Java-Themen 16
S Programm hängt sich manchmal (selten) auf Allgemeine Java-Themen 9
JavaNewbie2.0 Programm nicht im Taskmanager schliesen können Allgemeine Java-Themen 15
J XML Datei mit installiertem Programm öffnen Allgemeine Java-Themen 7
Arif Input/Output Dateien im Jar-Programm speichern Allgemeine Java-Themen 12
H Java FX 2 Fragen um Programm in mehrere sprachen zu übersetzen in Gluon Framwork Allgemeine Java-Themen 3
JavaNewbie2.0 Programm bleibt "stehen" Allgemeine Java-Themen 2
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
E Mit Java ein Python Programm starten Allgemeine Java-Themen 20
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
Aruetiise Methoden .jar mit Programm öffnen Allgemeine Java-Themen 2
C anderes Programm schließen! Allgemeine Java-Themen 5
C Webseiten Programm problem Allgemeine Java-Themen 5
E Programm auf Installation prüfen Allgemeine Java-Themen 1
J Programm zum Download von CSV-Dateien Allgemeine Java-Themen 4
E Programm ohne Windowsrand(Vollbild) ? Allgemeine Java-Themen 5
P Schnittstelle java Programm zu Webserver / Browser Allgemeine Java-Themen 2
J Schutz Programm Jar Exe Allgemeine Java-Themen 7
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
U Input/Output Warum wirft mir das Programm diesen Fehler? Allgemeine Java-Themen 6
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
B Programm updaten mit FXLauncher Allgemeine Java-Themen 1
D Nicht quelloffenes Programm Allgemeine Java-Themen 5
F Java-Programm lizensieren Allgemeine Java-Themen 21
I Programm im Hintergrund bei Windows zur Steuerung der Tastatur nutzen Allgemeine Java-Themen 2
X Aus Programm "Installationsprogramm" machen Allgemeine Java-Themen 6
T Java Programm in Internetseite? Allgemeine Java-Themen 4
T Java Programm frisst RAM Allgemeine Java-Themen 6
H Alter Java-Programm läuft nicht mehr. Laut strace fehlt libpthread.so.0 Allgemeine Java-Themen 3
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
E Exceptions abfangen und dann Programm stoppen - aber wie? Allgemeine Java-Themen 2
Neumi5694 Offenes Programm nutzen Allgemeine Java-Themen 4
L Java-Programm Zahlenkombinationen ausgeben Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben