# Java Mail mit Anhang



## Florian Fuß (9. Mrz 2011)

Hallo Leute,

ich möchte eine Mail mit Java versenden. Diese soll einen Anhang haben.
Ich habe allerdings Probleme mit diesem.
Ich bekomme die Mail aber kein Anhang.
Die Mail geht über unseren internen Mail-Server von Lotus Notes.

Folgendes ist mein Quellcode. Ich hoffe ihr könnt mir helfen


```
import java.awt.event.*;
import java.util.*;
import java.util.Properties;
import javax.swing.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class Mail
{

	public void MailSenden ()
	{
		String empfänger="florian.fuss@kaiserslautern.de";
		try
		{
	    	Properties props = System.getProperties();
			props.put("mail.smtp.host", "mailout.kaiserslautern.de");

// Get a Session object mit dem oben in Properties definierten hosts
		    Session session = Session.getDefaultInstance(props, null);
	    	Message msg = new MimeMessage(session);

//Dateianhang
	    	Multipart content = new MimeMultipart("mixed");

			File source = new File ("C:/blubb.pdf");
			BodyPart mbp = new MimeBodyPart();
			DataHandler ds = new DataHandler(new FileDataSource(source));
			mbp.setDataHandler(ds);
			mbp.setFileName(ds.getName());
			mbp.setDisposition(MimeBodyPart.ATTACHMENT);


			BodyPart mbp2 = new MimeBodyPart();
			mbp2.setText("hallo");
			mbp2.setDisposition(MimeBodyPart.INLINE);


			System.out.println(ds.getDataSource());
			System.out.println(mbp.getFileName());

			content.addBodyPart(mbp2);
			content.addBodyPart(mbp);
			System.out.println(content.getCount());
			System.out.println(content.getContentType());

	    	msg.setContent(content);
	    	System.out.println(msg.getSize());
	    	System.out.println(msg.getFileName());

//MAIL.BODY bearbeiten
			msg.setFrom(new InternetAddress("Diensthandyabrechnung"));
		    msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(empfänger, false));
		    msg.setSubject("Automatische Mail aus Anwendung Diensthandyabrechnung");
			msg.setSentDate(new Date());
			msg.setText("MAAAANNNNN!!!!!!");
		    Transport.send(msg, msg.getAllRecipients());

		}
		catch(Exception e)
		{

			JOptionPane.showMessageDialog(null, e.getMessage(), "Fehler",
									JOptionPane.ERROR_MESSAGE);

		}
	}
}
```


----------



## Florian Fuß (9. Mrz 2011)

Bevor ihr mich zu anderen Einträgen verweist:
         Ich habe alle möglichen Foren nach dem Problem durchsucht aber keine Hilfestellung hat mir geholfen.
         Habe alle möglichen Lösungen probiert aber hat alles nicht geklappt.
         Die Testausgaben zeigen mit das in der letztendlichen Mail auch keine datei ist und die Größe-1 beträgt. 
         Darüber erkennt man aber das was vorhanden ist.


----------



## chalkbag (9. Mrz 2011)

Morgen,


kannst du bitte folgendes Beispiel probieren.

Java Tips - How to send an email with a file attachment

Dann sollten wir sehen ob es an deinem source-code liegt, oder ob die Lotus Technik mal wieder spinnt.

Let me google that for you : war der erste Treffer

Grüße


----------



## chalkbag (9. Mrz 2011)

Ok,

ist wohl ohnehin der selbe Code.

Nur die Frage

Deins:

```
File source = new File ("C:/blubb.pdf");
            BodyPart mbp = new MimeBodyPart();
            DataHandler ds = new DataHandler(new FileDataSource(source));
            mbp.setDataHandler(ds);
            mbp.setFileName(ds.getName());
            mbp.setDisposition(MimeBodyPart.ATTACHMENT);
```

Beispiel:

```
FileDataSource fds = new FileDataSource(filename);
      mbp2.setDataHandler(new DataHandler(fds));
      mbp2.setFileName(fds.getName());
```


Du verwendest den ds Namen und nicht den fds, ka ob das eine Auswirkung hat.
Zusäztlich könntest du den Mime-Type mal weglassen. Lotus Notes geht ja bisl komisch mit Attachmants um, zumindeset bei mir sind die immer zwangsweise Inline (zumindest angezeigt)).

Ansonsten fände ich die System.out Ausgabengabe ganz interessant, müsstest du mit zusätzlichen Angaben zeigen, welcher System.out, welcher ist. Wenns geht posten, falls Fehler bestehen bleibt.


----------



## Florian Fuß (9. Mrz 2011)

Also das mit dem fds hab ich schon probiert. Das Mime weglassen auch schon.
Steht ja auch schon in anderen Foren als Tipp.

Leider hat beides nicht geholfen.

Das mit dem benamen muss ich ma machen der ausgaben.
Ich finde es einfach nur komisch das er den Dateinamen ausgibt und später in der Message nichts mehr vorhanden ist.

Gruß


----------



## Florian Fuß (9. Mrz 2011)

Ich habe den Fehler gefunden.

SOWAS dummes hab ich selten erlebt.

Diese Zeile scheint einfach alles zu überschreiben.


```
msg.setText("MAAAANNNNN!!!!!!");
```
Ohne diese Zeile funktioniert es.

Trotzdem danke für die Hilfe.


----------

