Java E-mail versenden. SMTP Port Fehler

Rashakiel

Mitglied
Hallo,

ich möchte momentan kurz etwas probieren und zwar wie man innerhalb von Eclipse mit Java eine E-Mail versenden kann. Habe dazu auch die Mail.jar api runtergeladen etc. und einen Beispielcode gefunden und für mich angepasst. Jetzt kommt aber immer folgender Fehler:

"
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465, response: -1
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1960)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
at javax.mail.Service.connect(Service.java:317)
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 test.SendEmail.main(SendEmail.java:57)
"

Also irgendwas stimmt wohl nicht, weiß aber nicht was :/ Habe persönliche Daten jetzt rausgenommen natürlich.

Java Code:

Java:
package test;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendEmail
{
   public static void main(String [] args)
   {   
      // Recipient's email ID needs to be mentioned.
      String to = "Zensiert";

      // Sender's email ID needs to be mentioned
      String from = "zensiert";

     
      // Get system properties
      Properties props = new Properties();
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "465");
     

//       Get the default Session object.
        
        Session session = Session.getInstance(props,
             new javax.mail.Authenticator() {
               protected PasswordAuthentication getPasswordAuthentication() {
                   return new PasswordAuthentication("Username","Passwort");
               }
             });
        
      try{
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);
         
         // Set From: header field of the header.
         message.setFrom(new InternetAddress(from));

         // Set To: header field of the header.
         message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

         // Set Subject: header field
         message.setSubject("test");

         // Now set the actual message
         message.setText("huhu");
        
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}
 
Port für TLS/STARTTLS ist 587.
Dein Port (465) ist für SSL.

Gruß Robert
Oh, dankeschön! 🙂

Habe in meinem Google schon den Zugriff durch fremde Applikationen erlaubt.
Jetzt tritt aber folgender Fehler auf: "
javax.mail.AuthenticationFailedException: 534-5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbu_
534-5.7.14 8BbOogCL8MMYURwk9X3dmws4qS_0adQV0MRmSXyPBT9EzaWcyzu6z1jALrVfSBzL_r__mW
534-5.7.14 crV2jpwZQd1cv8g2Dscc--N1LQFGtG1BWcrhOa42htdE7gNxXI4RJLSQW1DMne2D3MjDrI
534-5.7.14 rLWwlmtBK7XK8wIRL03SwCR-zKu1tt25eAkZPqaKrNeGBgNF_4uBNcQWnC1l9rrRpDdHYw
534-5.7.14 hZqZc16o6qE_dpeAZP15L61fDtQz4> Please log in via your web browser and
534-5.7.14 then try again.
534-5.7.14 Learn more at
534 5.7.14 https://support.google.com/mail/answer/78754 s10sm7351166wmb.8 - gsmtp

at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:823)
at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:756)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:673)
at javax.mail.Service.connect(Service.java:317)
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 test.SendEmail.main(SendEmail.java:57)"
 
Update: Es geht jetzt. Google hat eben nicht gespeichert, dass weniger sichere Apps zugreifen dürfen. Vielen Dank für die Hilfe mit dem Port es klappt jetzt soweit.

Jetzt muss ich das nur noch hinbekommen, dass die E-Mail per Knopfdruck gesendet wird. Aber das klappt denke ich mal. Ansonsten melde ich mich =)
 
Irgendwie ist momentan bei mir der Wurm drin. Momentan wollen die einfachsten Dinge einfach nicht klappen 😀
Wollte testweise einfach mal eine GUI erstellen mit einem Textfeld und einem Button und sobald man den Button drückt, soll er den Inhalt aus dem Textfeld nehmen und per E-Mail verschicken. Aber wenn ich auf den Button drücke tut sich nichts :/

Code:
Java:
package test;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Properties;

import javax.swing.JFrame;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.JButton;
import javax.swing.JTextField;

public class mail_view implements ActionListener {

    private JFrame frame;
    private JTextField textField;
    private JButton btnEmail;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    mail_view window = new mail_view();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public mail_view() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
       
        JButton btnEmail = new JButton("E-Mail");
        btnEmail.setBounds(105, 94, 89, 23);
        frame.getContentPane().add(btnEmail);
        btnEmail.addActionListener(this);

        textField = new JTextField();
        textField.setBounds(175, 34, 86, 20);
        frame.getContentPane().add(textField);
        textField.setColumns(10);
    }
   
    public String gettextfield(){
        return textField.getText();
    }
   
    public JButton btnEmail(){
        return btnEmail();
    }
   
    public void setEmail(JButton btnEmail){
        this.btnEmail = btnEmail;
    }
   
    public void senden(){
        // Empfänger E-Mail Adresse
          String to = "Empfänger";

          // Absender E-Mail Adresse
          String from = "Absender";

         
          // Daten des E-Mail Servers übergeben
          Properties props = new Properties();
            props.put("mail.smtp.starttls.enable", "true");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.host", "mx.freenet.de");
            props.put("mail.smtp.port", "587");
         

            // Verbindung mit dem Mail Server. Benutzername und Passwort übergeben
            
            Session session = Session.getInstance(props,
                 new javax.mail.Authenticator() {
                   protected PasswordAuthentication getPasswordAuthentication() {
                       return new PasswordAuthentication("Username, Password");
                   }
                 });
            
          try{
             // Nachricht versenden
             MimeMessage message = new MimeMessage(session);
             
            
             message.setFrom(new InternetAddress(from));

             message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

             // Betreff
             message.setSubject("test");

             // Text
             message.setText(gettextfield());
            
             Transport.send(message);
             System.out.println("Sent message successfully....");
          }catch (MessagingException mex) {
             mex.printStackTrace();

          }
    }
   
   
   
   
    public void actionPerformed(ActionEvent e){
        if(e.getSource() == btnEmail) {
            senden();
        }
    }
}
 
Debugger hat nichts gebracht und habe an sämtlichen Stellen ein System.out.println() probiert. Nirgends tut sich etwas. Selbst wenn der Sysout Befehl direkt an erster Stelle in der senden() Funktion ist. Nichts wird angezeigt. Keine NE, kein Fehler, nichts....
 
Zuletzt bearbeitet:
Manchmal sieht man den Wald vor lauter Bäumen nicht.
Du deklarierst deinen JButton einmal global und dann noch mal lokal. Der lokale ist damit zuviel 😉
Hmm. Ich habe gar nichts deklariert, sondern einfach nur die GUI mit dem WindowBuilder erstellt 😀

Aber vielen Dank, dass du das gesehen hast. Jetzt funktioniert es natürlich wunderbar! Dankeschön und einen schönen Abend wünsche ich noch 🙂
 

Zurück
Oben