1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

JavaMail mit Anhang

Dieses Thema im Forum "Enterprise Java (JEE, J2EE, Spring & Co.)" wurde erstellt von MrTimeey, 30. März 2012.

  1. MrTimeey

    MrTimeey Grünschnabel

    Hallo zusammen,

    ich probiere mich zur Zeit in Java Mail und will nun eine Mail mit Anhang verschicken. Leider komme ich momentan nicht weiter. Auch Google und Foren durchforsten hat mir nicht geholfen.

    Der Code funktioniert ohne den Part mit dem Anhang ohne Probleme.
    Jedoch mit dem Anhang bekomme ich folgende Exception:

    Code (Text):
    1. Exception in thread "main" javax.mail.AuthenticationFailedException: failed to connect, no password specified?
    2.     at javax.mail.Service.connect(Service.java:329)
    3.     at javax.mail.Service.connect(Service.java:176)
    4.     at javax.mail.Service.connect(Service.java:125)
    5.     at javax.mail.Transport.send0(Transport.java:194)
    6.     at javax.mail.Transport.send(Transport.java:124)
    7.     at example.SendMailWithAttachmentExample.main(SendMailWithAttachmentExample.java:59)
    Hier der Code:

    Code (Text):
    1. package example;
    2.  
    3. import java.io.File;
    4. import java.util.Properties;
    5.  
    6. import javax.activation.DataHandler;
    7. import javax.activation.FileDataSource;
    8. import javax.mail.Message;
    9. import javax.mail.Session;
    10. import javax.mail.Transport;
    11. import javax.mail.internet.InternetAddress;
    12. import javax.mail.internet.MimeBodyPart;
    13. import javax.mail.internet.MimeMessage;
    14. import javax.mail.internet.MimeMultipart;
    15.  
    16. public class SendMailWithAttachment {
    17.  
    18.     /**
    19.      * @param args
    20.      */
    21.     public static void main(String[] args) throws Exception {
    22.         Properties props = new Properties();
    23.  
    24.         String host = "smtp.gmail.com";
    25.         int port = 587;
    26.         String user = "user@googlemail.com";
    27.         String pass = "pass";
    28.  
    29.         props.put("mail.smtp.auth", "true");
    30.         props.put("mail.smtp.starttls.enable", "true");
    31.  
    32.         Session session = Session.getInstance(props);
    33.         Transport transport = session.getTransport("smtp");
    34.         transport.connect(host, port, user, pass);
    35.  
    36.         Message message = new MimeMessage(session);
    37.         message.setRecipient(Message.RecipientType.TO, new InternetAddress(
    38.                 "ziel@googlemail.com"));
    39.  
    40.         message.setSubject("Attachment Test");
    41.         message.setText("abcdefg");
    42.  
    43.         MimeMultipart mimeMultipart = new MimeMultipart();
    44.  
    45.         MimeBodyPart text = new MimeBodyPart();
    46.         text.setText("abc");
    47.         text.setDisposition(MimeBodyPart.INLINE);
    48.  
    49.         File file = new File("c:\\bsp.txt");
    50.         MimeBodyPart attachement = new MimeBodyPart();
    51.         attachement.setDataHandler(new DataHandler(new FileDataSource(file)));
    52.         attachement.setFileName(file.getName());
    53.         attachement.setDisposition(MimeBodyPart.ATTACHMENT);
    54.         mimeMultipart.addBodyPart(text);
    55.         mimeMultipart.addBodyPart(attachement);
    56.  
    57.         message.setContent(mimeMultipart);
    58.  
    59.         Transport.send(message);
    60.  
    61.         transport.close();
    62.         System.out.println("DONE");
    63.     }
    64.  
    65. }
    Weiß hier eventuell Jemand eine Lösung? Wahrscheinlich stehe ich nur auf dem Schlauch.


    Gruß,
    MrTimeey
     
    Zuletzt bearbeitet: 30. März 2012
  2. MrTimeey

    MrTimeey Grünschnabel

    Problem gelöst. Es fehlt eine PasswordAuthentification.

    Funktionierender Code:

    Code (Text):
    1. package mail;
    2.  
    3. import java.io.File;
    4. import java.net.URL;
    5. import java.util.Properties;
    6.  
    7. import javax.activation.DataHandler;
    8. import javax.activation.FileDataSource;
    9. import javax.mail.Authenticator;
    10. import javax.mail.Message;
    11. import javax.mail.PasswordAuthentication;
    12. import javax.mail.Session;
    13. import javax.mail.Transport;
    14. import javax.mail.internet.InternetAddress;
    15. import javax.mail.internet.MimeBodyPart;
    16. import javax.mail.internet.MimeMessage;
    17. import javax.mail.internet.MimeMultipart;
    18.  
    19. public class SendMailWithAttachment {
    20.  
    21.     /**
    22.      * @param args
    23.      */
    24.     public static void main(String[] args) throws Exception {
    25.        
    26.         String host = "smtp.gmail.com";
    27.         String from = "yourMail@googlemail.com";
    28.         final String user = "youUser";
    29.         final String pass = "pass";
    30.        
    31.         String ziel = "zielEmail";
    32.         String filename = "Dateipfad";
    33.        
    34.         // SMTP Host setzen
    35.         Properties props = new Properties();
    36.         props.put("mail.smtp.host", host);
    37.         props.put("mail.smtp.auth", "true");
    38.         props.setProperty("mail.smtp.port", "" + 587);
    39.         props.setProperty("mail.smtp.starttls.enable", "true");
    40.        
    41.  
    42.         // Default Session holen, obige Properties und Authentifizierungsdaten setzen
    43.         Session session = Session.getDefaultInstance(props, new Authenticator() {
    44.             public PasswordAuthentication getPasswordAuthentication(){
    45.                 return new PasswordAuthentication(user, pass);
    46.             }});
    47.  
    48.         // debug mode setzen
    49.         session.setDebug(true);
    50.  
    51.         Message message = new MimeMessage(session);
    52.         message.setFrom(new InternetAddress(from));
    53.         message.setRecipient(Message.RecipientType.TO, new InternetAddress(ziel));
    54.  
    55.         message.setSubject("Attachment Test");
    56.         message.setText("abcdefg");
    57.  
    58.         MimeMultipart mimeMultipart = new MimeMultipart();
    59.  
    60.         MimeBodyPart text = new MimeBodyPart();
    61.         text.setText("abc");
    62.         text.setDisposition(MimeBodyPart.INLINE);
    63.        
    64.         File file = new File(filename);
    65.         MimeBodyPart attachement = new MimeBodyPart();
    66.         attachement.setDataHandler(new DataHandler(new FileDataSource(file)));
    67.         attachement.setFileName(filename);
    68.         attachement.setDisposition(MimeBodyPart.ATTACHMENT);
    69.         mimeMultipart.addBodyPart(text);
    70.         mimeMultipart.addBodyPart(attachement);
    71.  
    72.         message.setContent(mimeMultipart);
    73.  
    74.         Transport.send(message);
    75.  
    76.         System.out.println("DONE");
    77.     }
    78.  
    79. }
     
  3. Buzingo

    Buzingo Grünschnabel

    ich habe eine frage... was soll ich bei user eingeben? wenn ich meinen usernamen eingebe bekomme ich einen autentification error
     
Die Seite wird geladen...