Mail mit Anhang versenden

Von: , Frage gestellt am Do, 13. Apr 2006

Hallo liebe Experten,
zum Versenden von Mails verwende ich seit einiger Zeit eine Klasse Mailer. Sie funktioniert sehr gut.
Nun soll diese Klasse auch Anhänge versenden. Leider weigert sie sich hartnäckig.

Findet jemand das Problem?

public void run()
{
// EMail-versenden.
try
{
// Properties holen
java.util.Properties properties = System.getProperties();

// SMTP-Server festlegen
properties.put("mail.smtp.host", this.smtpProvider);

// Session anlegen
Session session = Session.getInstance(properties, null);

// Message anlegen
MimeMessage message = new MimeMessage(session);

// Absender setzen
message.setFrom(new InternetAddress(this.sender));

// Empfaenger (primary recipient) setzen
// Die Email-Adresse wird zusammengesetzt.
message.addRecipient(Message.RecipientType.TO,
new InternetAddress
(this.receiverFirst + "@" + this.receiverLast));

// Betreff setzen
message.setSubject(this.mail_subject);

// Inhalt setzen
//message.setText(this.mail_text);

/** Ab hier beginnen die Änderungen. */
MimeMultipart content = new MimeMultipart( "alternative" );
MimeBodyPart text = new MimeBodyPart();
MimeBodyPart file = new MimeBodyPart();

text.setText ( this.mail_text );
text.setHeader( "MIME-Version" , "1.0" );
text.setHeader( "Content-Type" , text.getContentType() );

DataSource fileDataSource =
new FileDataSource( this.attachment );
file.setDataHandler( new DataHandler(fileDataSource) );

// gibt dem Anhang einen Namen
file.setFileName( "data.zip" );

content.addBodyPart( text );
content.addBodyPart( file );

message.setContent( content );
/** Ende Änderungen. */

// Message senden
Transport.send(message);
System.out.println
("Mail an " + this.receiverFirst + "@" + this.receiverLast
+ " wurde gesendet");
}
catch(Exception e)
{
e.printStackTrace();
}
}

Danke
und tschüs
Uwe


.

12 Antworten zu dieser Frage

  1. Antwort von nach 6 Stunden 0 hilfreich
    Re: Mail mit Anhang versenden

    Auch hallo. Hallo liebe Experten,
    zum Versenden von Mails verwende ich seit einiger Zeit :eine
    Klasse Mailer. Sie funktioniert sehr gut.
    Nun soll diese Klasse auch Anhänge versenden. Leider :weigert
    sie sich hartnäckig.
    ...ist die Klasse ein Eigengebäck oder Bestandteil der 'javamail'-API ? Jedenfalls ist unter javablogs.com einiges zum Thema zu finden :-) Findet jemand das Problem?
    Nicht auf die Schnelle :-(

    mfg M.L.

    • Antwort von nach 7 Stunden 0 hilfreich
      Re^2: Mail mit Anhang versenden

      Hallo Markus, ...ist die Klasse ein Eigengebäck oder Bestandteil der
      'javamail'-API ?
      Ein Eigengebäck und funktioniert bisher super.
      Nur die Ergänzungen machen nicht das, was sie sollen. Jedenfalls ist unter javablogs.com einiges
      zum Thema zu finden :-)
      Leider ist dort alles in englisch. Bei so komplizierten Problemen schaffe ich das noch nicht. Deshalb frage ich bei w-w-w.

      und tschüs
      Uwe

        • Antwort von nach 8 Stunden 0 hilfreich
          Re^4: Mail mit Anhang versenden

          Halllo Markus, ...und wie so häufig hilft 'Java ist auch eine Insel' weiter:
          Hilft sie leider nicht. Aus der Insel habe ich die Ergänzung für mein Programm abgeschrieben.

          Allerdings wäre es hilfreich für mich, wenn du mir den Fehler nennst, den ich gemacht habe.
          Hier ist der entsprechende Abschnitt:
          http://www.galileocomputing.de/openbook/javainsel4/j...

          Danke
          und tschüs
          Uwe

          .

          • Antwort von nach 13 Stunden 0 hilfreich
            Re^5: Mail mit Anhang versenden

            Allerdings wäre es hilfreich für mich, wenn du mir den Fehler
            nennst, den ich gemacht habe.
            Hier ist der entsprechende Abschnitt:
            http://www.galileocomputing.de/openbook/javainsel4/j...
            Versuch es mal ohne 'Mime' fuer den file-Teil, also nur BodyPart.

            BodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setDataHandler( new DataHandler(fileDataSource) );
            messageBodyPart.setFileName( dateiname );
            multipart.addBodyPart( messageBodyPart );
            


            Quelle: http://www.galileocomputing.de/openbook/javainsel4/j...
            (siehe Anhaenge)

            Gruss, Patrick

            • Antwort von nach 20 Stunden 0 hilfreich
              Re^6: Mail mit Anhang versenden

              Hallo Patrick, Versuch es mal ohne 'Mime' fuer den file-Teil, also nur
              BodyPart.
              habe ich versucht, leider ohne Ergebnis.

              Auch habe ich geprüft, ob der Anhang überhaupt gelesen werden kann:

              File f = new File(this.attachment);
              if (!f.canRead()) System.out.println("Fehler");

              Der Anhang wird gelesen. Leider.

              Danke
              und tschüs
              Uwe

              .

            • Antwort von nach einem Tag 0 hilfreich
              Re^7: Mail mit Anhang versenden

              Hallo
              Der Anhang wird gelesen. Leider.
              Na, ist doch super.

              Bei mir funktioniert das Insel-Beispiel einwandfrei.
              Vielleicht solltest du nochmal feststellen was genau
              nicht funktioniert. Wird die e-mail gar nicht versendet
              oder wird sie nur ohne Anhang versendet?

              Gruss, Patrick

            • Antwort von nach einem Tag 0 hilfreich
              Re^8: Mail mit Anhang versenden

              Hallo Patrick, Der Anhang wird gelesen. Leider.
              Na, ist doch super.
              Eben nicht. Dann hätte ich einen Ansatz, wo ich suchen muss :O( Vielleicht solltest du nochmal feststellen was genau
              nicht funktioniert.
              Genau das ist mein Ziel. Leider sind mir die Ideen dazu ausgegangen.
              Deshalb danke für die Hilfe. Wird die e-mail gar nicht versendet
              oder wird sie nur ohne Anhang versendet?
              Die e-mail wird sauber verschickt mit Betreff und Text.
              Leider fehlt der Anhang.

              Zur vorherigen Variante habe ich nur die Zeile
              message.setText(this.mail_text);
              auskommentiert und das gekennzeichnete Teil eingefügt.
              Mehr nicht.


              Würde mich freuen, wenn dir noch etwas einfällt.

              Danke
              und tschüs
              Uwe

            • Antwort von nach einem Tag 0 hilfreich
              Re^9: Mail mit Anhang versenden

              Hallo Patrick,
              soeben ist mir folgender Text in "der Insel" aufgefallen:

              Der Konstruktor eines MimeMultipart-Objekts gibt der mehrtyp-Nachricht einen Namen. Ist dieser mit dem String »alternative«, so heißt das für den Mail-Client, dass es verschiedene Versionen desselben Textes enthält.

              Vielleicht ist es falsch "alternative" an den Konstruktor zu übergeben.
              Tatsächlich möchte ich als Anlage eine Datei versenden.
              Wenn das so ist, was übergebe ich dann an den Konstruktor?

              Danke für die Mühe
              und tschüs
              Uwe



Keine passende Antwort gefunden? Jetzt eigene Frage stellen!