JavaMail

Basti4231

Bekanntes Mitglied
Hey Leute,

ich krieg es irgendwie überhaupt nicht gebacken ein Sendeprogramm für E-Mails zu schreiben (mit JavaMail). Ich krieg bei meinem Versuch zb. Exceptions wie, dass der Port 25 sagt Connection refused usw.

Dann versuche ich SampleCodes auszuprobiern, die ich nichtma bis zum laufen kriege...
Habe mir JavaMail runtergeladen und in mein Mail-Projekt eingebunden.
Imports laufen auch sauber durch.

Kann jemand ein Beispiel geben bzw. tutorial links etc. für einen Code, der auch funktioniert?
Würde am Ende dann gerne vielleicht über yahoo ne Mail schicken(als Testmail vielleicht an mich selbst).

Thx for help 🙂

lg Basti
 
Java:
String host = ...;
String from = ...;
String to = ...;

// Get system properties
Properties props = System.getProperties();

// Setup mail server
props.put("mail.smtp.host", host);

// Get session
Session session = Session.getDefaultInstance(props, null);

// Define message
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, 
  new InternetAddress(to));
message.setSubject("Hello JavaMail");
message.setText("Welcome to JavaMail");

// Send message
Transport.send(message);

edit: ach ja, das kam hier her 🙂
jGuru: Fundamentals of the JavaMail API

ich habs jetzt zwar nicht probiert, aber das sollte funktionieren, hast du denn auch die richtigen server eingetragen, wenn du über yahoo schicken willst?
 
Ne, hab des noch nich so ganz richtig eingetragen wohl...

Was genau kommt bei host rein? Also nicht meine IP-Adresse oder?^^

@Edit: Hier mein StackTrace:

Java:
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:1934)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
	at javax.mail.Service.connect(Service.java:295)
	at javax.mail.Service.connect(Service.java:176)
	at javax.mail.Service.connect(Service.java:125)
	at javax.mail.Transport.send0(Transport.java:194)
	at javax.mail.Transport.send(Transport.java:124)
	at de.basti.mail.MailTest.main(MailTest.java:64)
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
	at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
	at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.SocksSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:288)
	at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:231)
	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900)
	... 7 more

lg Basti
 
Zuletzt bearbeitet:
Vielleicht wäre es ganz sinnvoll, dich einfach mal die elementarsten Grundlagen zu dem Problemgebiet, für das du ein Programm schreiben willst, anzueigenen.
 
Das ist z.B: ein host: "smtp.gmx.net"
findest du in deinen email, einstellungen!

empfehle aber auch stark dir wenigstens mal ein komplettes Tut durchzulesen!
 
Ich mag die Props nicht. Ein Bsp ohne:
Java:
package ch.dmj.faq.mail;
 
import java.io.IOException;
import java.util.Properties;
 
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.URLName;
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;
 
 
class SimpleMail {
 
    // login data
    private static final String TYPE = "smtp"; // smtps für secure
    private static final String HOST = "localhost";
    private static final String USER = "sysadmin";
    private static final String PASSWD = "password";
    private static final int PORT = 25;
    // send data
    private static final String SENDER = "sysadmin@localhost";
    private static final String RECIPIENT = "test@localhost";
 
    public static void main(String[] args) throws Exception {
        sendMail();
    }
 
    private static void sendMail() throws NoSuchProviderException, MessagingException,
            AddressException, IOException {
        Properties props = new Properties();
        Session session = Session.getDefaultInstance(props);
        session.setDebug(false);
        Transport tr = session.getTransport(new URLName(TYPE, HOST, PORT, null, USER, PASSWD));
        Message message = new MimeMessage(session);
        message.addRecipient(RecipientType.TO, new InternetAddress(RECIPIENT));
        message.addFrom(new InternetAddress[] { new InternetAddress(SENDER) });
        //subject
        message.setSubject("the subject");
        //the multipart
        MimeMultipart multiPart = new MimeMultipart("mixed");
        // a plaintext part
        MimeBodyPart body1 = new MimeBodyPart();
        body1.setContent("blub", "text/plain");
        multiPart.addBodyPart(body1);
        // a html part
        MimeBodyPart body2 = new MimeBodyPart();
        body2.setContent("<b>hallo welt</b>", "text/html");
        multiPart.addBodyPart(body2);
        // a picture
//      MimeBodyPart body3 = new MimeBodyPart();
//      body3.attachFile(new File("/home/user/Desktop/picture"));
//      multiPart.addBodyPart(body3);
        // set the content to the multipart
        message.setContent(multiPart);
        //send
        tr.connect();
        tr.sendMessage(message, message.getAllRecipients());
        tr.close();
    }
}
 
Hab jetz ma Infos über yahoo mail geholt.

Posteingangsserver: pop.mail.yahoo.de oder pop.mail.yahoo.com
Postausgangsserver: smtp.mail.yahoo.de oder smtp.mail.yahoo.com

Hab als "type(deine variable)" dann den smtp.mail.yahoo.de genommen und jetz kam die NoSuchProviderException^^

lg basti
 
probiere es bei Type mal mit nur "smtp"...

dem host musst du dann "smtp.mail.yahoo.de oder smtp.mail.yahoo.com" hinzufügen, je nachdem womit deine emailadresse endet!
 

Zurück
Oben