Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo, ich habe hier ein Problem mit NetBeans.
Ich möchte gerne ein Programm schreiben, welches auch Mails versenden kann.
Hierzu brauch ich die Klasse "javax.mail.*".
Hab mir also von SUN ein Mail Paket, mit den ganzen JARs runtergeladen.
Nur wie kann ich denn jetzt dieses Paket so einbinden das ich es auch nutzen kann?
Hat hierzu vielleicht einer eine Anleitung?
Hallo, ich habe hier ein Problem mit NetBeans.
Ich möchte gerne ein Programm schreiben, welches auch Mails versenden kann.
Hierzu brauch ich die Klasse "javax.mail.*".
Hab mir also von SUN ein Mail Paket, mit den ganzen JARs runtergeladen.
Nur wie kann ich denn jetzt dieses Paket so einbinden das ich es auch nutzen kann?
Hat hierzu vielleicht einer eine Anleitung?
1. javax.mail*; -> Punkt vergessen, richtig: javax.mail.*;
nicht den ganzen Odner einbeziehen, alle jars, welche in dem Ordner waren, den du heruntergeladen hast, in den Klassenpfad, es kann sein, dass diese JARs wieder Abhängigkeiten zu anderen JARs haben, da musst du schauen, schreib mal die Fehlermeldung.
wie ist das denn jetzt noch mit dem importieren der jar dateien(libarys)?
kann man die dauerhaft importieren? oder muss ich die für jedes projekt extra einfügen?
muss wirklich jede jar einzeln eingefügt werden? oder kann man irgendwie einen ganzen ordner hinzufügen?
wie ist das denn jetzt noch mit dem importieren der jar dateien(libarys)?
kann man die dauerhaft importieren? oder muss ich die für jedes projekt extra einfügen?
muss wirklich jede jar einzeln eingefügt werden? oder kann man irgendwie einen ganzen ordner hinzufügen?
Grundsätzlich musst du jedes jar einzeln hinzufügen. Wenn du dir mal MAVEN 2.0 ansiehst wirst du aber sehen, dass man das im professionelleren Umfeld nicht macht, sondern man hat ein Repository auf einem Server, in diesem Repository sind die für ein Projekt benötigten jars und MAVEN referenziert auf dieses Repository, sprich du hast die jars nicht lokal sondern auf einem Server und bei Gruppenentwicklung kann jeder Entwickler auf dieses zugreifen.
Bei kleineren Projekten (wenn du alleine entwickelst) einfach die jars rein in den ClassPath und los gehts.
Den SMTP-Host hast Du bereits gesetzt:
[JAVA=12]props.put( "mail.smtp.host", "mail.java-tutor.com" );[/code]
Und mit dem Aufruf der Methode
Code:
postMail
übergibst Du 4 Parameter:
- "Buchtest@java-tutor.com" : entspricht dem String recipient in der Methode --> Mail-Empfänger
- "Tolles Buch" : entspricht dem String subject in der Methode --> Betreff
- "Wow. Das Buch ist schön zu lesen" : entspricht dem String message in der Methode --> Mail-Absender
- "JavaTutor@java-tutor.com" : entspricht dem String from in der Methode --> Betreff
wie führ ich den aus der main klasse die Mail klasse aus?
und warum gibr es eine main methode in der mail klasse?
ich dachte die main klasse darf es in java nur einmal geben.
und aus dieser werden dann die anderen methoden aufgerufen, oder?
Ich glaube Du würfelst gerade Klassen und Methoden ein wenig durcheinander.
Also die Klasse in Deinem Beispiel heißt clsMailVersenden
und in dieser hast Du 2 Methoden (main und postMail).
Eine Klasse kann nur eine main-Methode haben, da diese
das Programm startet.
Eine Klasse kann aber aus vielen Methoden bestehen unter anderem
auch aus einer main-Methode. Aus der main-Methode kannst Du
dann auch die anderen Methoden der Klasse aufrufen.
(...das ist jetzt nur eine grob vereinfachte Info dazu feif: )
Dein Beispiel ruft demnach einfach aus der main-Methode (Programmstart)
die Methode postMail auf um eine Mail zu versenden.
bedeutet das ich habe eine "main klasse" in der ich wieder "main" methoden hab.
diese main klasse kann andere klassen aufrufen die aber auch wieder eine main methode neben anderen methoden haben darf?
also es darf in einem projekt nur eine main klasse geben, aber jede andere klasse wie z.b. clsMailVersenden darf unabhänging von allen anderen klassen auch eine main methode haben?
also es darf in einem projekt nur eine main klasse geben, aber jede andere klasse wie z.b. clsMailVersenden darf unabhänging von allen anderen klassen auch eine main methode haben?
Im Prinzip ja, aber die Starter-Klasse muß nicht zwangsläufig main heißen - der Name ist frei wählbar.
Du solltest Dich aber am besten gleich an die Java Programming Style Guidelines gewöhnen.
Um Dein Beispiel noch einmal zu verwenden:
Die Klasse clsMailVersenden kann auch allein gestartet werden!
Java:
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
public class clsMailVersenden
{
public static void postMail( String recipient, String subject, String message, String from ) throws MessagingException
{
Properties props = new Properties();
props.put( "mail.smtp.host", "mail.java-tutor.com" );
props.put("mail.smtp.port", Integer.toString(25));
Session session = Session.getDefaultInstance( props );
Message msg = new MimeMessage( session );
InternetAddress addressFrom = new InternetAddress( from );
msg.setFrom( addressFrom );
InternetAddress addressTo = new InternetAddress( recipient );
msg.setRecipient( Message.RecipientType.TO, addressTo );
msg.setSubject( subject );
msg.setContent( message, "text/plain" );
Transport.send( msg );
}
public static void main( String[] args ) throws Exception
{
postMail( "Buchtest@java-tutor.com",
"Tolles Buch",
"Wow. Das Buch ist schön zu lesen",
"JavaTutor@java-tutor.com");
}
}
Und hier noch eine kleine Starter-Klasse mit dem 'schönen' Namen TheMainClass
Java:
public class TheMainClass
{
public static void main( String[] args ) throws Exception
{
clsMailVersenden.postMail( "Buchtest@java-tutor.com",
"Tolles Buch",
"Wow. Das Buch ist schön zu lesen",
"JavaTutor@java-tutor.com");
}
}
Wie Du siehst ist die main-Methode fast identisch mit der aus der Klasse clsMailVersenden.
Einzige Ausnahme:
[JAVA=6]clsMailVersenden.postMail( ... )[/code]
Da Du eine Methode aus einer anderen Klasse starten willst, mußt Du Java mitteilen, wo diese Methode zu finden ist.
...aber das solltest Du als fleissiger Insel-Leser bereits wissen :rtfm:
naja so ein fleissiger insel leser bin ich ja garnicht, ich probier lieber so sachen aus und wenn ich mich durch ein paar projekte gequält hab versteh ich auch so ne sprache in der regel soweit.
hab jetzt das mail programm als eine klasse geschrieben, wie im beispiel, bekomm aber folgenden fehler:
run:
Exception in thread "main" javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
nested exception is:
java.net.ConnectException: Connection refused: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525)
at javax.mail.Service.connect(Service.java:291)
at javax.mail.Service.connect(Service.java:172)
at javax.mail.Service.connect(Service.java:121)
at javax.mail.Transport.send0(Transport.java:190)
at javax.mail.Transport.send(Transport.java:120)
at pingcheck.clsMailVersenden.postMail(clsMailVersenden.java:29)
at pingcheck.clsMailVersenden.main(clsMailVersenden.java:34)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:284)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1672)
... 8 more
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)
sorry für meine "dummen" fragen, aber die syntax von java ist für mich noch etwas schwer zu verstehen, hab bis jetzt nur vb.net, vba, php und bissel batch skript programmiert.
hoffe das dann meine mail klasse endlich läuft, werde es morgen gleich testen.
vielen dank schonmal an alle die mir so geduldig geholfen haben!
finde ich echt super!
wenn ich jetzt noch eine rückgabe methode einbauen will, bekomm ich die meldung das dies nicht in einer void methode geht.
ist ja auch verständlich.
aber ich will doch garkeine void methode hinzufügen.
hab jetzt eine main class aus der ich die clsMailVersenden aufrufen will.
die letzte methode aus malversenden ist MailWurdeVerschickt.
nur bekomm ich jetzt zwei fehler von wegen cannat return a void from method......
Java:
public MailWurdeVerschickt()
{
String strRueck;
strRueck = "Mail wurde verschickt";
return strRueck;
}
public String MailWurdeVerschickt() {
return "Mail wurde verschickt";
}
... oder die Methode ganz weglassen
Btw: In Java schreiben sich Variablen (ausser final static Members), Klassen und Methoden Camel Case. Methoden und Variablen mit beginnendem Kleinbuchstaben. Also würde es korrekt [c]mailWurdeVerschickt()[/c] lauten.