# Mail versenden mit java.mail



## Xanond (19. Apr 2016)

Hallo ich plane über mein Programm mails zu versenden und hab auch scho  die java.mail api erfolgreich installiert.  Leider kapier ich das nicht ganz.  Ich möchte meine mails von jedem Benutzer aus senden können z.B uber den localhost von jedem Benutzer den ich dann auch noch rausfinden müsste.  Am besten wäre ein einfaches beispiel wo es jemand schon gechaft hat eine mail zu versenden.


----------



## Dukel (19. Apr 2016)

Hast du auf Localhost auch einen Mailserver laufen?
Was hast du denn schon getestet?


----------



## RalleYTN (20. Apr 2016)

Ich habe mal eine kleine Bibliothek geschrieben, die die java.mail API vereinfacht und besser verständlich macht. Ein Videotutorial ist auch dabei: http://java-codeschnipsel.weebly.com/bibliotheken.html#MailingLibrary


----------



## max40 (20. Apr 2016)

Hiermit solltest du klar kommen, enthält alles notwendige mMn. : http://openbook.rheinwerk-verlag.de/java7/1507_11_012.html


----------



## Xanond (20. Apr 2016)

Hallo nochmal also ich hab folgenden code:


```
props.setProperty( "mail.pop3.host", "securepop.t-online.de" );
    props.setProperty( "mail.pop3.user", user );
    props.setProperty( "mail.pop3.password", pass );
    props.setProperty( "mail.pop3.port", "995" );
    props.setProperty( "mail.pop3.auth", "true" );
    props.setProperty( "mail.pop3.socketFactory.class",
                       "javax.net.ssl.SSLSocketFactory" );

    // Zum Senden
   /* props.setProperty( "mail.smtp.host", "smtp-mail.outlook.com" );
    props.setProperty( "mail.smtp.auth", "true" );
    props.setProperty( "mail.smtp.port", "587" );
    props.setProperty( "mail.smtp.socketFactory.port", "587" );
    props.setProperty( "mail.smtp.socketFactory.class",
                       "javax.net.ssl.SSLSocketFactory" );
    props.setProperty( "mail.smtp.socketFactory.fallback", "false" );*/

    props.setProperty( "mail.smtp.host", "securesmtp.t-online.de" );
    props.setProperty( "mail.smtp.auth", "true" );
    props.setProperty( "mail.smtp.port", "465" );
    props.setProperty( "mail.smtp.socketFactory.port", "465" );
    props.setProperty( "mail.smtp.socketFactory.class",
                       "javax.net.ssl.SSLSocketFactory" );
    props.setProperty( "mail.smtp.socketFactory.fallback", "false" );
```


aber die Verbindung kann nicht hergestellt werden er sagt mir immer ich habe einen falschen user oder passwort


----------



## Joose (20. Apr 2016)

Code bitte in Code-Tags packen, danke! 
[java] ... dein code ... [/java]


----------



## Xanond (20. Apr 2016)

Joose hat gesagt.:


> Code bitte in Code-Tags packen, danke!
> [java] ... dein code ... [/java]



Okay danke

Ich versuch mein Problem nochmal genauer zu erläutern:


```
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package mail;

import java.io.IOException;
import java.util.Arrays;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.internet.ContentType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
*
* @author dkast
*/
public class Mail {

    /**
     * @param args the command line arguments
     */
   private Mail() {}

  public static Session getGMailSession( String user, String pass )
  {
  
    final Properties props = new Properties();

    // Zum Empfangen
    props.setProperty( "mail.pop3.host", "securepop.t-online.de" );  //PROP
    props.setProperty( "mail.pop3.user", user );
    props.setProperty( "mail.pop3.password", pass );
    props.setProperty( "mail.pop3.port", "995" );
    props.setProperty( "mail.pop3.auth", "true" );
    props.setProperty( "mail.pop3.socketFactory.class",
                       "javax.net.ssl.SSLSocketFactory" );

    // Zum Senden nur auskommentiert weil ich von tonline and tonline senden möchte
   /* props.setProperty( "mail.smtp.host", "smtp-mail.outlook.com" );
    props.setProperty( "mail.smtp.auth", "true" );
    props.setProperty( "mail.smtp.port", "587" );
    props.setProperty( "mail.smtp.socketFactory.port", "587" );
    props.setProperty( "mail.smtp.socketFactory.class",
                       "javax.net.ssl.SSLSocketFactory" );
    props.setProperty( "mail.smtp.socketFactory.fallback", "false" );*/


    props.setProperty( "mail.smtp.host", "securesmtp.t-online.de" );
    props.setProperty( "mail.smtp.auth", "true" );
    props.setProperty( "mail.smtp.port", "465" );
    props.setProperty( "mail.smtp.socketFactory.port", "465" );
    props.setProperty( "mail.smtp.socketFactory.class",
                       "javax.net.ssl.SSLSocketFactory" );
    props.setProperty( "mail.smtp.socketFactory.fallback", "false" );

    return Session.getInstance( props, new javax.mail.Authenticator() {
      [USER=48687]@Override[/USER] protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication( props.getProperty( "mail.pop3.user" ),
                                           props.getProperty( "mail.pop3.password" ) );
      }
    } );
//    session.setDebug( true );
  }

public static void postMail( Session session, String recipient,
                             String subject, String message )
  throws MessagingException
{
  Message msg = new MimeMessage( session );

  InternetAddress addressTo = new InternetAddress( recipient );
  msg.setRecipient( Message.RecipientType.TO, addressTo );

  msg.setSubject( subject );
  msg.setContent( message, "text/plain" );
  Transport.send( msg );
}
}
```

Und hier mein Aufruf:


```
public class test {


    public static void main(String[] args) throws MessagingException {
        // TODO code application logic here
    
          Session session = Mail.getGMailSession(
                              JOptionPane.showInputDialog( "user" ),
                              JOptionPane.showInputDialog( "pass" ) );
        Mail.postMail( session, "dkast1@t-online.de",
                    "Kurze Info", "Hab's verstanden!" );
    }
}
```

Mir wird bei korrekter Eingabe  der Fehler angezeigt das das Passwort oder der username falsch sind.
Danke schnon mal für die Antworten


----------



## RalleYTN (21. Apr 2016)

gibt es nun grund für die [ EMAIL ] [ / EMAIL ] dinger?


----------



## Joose (21. Apr 2016)

Ja die Code-Tags wurden falsch geschrieben, daher hat das Forum die Email Adresse interpertiert und mittels BB-Code zu einem Email Link geändert.
Nachdem die Code-Tags gerichtet wurden, bleibt der pure BB-Code stehen 

EDIT: habs mal entfernt


----------



## RalleYTN (21. Apr 2016)

Joose hat gesagt.:


> Ja die Code-Tags wurden falsch geschrieben, daher hat das Forum die Email Adresse interpertiert und mittels BB-Code zu einem Email Link geändert.
> Nachdem die Code-Tags gerichtet wurden, bleibt der pure BB-Code stehen
> 
> EDIT: habs mal entfernt


ahh ok. ich war verwirrt. dachte das gehört zum code.


----------



## Xanond (21. Apr 2016)

RalleYTN hat gesagt.:


> ahh ok. ich war verwirrt. dachte das gehört zum code.


Hi hast du vielleicht einen Lösungsansatz für mich parat


----------



## RalleYTN (22. Apr 2016)

Xanond hat gesagt.:


> Hi hast du vielleicht einen Lösungsansatz für mich parat


hatte erst geguckt ob die ports korrekt sind. scheint eigentlich alles ok zu sein. hab mich schon lange nicht mehr mit der API beschäftigt. Zum Senden von Mails hab ich mir einfach eine leicht zu verstehende bibliothek geschrieben.
http://java-codeschnipsel.weebly.com/bibliotheken.html#MailingLibrary


----------



## thet1983 (23. Apr 2016)

Hallo, eine Frage wenn man Hotmail senden will benötigt man ja einen "Fake SMTP" Server oder?


----------



## Joose (25. Apr 2016)

thet1983 hat gesagt.:


> ... wenn man Hotmail senden will ...


Willst du von oder an Hotmail senden? Warum sollte man einen Fake SMTP Server brauchen?


----------



## thet1983 (25. Apr 2016)

sry... hatte wohl einen kleinen aber feinen hirnschlag....

man sollte vorher mehr lesen bevor man schreibt 

Sry...


----------

