Frage zum Email versenden mit Dateianhang

KaWi_Trine

Grünschnabel
Hallo
Ich habe Probleme mit dem versenden von Emails mit Dateianhang. Ich habe auch schon darüber gegoogelt und einiges gefunden. Nur leider bin ich noch Anfänger und versteh nur die hälfte von dem was ich gefunden habe.
Hier ist mal der Code:
PHP:
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
 
public class csendeEMail 
{
	 public static void main(String[] args) 
	 {
			String to ="blabla.blabla@irgendwas.com" ;
			String from = "bart.simpson@irgendwas.com";
			String host = " "; //hier würde mir ein Beispiel helfen
			String filename = "Ergebnisse_"+cAnmeldung.ergebnis.getAnmeldeName()+".txt";
			String msgText1 = "Im Anhang findet man die Testergebnisse\n";
			String subject = "Testergebnisse";
			
			// create some properties and get the default Session
			Properties props = System.getProperties();
			props.put("mail.smtp.host", host);      //Was bedeutet diese Zeile
			
			Session session = Session.getDefaultInstance(props, null);
			
			try {
			    // create a message
			    MimeMessage msg = new MimeMessage(session);
			    msg.setFrom(new InternetAddress(from));
			    InternetAddress[] address = {new InternetAddress(to)};
			    msg.setRecipients(Message.RecipientType.TO, address);
			    msg.setSubject(subject);

			    // create and fill the first message part
			    MimeBodyPart mbp1 = new MimeBodyPart();
			    mbp1.setText(msgText1);

			    // create the second message part
			    MimeBodyPart mbp2 = new MimeBodyPart();

		            // attach the file to the message
		   	    FileDataSource fds = new FileDataSource(filename);
			    mbp2.setDataHandler(new DataHandler(fds));
			    mbp2.setFileName(fds.getName());

			    // create the Multipart and its parts to it
			    Multipart mp = new MimeMultipart();
			    mp.addBodyPart(mbp1);
			    mp.addBodyPart(mbp2);

			    // add the Multipart to the message
			    msg.setContent(mp);

			    // set the Date: header
			    msg.setSentDate(new Date());
			    
			    // send the message
			    Transport.send(msg);
			    
			} catch (MessagingException mex) {
			    mex.printStackTrace();
			    Exception ex = null;
			    if ((ex = mex.getNextException()) != null) {
				ex.printStackTrace();
			    }
			}
		    }

	
}

Zusätzlich bekomm ich noch eine NullPointerException
Für Hilfe wäre ich sehr dankbar:)
 

Artorius

Mitglied Plutonium
Hi!
Wenn du nicht verstehst, was du da machst, solltest du dir vielleicht mal die Spezifikation der Java Mail API durchlesen: http://java.sun.com/products/javamail/JavaMail-1.2.pdf

Ich schätze mal, dass "Host" der SMTP Server ist, über den die Email versendet werden soll.

Zusätzlich bekomm ich noch eine NullPointerException
Liegt eventuell daran, dass kein Host angegeben ist. Gib mal einen an, und schau, ob es immer noch passiert. Generell ist es aber nicht verkehrt, wenn du auch mal sagen würdest, wo die Exception auftritt. Raten möchte nämlich keiner..

*grüssle*
 

RoCMe

Erfahrenes Mitglied
Hallo!

Zunächst mal schließe ich mich Artorius in ALLEN Punkten an :)

Und dann gibts noch ein paar Ergänzungen:
Wie Mail-Verkehr grundsätzlich funktioniert, ist dir hoffentlich klar. Um Mails versenden zu können, brauchst du einen SMTP Server. Was genau SMTP ist, kann man (z.B.) bei wikipeida nachlesen.
Um dir ein Beispiel zu geben, habe ich die Schlagwörter "SMTP" und "Server" aus dem Hut gezaubert und bei der Suchmaschine meines geringsten Misstrauens eingegeben - die hat als ersten Treffer das hier geliefert. Ein Beispiel wäre also z.B.
Java:
host = "smtp.directbox.com"
An dieser Stelle wird einfach nur vermerkt, welchen Server du nutzen willst.
Das du auf dich auf den meisten Servern authentifizieren musst, sollte klar sein...

Zur 2. Stelle:
Hier wird javaMail nun mitgeteilt, welchen Server du benutzen willst.

Generell empfehle ich dringend die Lektüre der von Antorius verlinkten Doku!

Gruß,

RoCMe
 

KaWi_Trine

Grünschnabel
Es funktioniert! Die NullpointerException kam da ich den Host falsch zugewiesen hatte. Eine Authentifizierung brauche ich zum Glück auch nicht.
Und ihr habt vollkommen recht, man muss sich erstmal ausreichend darüber informieren bevor man was anfängt und dann keine Ahnung hat.

Danke für die schnellen Antworten und den nützlichen Links.
Wünsche euch einen schönen Tag

MfG Trine