Javamail

Status
Nicht offen für weitere Antworten.

Fragender

Bekanntes Mitglied
ich habe jetzt schon sehr lange im Internet nach beispielen oder Hilfen gesucht und habe jetzt folgendes Programm

Code:
import java.io.File;
import javax.mail.*;
import javax.mail.internet.*;
import javax.swing.JOptionPane;
import javax.activation.*;

public class Mail{

public Mail(){
	 run();}

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

// SMTP-Server festlegen
properties.put("mail.smtp.host", "mail.gmx.net");
properties.put("User", "Test@gmx.de");
properties.put("Password", "PaSsWoRt");
properties.put("mail.from", "Test@gmx.de");

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

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



// Empfaenger setzen
message.addRecipient(Message.RecipientType.TO,
new InternetAddress("beispiel@gmail.com"));

// Betreff setzen
message.setSubject("Test");

message.setText("text");

MimeMultipart content = new MimeMultipart( "alternative" );
MimeBodyPart text = new MimeBodyPart();
MimeBodyPart file = new MimeBodyPart();

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

File f = new File("C:\\Users\\Name\\Desktop\\Test.txt");
if (f.exists()){
System.out.println("Kann Datei lesen.");}
else{
	System.out.println("Fehler beim Lesen");
}


DataSource fileDataSource = new FileDataSource( f );
file.setDataHandler( new DataHandler(fileDataSource) );
file.setFileName( "Test.txt" ); // gibt dem Anhang einen Namen

file.setHeader( "MIME-Version" , "1.0" );
file.setHeader( "Content-Type" , file.getContentType() );

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

message.setContent( content );
message.setHeader( "MIME-Version" , "1.0" );
message.setHeader( "Content-Type" , content.getContentType() );

// Message senden
Transport.send(message);
System.out.println
("Mail wurde gesendet");
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,"Fehler");
}
}}

Jedoch beim starten des Programmes wird keine Mail versendet und ich erhalte keine Meldungen in eclipse (System.out.println) oder JOptionPane...

woran liegt das?

danke im Voraus
 
was verstehst du unter 'Starten des Programmes'?
muss man ganz grundlegend mit der Frage nach Vorhandensein einer main-Methode beginnen?

oder läuft das Programm normal durch, erscheint die Nachricht "Mail wurde gesendet"?
erscheint "Hello World", wenn System.out.println("Hello World"); als aller erstes in der main-Methode steht?

lasse Dateianhänge beim ersten Versuch erstmal weg..
 
ah danke daran lags(die Klasse wurde im Hauptprogramm nicht richtig aufgerufen)
jedoch kommt jetzt beim senden "Fehler".

iregendetwas klappt nicht:-(
 
Das Senden der Mail, wie du es vorgesehen hast, kann so garnicht funtkionieren, da der Mail-Transport noch gar keine Verbindung zum Server aufgebaut hat.

Versuch folgendes
[highlight=Java]
Transport tr = session.getTransport("smtp");
tr.connect("<SMTP:Benutzer>", "<SMTP-Passwort>");
message.saveChanges();
tr.sendMessage(message, message.getAllRecipients());
tr.close();
[/highlight]

Man kann in den Properties zwar "mail.smtp.user" setzen, aber das Passwort wird immer erst beim Verbinden zum Server angegeben.

Nützlich hierbei ist die API-Dokumentation
JavaMail API documentation (ganz unten führen Links zu Details für Pop3, SMTP und IMAP)
 
Zuletzt bearbeitet:
nur noch ein problem mit folgendem Programm
Code:
import java.io.File;
import java.util.Date;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import javax.swing.JOptionPane;
import javax.activation.*;

import com.sun.mail.smtp.SMTPSSLTransport;

public class Mail 
{
public Mail() throws Exception
{
	  Session session = Session.getDefaultInstance(new Properties());
      Transport transport  = new SMTPSSLTransport(session, new URLName("smtp","mail.gmx.net", 465, null,"bsp@gmx.de","Passwort"));

      MimeMultipart content = new MimeMultipart( "alternative" );
      MimeBodyPart text = new MimeBodyPart();
      MimeBodyPart html = new MimeBodyPart();
      text.setText( "Text als normaler String" );
      text.setHeader( "MIME-Version" , "1.0" );
      text.setHeader( "Content-Type" , text.getContentType() );
      html.setContent( "<html>Text als <b>HTML</b></html>", "text/html");
      html.setHeader( "MIME-Version" , "1.0" );
      html.setHeader( "Content-Type" , html.getContentType() );
      content.addBodyPart( text );
      content.addBodyPart( html );
      
      Message message = new MimeMessage(session);
      message.setContent( content );
      message.setSubject("WICHTIG!!!");
      
      message.addRecipient(Message.RecipientType.TO,new InternetAddress("bsp@gmail.com"));
      message.setFrom(new InternetAddress("bsp@gmx.de"));

      DataSource fileDataSource = new FileDataSource( "C:\\Users\\useri\\Desktop\\Brief.doc" );
      BodyPart messageBodyPart = new MimeBodyPart(); 
      messageBodyPart.setDataHandler( new DataHandler(fileDataSource) ); 
      messageBodyPart.setFileName( "dateiname" );     
      content.addBodyPart( messageBodyPart );
      
      transport.connect();
      transport.sendMessage(message, message.getAllRecipients());
      transport.close();
      System.out.println("Erfolg");}
}

Dieses Programm versendet nur ".txt" dateien
woran liegt das
grüße
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben