# Javamail with authentication



## tonyhur (20. Feb 2022)

Ich habe folgende Klasse geschrieben, um ein Email zu schicken.



> import java.io.*;
> import java.util.*;
> import javax.mail.*;
> import javax.mail.Authenticator;
> ...




Leider kommt beim Ausführen die Meldung:
........
DEBUG SMTP: need username and password for authetication
DEBUG SMTP: protocolConnect returning false, host=****, user=****, password=(null)
.....

Das verstehe ich nicht. Ich übergebe ja das "user" und "pass" an den PasswordAuthentication.

Vielen Dank für einen Hint
Tony


----------



## Jw456 (20. Feb 2022)

ist der user  und pw auch das was du zb in outlook eingestellt hast?


```
Properties properties = System.getProperties();

        // Setup mail server
        String host = "smtp.gmail.com";
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", "465");
        properties.put("mail.smtp.ssl.enable", "true");
        properties.put("mail.smtp.auth", "true");

        // Get the Session object.// and pass
        Session session = Session.getInstance(properties, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("youremail@gmail.com", "*******");

            }
```


----------



## tonyhur (20. Feb 2022)

Jw456 hat gesagt.:


> ist der user  und pw auch das was du zb in outlook eingestellt hast?
> 
> 
> ```
> ...


ja, klar. Ich benutze auch dasselbe in einer php Applikation. Und dort funktioniert es. (Ich benutze nicht gmail und auch nicht outlook, aber das tut wahrscheinlich nichts zur Sache).


----------



## LimDul (20. Feb 2022)

Irgendwo fehlt mir die Verbindung zwischen den Transport & der Session. Ich bin kein experte im Mail-Versand, aber wenn ich mir die Beispiele anschaue, muss der Transport aus der Session erzeugt werden (z.B.  Transport transport = session.getTransport()

Das ist ja auch logisch, weil der Transport User/Password Auth vermutlich macht.

Das fehlt bei dir im Code


----------



## Jw456 (20. Feb 2022)

LimDul hat gesagt.:


> Irgendwo fehlt mir die Verbindung zwischen den Transport & der Session. Ich bin kein experte im Mail-Versand, aber wenn ich mir die Beispiele anschaue, muss der Transport aus der Session erzeugt werden (z.B.  Transport transport = session.getTransport()
> 
> Das ist ja auch logisch, weil der Transport User/Password Auth vermutlich macht.
> 
> Das fehlt bei dir im Code


Das senden ist eigentlich ok so. 
Nur sein Aut wird nicht stimmen. Er bekommt ja auch genau diese Fehler Meldung. 
Die Anmeldung beim SMTP Server schlägt fehl.


----------



## Jw456 (20. Feb 2022)

```
props.put("mail.smtp.port", "465");
props.put("mail.smtp.auth", "true");
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.ssl.protocols", "TLSv1.2");
```
Ob  starttls   und Port 465 stimmt.
465 ist bei den  meisten Servern ssl/tsl

Starttsl ist meistens ein anderer Port.



Ich würde auch ssl/tsl benutzen

So wie ich es gezeigt habe.


----------



## tonyhur (20. Feb 2022)

I solved the problem: In the props the following line had to be added:



> props.put("mail.smtp.ssl.enable", "true");



Probably this depends on the mail server used.... I don't know.


Tony


----------



## Jw456 (20. Feb 2022)

Bei welchen Provider ist deine Adresse?


----------



## tonyhur (20. Feb 2022)

hostpoint.ch --- vermutlich by Swisscom (Schweizer Telefonanbieter)


----------



## Jw456 (20. Feb 2022)

Starttls 587






						E-Mail-Einstellungen auf einen Blick
					

Dieser Artikel erklärt Ihnen die Einstellungen, die Sie für ein beliebiges E-Mail-Programm benötigen, in einer kurzen Übersicht. E-Mails per IMAP abrufen E...




					support.hostpoint.ch


----------

