Java Mail mit Anhang

  • Themenstarter Themenstarter Florian Fuß
  • Beginndatum Beginndatum
F

Florian Fuß

Gast
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

Java:
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);

		}
	}
}
 
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.
 
Ok,

ist wohl ohnehin der selbe Code.

Nur die Frage

Deins:
Java:
 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:
Java:
   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.
 
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ß
 
Ich habe den Fehler gefunden.

SOWAS dummes hab ich selten erlebt.

Diese Zeile scheint einfach alles zu überschreiben.

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

Trotzdem danke für die Hilfe.
 

Neue Themen


Zurück
Oben