Anhänge mit Javamail

Status
Nicht offen für weitere Antworten.

AlienAngel

Mitglied
Hallo zusammen!

Ich hab zur Zeit ein kleineres Problem mit Javamail. Ich kann problemlos Email versenden, Textformat, HTML Format alles kein Problem. Das einzige was nicht funktionieren will ist die Sache mit den Anhängen.

Ich lasse Debug mitlaufen und so wie es aussieht wird der Anhang schon mitgesendet allerdings wird er nicht angezeigt und ist nicht abrufbar wenn die Mail angekommen.

Habe auch schon in der API gesucht allerdings nicht die Lösung für mein Problem gefunden...

Vielen Dank im Vorraus...
 
packst du ein MimeMultipart objekt mit der methode setContent in dein Message objekt rein?

in das MimeMultipart objekt kannst du mit addBodyPart objekte der klasse MimeBodyPart einfügen

und die objekte MimeBodyPart enthalten dann jeweils text html binärdaten ....
 
Hier mal der relevante Code:


if (file!="")
{

// Image Part definieren
MimeBodyPart messageBodyPart2 = new MimeBodyPart();



// Lesen des Images und Zuordnung an den Part

DataSource fds = new FileDataSource(file);
messageBodyPart2.setDataHandler(new DataHandler(fds));
messageBodyPart2.setFileName(file);


// Header Verbindung zum HTML
messageBodyPart2.setHeader("Content-ID","bild"); // wie beim Header

// Dem Multipart Objekt hinzufügen

multipart.addBodyPart(messageBodyPart2);

}


// Multipart mit Message assoziieren
message.setContent(multipart);

// Message senden
Transport.send(message);



file ist natürlich der Dateipfad als String....

Merkwürdig ist, das ich mit Outlook Express den Anhang kriege, aber mit Outlook nicht... da weiß ich irgendwie nich weiter...

So im Grunde tu ich wohl das, was Du vorschlägst, aber das Problem ist eben, wie gesagt das die Anhänge nur mit Outlook Express empfangen werden...
 
hi max könntest du bitte die doppelpostings seien lassen - das bringt gar nix, denn ich lösche eh einen davon.

[edit]

huch flasches thema - sorry
 
outlook express ist in java geschrieben und outlook soweit ich weiss nicht. damit ist ja klar dass das express funktioniert :lol:

spass beiseite
wenn der anhang im express funktioniert würde ich mal in den optionen vom outlook reinschauen ob da was "entsprechend" eingestellt ist

ansonsten im programm
füge mal nur einen header an den MimeMultipart an und nicht an jedem MessageBodyPart einen eigenen oder lass ihn mal ganz weg. geht nämlich auch ohne (was macht der eigentlich alles genau der header?):

Code:
		// Nachricht erstellen: (javax.mail.Message)
		Message msg = new MimeMessage (session);
		msg.setFrom (new InternetAddress(absenderEmail));
		msg.setRecipient (Message.RecipientType.TO, new InternetAddress(empfaenger));
		msg.setSubject (betreff);		
		
		// Multipart-Objekt erstellen:
		MimeMultipart multi = new MimeMultipart();
		
		// Der erste Teil des Multipart-Objektes ist der Text der Nachricht:
		MimeBodyPart ptext = new MimeBodyPart();
		ptext.setText (nachricht);
		multi.addBodyPart (ptext);
		
		// Der zweite Teil des Multipart-Objektes ist der binäre Datei-Inhalt:
		MimeBodyPart panhang = new MimeBodyPart();
		// Datei-Anhang präparieren nach Aufgabenstellung:
		panhang.setDataHandler(new DataHandler(new FileDataSource(dateiAnhang)));
		panhang.setFileName(dateiAnhang);
		// Zweiten Teil hinzufügen:		
		multi.addBodyPart (panhang);
		
		// Multipart-Objekt als Inhalt der Nachricht übergeben:
		msg.setContent (multi);
		
	
		// Brief einwerfen, an alle angegebenen Empfänger senden:
		Transport.send (msg);
 
Vielen Dank für die Antwort.

Es funktioniert jetzt, aber es lag offenbar hauptsächlich an etwas anderem, was ich gar nicht hier dargestellt hatte. Ich hatte nämlich den MimeMultipart als ("alternative") deklariert. Hab den Header, wie von Dir empfohlen raus und den Multipart als Standard konstruiert und jetzt klappts auch mit dem Outlook.

Aber diese verschiedenen Attribute beim Multipart Konstrukor find ich ziemlich komisch, ich hab da mal ne ganze Weile in der API gesucht was die eigentlich bedeuten, aber nichts gefunden...

Naja, jetzt läufts ja...

Danke nochmal
 
Hallo!

Noch mal zwei kleine Fragen:

Wie funktioniert es denn mehrere Dateien anzuhängen?
Und wie stelle ich denn eine andere replyTo Adresse ein? Wenn ich
Code:
message.setReplyTo(new InternetAddress(replyTo));

mache kommt immer der Fehler : setReplyTo(javax.mail.Address[]) in javax.mail.Message cannot be applied to (javax.mail.internet.InternetAddress)

allerdings lässt sich ja nichts als Address initialiesieren, deswegen bin ich da im Moment ein wenig ratlos und wäre für Hilfe echt dankbar...
 
Hi.

Mein Problem ist, daß ich die Anhänge in Form von Bildern vorher schon geladen habe und somit MimeBodyPart kein DateiHandler übergeben kann. Diese Bilder habe ich ein Vektor geladen und füge sie mittels eines Casts in mein MultPart-Objekt ein. Leider geht das aber nicht. Der Anhang wird mit 0 byte Länge angezeigt, nachdem die Mail verschickt wurde

Code:
add text
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(getMessageBodyPart(hnl.getText()));
			
//add attachments
for (int i=0;i<bodyPartAttachments.size();i++){
multipart.addBodyPart((MimeBodyPart)bodyPartAttachments.elementAt(i));
				}



Solche Vorgensweise ist mir nicht möglich:

// Der zweite Teil des Multipart-Objektes ist der binäre Datei-Inhalt: 
MimeBodyPart panhang = new MimeBodyPart(); 
// Datei-Anhang präparieren nach Aufgabenstellung: 
panhang.setDataHandler(new DataHandler(new FileDataSource(dateiAnhang))); 


panhang.setFileName(dateiAnhang); 
// Zweiten Teil hinzufügen:       
multi.addBodyPart (panhang);

Über einen Tip würde ich mehr freuen.

Jan
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben