smtp-Client programmieren

Status
Nicht offen für weitere Antworten.

Sindbad1983

Top Contributor
Hi!

Ich möchte einen smtp-Client programmieren und häng momentan irgendwie!

Die GUI ist soweit fertig!

Das Programm soll mit dem Server kommunizieren und dabei soll der gesamte Dialog in der TextArea output ausgegeben werden!
Ziel ist es, dass ich mit diesem Email-Client eine Email wegschicken kann!

Es happert momentan eigentlich nur mehr an den Input- und Outputstreams!


Die Ausgabe soll in etwa so aussehen:



1: > 220 mail.example.com SMTP Foo Mailserver
2: < HELO mail.example.org
3: > 250 Ok
4: < MAIL FROM: hans.muster@example.org
5: > 250 Ok
6: < RCPT TO: foo@example.com
7: > 250 Ok
8: < DATA
9: > 354 End data with .
10: < From: hans.muster@example.org
11: < To: foo@example.com
12: < Subject: Testmail
13: <
14: < Testmail
15: < .
16: > 250 Ok
17: < QUIT
18: > 221 Bye

Momentan hängt sich mein Programm immer auf...irgendwas stimmt da nicht!
Weiß momentan nicht, wies weitergeht! :bahnhof:
Vielleicht kann mir jemand helfen bitte! (wenn er Zeit und Lust hat) :bae:





Code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.IOException;


 class SmtpClient extends JFrame implements ActionListener{
	
	 
	private JPanel oben;
	private JPanel unten;
	private JPanel a;
	private JPanel b;
	private JPanel c;
	
	private JLabel labsender;
	private JLabel labrec;
	private JLabel labtopic;
	
	private JTextField sender;
	private JTextField receiver;
	private JTextField topic;
	
	private JButton send;
	
	private JTextArea input;
	private JTextArea output;
	private JScrollPane pane1;
	private JScrollPane pane2;
	
	
	
	
	public SmtpClient(String titel){
		super(titel);
		
		Container c=getContentPane();
		c.setLayout(new GridLayout(2,1,5,5));
		c.setSize(750,500);
		c.setBackground(Color.black);
		
		oben=new JPanel(new BorderLayout(5,5));
		oben.setBackground(Color.black);
		
		
		a=new JPanel();
		a.setBackground(Color.lightGray);
		
		
		labsender=new JLabel("Sender: ");
		sender=new JTextField(15);
		
		labrec=new JLabel("Receiver:");
		receiver=new JTextField(15);
		
		labtopic=new JLabel("Topic:");
		topic=new JTextField(15);
		
		send=new JButton("Send");
		send.addActionListener(this);
		
		a.add(labsender);
		a.add(sender);
		a.add(labrec);
		a.add(receiver);
		a.add(labtopic);
		a.add(topic);
		a.add(send);
		
		
		b=new JPanel();
		b.setBackground(Color.white);
		
		JTextArea input=new JTextArea(9,65);
		
		
		
		pane1=new JScrollPane(input);
		pane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		b.add(pane1);
		
		c=new JPanel(new FlowLayout(FlowLayout.LEFT));
		c.setBackground(Color.lightGray);
		
		JLabel t=new JLabel("Geben Sie bitte im Feld darunter ihre Nachricht ein:");
		c.add(t);
		
		

	
		unten=new JPanel();
		unten.setBackground(Color.white);
		
		output=new JTextArea(13,65);
	
		
		pane2=new JScrollPane(output);
		pane2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		unten.add(pane2);
	
		add(oben);
		oben.add(a, BorderLayout.NORTH);
		oben.add(c, BorderLayout.CENTER);
		oben.add(b, BorderLayout.SOUTH);
		
		add(unten);
	
	
	}
	
	public void actionPerformed(ActionEvent e) {
		
		String senderName=sender.getText();
		String receiverName=receiver.getText();
		
	
		SocketConnection con=new SocketConnection();
		
		if(e.getSource()==send){
			
			String ausgabe;
			try {
				ausgabe = con.getCommunication(senderName,receiverName);
				output.setText(ausgabe);
				

			} catch (IOException e1) {
				
				e1.printStackTrace();
			}
		}
			
		}
	
	
	public static void main(String[] args) {
		
		SmtpClient client=new SmtpClient("SMTP Mail Client");
		
		client.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		client.setSize(750,500);
		client.setLocation(300,300);
		client.setVisible(true);
	
	}


	

}


Code:
import java.io.*;
import java.net.*;


public class SocketConnection {
	
	String hostname="www.email.uni-linz.ac.at";
	
	public String getCommunication(String sender, String receiver) throws IOException{
		
		
		
		
		try{
		InetAddress inet=InetAddress.getByName(hostname);
		}catch(UnknownHostException ex) {
            return "Invalid server name: UnknownHostException " + ex.getMessage();
		}

		
		
	Socket socket;

	
	try{
	socket=new Socket(hostname,25);
	}catch(IOException ex) {
        return "Could not create socket: IOException " + ex.getMessage();
    }
	
	
	 PrintWriter out;
     BufferedReader in;
     try {
         out = new PrintWriter(socket.getOutputStream());
         in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
     } catch (IOException ex) {
         return "Could not open streams: IOException " + ex.getMessage();
     }

     
     StringBuffer sb=new StringBuffer();
     int cnt=0;
     
     try{
     String ausgabe="";
     ausgabe=in.readLine();
     sb.append(cnt);
	 sb.append(":");
   
     while(in!=null){
    	
    	 sb.append(ausgabe);
    	 sb.append("\n");
    	 cnt++;
     }
     }catch(IOException e){
    	 return "Could not read from connection: IOException " + e.getMessage();

     }
	  
         try {
             // close socket (streams are closed automatically)
             socket.close();
         } catch (IOException e) {
             return "Could not close connection: IOException " + e.getMessage();
         }

	

	
	
	
	
	return sb.toString();
	
	}
}
DANKE!
 

Sky

Top Contributor
Wann/Wo hängt es sich auf?
Gibt es Fehlermeldungen??

Die Fragen bitte ein wenig präziser stellen!
 

mic_checker

Top Contributor
Bzw. poste mal den StackTrace wenn ne Exception geschmissen wird, falls keine Exception kommt kannst du zur Kontrolle ein paar System.out.printlns "reinhauen" und gucken wo es hängt.....
 
R

Roar

Gast
ich hab zwar nurmal grob drübrgekuckt aber wahrscheinlich ist das problem das, dass du keien threads benutzt :? hau die IO kaka in nem eigenen thread, und starte ihn mitSwingUtilities.invokeLater in deinem acitonllistener
 

Sindbad1983

Top Contributor
so ich habs jetzt nochmal alles umgeschrieben!


Ich glaub, so viel fehlt da jetzt nicht mehr!

Kennt sich da jemand damit aus?


Folgende Exception wird ausgeworfen:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at smtp.SocketConnection.receive(SocketConnection.java:83)
at smtp.SocketConnection.getCommunication(SocketConnection.java:36)
at smtp.SmtpClient.actionPerformed(SmtpClient.java:140)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)



kann es sein, dass beim StringBuffer vielleicht der Fehler liegt? bei der Ausgabe?





Code:
import java.awt.*;
import javax.swing.*;

import java.awt.event.*;
import java.io.IOException;


 class SmtpClient extends JFrame implements ActionListener{
	
	private JFrame frame;
	private JPanel oben;
	private JPanel unten;
	private JPanel a;
	private JPanel b;
	private JPanel c;
	
	private JLabel labsender;
	private JLabel labrec;
	private JLabel labtopic;
	
	private JTextField sender;
	private JTextField receiver;
	private JTextField topic;
	
	private JButton send;
	
	private JTextArea input;
	private JTextArea output;
	private JScrollPane pane1;
	private JScrollPane pane2;
	
	
	 public void start() {
	      
	   frame = new JFrame("HTTP Client");
	   frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);	
		
		frame.getContentPane();
		frame.setLayout(new GridLayout(2,1,5,5));
		frame.setSize(750,500);
		frame.setBackground(Color.black);
		
		oben=new JPanel(new BorderLayout(5,5));
		oben.setBackground(Color.black);
		
		
		a=new JPanel();
		a.setBackground(Color.lightGray);
		
		
		labsender=new JLabel("Sender: ");
		sender=new JTextField(15);
		
		labrec=new JLabel("Receiver:");
		receiver=new JTextField(15);
		
		labtopic=new JLabel("Topic:");
		topic=new JTextField(15);
		
		send=new JButton("Send");
		send.addActionListener(this);
		
		a.add(labsender);
		a.add(sender);
		a.add(labrec);
		a.add(receiver);
		a.add(labtopic);
		a.add(topic);
		a.add(send);
		
		
		b=new JPanel();
		b.setBackground(Color.white);
		
		input=new JTextArea(9,65);
		
		
		
		pane1=new JScrollPane(input);
		pane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		b.add(pane1);
		
		c=new JPanel(new FlowLayout(FlowLayout.LEFT));
		c.setBackground(Color.lightGray);
		
		JLabel t=new JLabel("Geben Sie bitte im Feld darunter ihre Nachricht ein:");
		c.add(t);
		
		

	
		unten=new JPanel();
		unten.setBackground(Color.white);
		
		output=new JTextArea(13,65);
	
		
		pane2=new JScrollPane(output);
		pane2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		unten.add(pane2);
	
		frame.add(oben);
		oben.add(a, BorderLayout.NORTH);
		oben.add(c, BorderLayout.CENTER);
		oben.add(b, BorderLayout.SOUTH);
		
		frame.add(unten);
		
		frame.setSize(750,500);
		frame.setLocation(300,300);
		frame.setVisible(true);
	
	
	}
	
	public void actionPerformed(ActionEvent e) {
		
		String ausgabe="";
		
		
		if(e.getSource()==send){
		
		String senderName=sender.getText();
		String receiverName=receiver.getText();
		String topicName=topic.getText();
		
		StringBuffer sb=new StringBuffer();
		sb.append(input.getText());
		String s=sb.toString();
	
		
		
		
			SocketConnection con=new SocketConnection();
			
		
			
				ausgabe = con.getCommunication(senderName,receiverName,topicName,s);
				output.setText(ausgabe);
			
		}
			
		}
	
	
	public static void main(String[] args) {
		
		SmtpClient client=new SmtpClient();
		client.start();
		
	}


	

}


Code:
import java.io.*;
import java.net.*;


public class SocketConnection {
	
	String hostname="";
	StringBuffer sb=new StringBuffer();
	Socket socket;
	PrintWriter out;
    BufferedReader in;
	
	
	public String getCommunication(String sender, String receiver, String topicName,String s) {
		

	
	
	try{
	socket=new Socket("email.uni-linz.ac.at",25);
	
    
         out = new PrintWriter(socket.getOutputStream());
         in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
	}
         
     catch(UnknownHostException e){
    	 e.getStackTrace();
     }
     catch(IOException e){
    	 e.getStackTrace();
     }
     
     try{
     receive(in);
     hostname=InetAddress.getLocalHost().getHostName();
     send(out, "HELO "+ hostname);
     receive(in);
     send(out,"MAIL FROM: "+sender);
     receive(in);
     send(out, "RCPT TO:"+ receiver);
     receive(in);
     send(out, "DATA");
     receive(in);
     send(out, "FROM:"+sender);
     send(out, "TO:"+receiver);
     send(out, "Subject"+topicName);
     send(out, s);
     send(out, ".");
     receive(in);
     send(out, "Quit");
     receive(in);
     socket.close();
     out.close();
     in.close();
     
     }
     catch (UnknownHostException ex) {
         return "Could not open streams: IOException " + ex.getMessage();
     }
     catch(IOException e){
    	 e.printStackTrace();
     }
     

	return sb.toString();


	}
	
	
	public void send(PrintWriter out, String s){
		
		
			out.write(s);
			sb.append(s);
			sb.append("\r\n");
	}
	
	public void receive(BufferedReader in) throws IOException{
		
			String str=in.readLine();
			while(str!=null){
			sb.append(str);
			sb.append("\n");
			str=in.readLine();
		
		}
	
	}

}
 

Sindbad1983

Top Contributor
ich versteh echt nicht warum das nicht geht!!
kennt jemand einen anderen Hostnamen, bei dem es gehen könnte?
Oder hab ich wo nen Fehler?
 

Sindbad1983

Top Contributor
kennt wer einen smtp-Server, bei dem man keine Authentifizierung braucht?

Überall bekomm ich ein access denied!

Oder gibts da ne andere Möglichkeit?
Hat jemand schon mal mit Ability Mail Server 2 gearbeitet?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Java E-mail versenden. SMTP Port Fehler Java Basics - Anfänger-Themen 8
H java smtp could not connect Java Basics - Anfänger-Themen 19
A Java Mail 1.4.4 - Email versenden (HOTMAIL SMTP auth) Java Basics - Anfänger-Themen 9
S Email und SMTP Java Basics - Anfänger-Themen 3
M Mail senden - Problem connect to SMTP host Java Basics - Anfänger-Themen 5
A E-Mail via SMTP Java Basics - Anfänger-Themen 7
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
K Verständnisproblem bei Server/Client Java Basics - Anfänger-Themen 3
A Server - Client Nachrichtenaustausch über Eventbus Java Basics - Anfänger-Themen 12
berserkerdq2 Sende eine Nachricht an den Client und leere den Ausgabestorm, was ist damit genau gemeint? Java Basics - Anfänger-Themen 3
S Java Client-je nach Heap Size Größe startet Applikation oder nicht Java Basics - Anfänger-Themen 4
D Verbesserungsvorschläge zur Struktur einer Client Server Desktop Chat App Java Basics - Anfänger-Themen 24
D Unerwartetes Verhalten bei Client Server Chat App Java Basics - Anfänger-Themen 12
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
K Verständnisfrage Server/Client BufferedReader, PrintWriter Java Basics - Anfänger-Themen 2
A Client-Server Kommunikation Java Basics - Anfänger-Themen 3
I Client ObjectInputStream error... Java Basics - Anfänger-Themen 5
W Client verbindet sich nicht Java Basics - Anfänger-Themen 14
B Email Client in der eigenen Software einbauen Java Basics - Anfänger-Themen 3
S Server - für jeden Client ein Serverthread Java Basics - Anfänger-Themen 2
E SocketServer/Client stürzt ab. Address already in use. Java Basics - Anfänger-Themen 2
I Wann ist Client plattformunabhängig? Java Basics - Anfänger-Themen 22
E MCLauncher eigener Client workt nicht? Java Basics - Anfänger-Themen 4
L Erste Schritte Erste Versuche mit Server und Client Java Basics - Anfänger-Themen 7
elischa Client-Server IO und Stream Steuerung ? Java Basics - Anfänger-Themen 2
I Print Client -> Server -> Client? Java Basics - Anfänger-Themen 1
I Unique client information in WebApp Java Basics - Anfänger-Themen 3
I lokales Programm mit Client/Server Programm kommunizieren Java Basics - Anfänger-Themen 3
J TCP MultiThreaded Server und Client - irgendwo ist der Fehler, aber ich find ihn nicht Java Basics - Anfänger-Themen 3
Joew0815 Error org.apache.xmlrpc.client.XmlRpcClientConfigImpl.setUserAgent Java Basics - Anfänger-Themen 2
N Was bedeutet "Implementierung vor dem Client verbergen" bei Design Patterns? Java Basics - Anfänger-Themen 2
K Java Client > Python Server Java Basics - Anfänger-Themen 0
O Verriegeln, aber wo? Finde den Client der zu schließem ist. Java Basics - Anfänger-Themen 0
S Java - Client/Server mit Stomp kurze Frage Java Basics - Anfänger-Themen 0
T Buffererwriter keine Exception obwohl Client weg Java Basics - Anfänger-Themen 2
E Client Server Java Basics - Anfänger-Themen 12
H Einfache Client/Server-Kommunikation Java Basics - Anfänger-Themen 16
O Server Client Problem Java Basics - Anfänger-Themen 2
N Client soll mehrere Antworten von Servern gleichzeitig empfangen Java Basics - Anfänger-Themen 8
H Java Server/Client, HTML Seite anzeigen Java Basics - Anfänger-Themen 2
L Server pingt Client und fordert Info Java Basics - Anfänger-Themen 2
T Client-Fenster bei Aufruf unvollständig Java Basics - Anfänger-Themen 12
E Senden von Objects an Client. Variablenwerte kommen nicht an Java Basics - Anfänger-Themen 5
R Server/Client für Spiel Java Basics - Anfänger-Themen 2
E Client hilfe!!! Java Basics - Anfänger-Themen 7
B RMI - Fehlermeldung auf dem Client Java Basics - Anfänger-Themen 6
X Applet - Client/Server Java Basics - Anfänger-Themen 2
E Client ergibt NULL? Java Basics - Anfänger-Themen 24
E Socket (Client) dauerhaft aktiv? Java Basics - Anfänger-Themen 9
E HTTP Client - Login durchführen? Java Basics - Anfänger-Themen 4
L Ip-Adresse für Client Java Basics - Anfänger-Themen 14
L Bild versenden über Client/Server Java Basics - Anfänger-Themen 10
L Wegwerf Client Java Basics - Anfänger-Themen 26
S Klassen Server und Client Java Basics - Anfänger-Themen 3
M Client - DB-Server Struktur Java Basics - Anfänger-Themen 7
L Client aktualisieren Java Basics - Anfänger-Themen 6
U Probleme mit Server-Client implementierung Java Basics - Anfänger-Themen 5
G Server-Client Kommunikation Java Basics - Anfänger-Themen 3
J DNS-Client Java Basics - Anfänger-Themen 2
J Simpler DNS Client Java Basics - Anfänger-Themen 20
Z Tomcat Server Kommunikation zu Client Applet Java Basics - Anfänger-Themen 5
B Server-Client mit Thread ausstatten Java Basics - Anfänger-Themen 3
D Client-Server Problem Java Basics - Anfänger-Themen 2
J Netzwerkrprogammierung Client - Server Java Basics - Anfänger-Themen 3
J Netzwerkprogrammierung Client/Server Java Basics - Anfänger-Themen 16
G ArrayListe vom Server nach Client schicken Java Basics - Anfänger-Themen 17
M Flexiblen Client programmieren Java Basics - Anfänger-Themen 2
G JMS -> Wie Anmeldung vom Client an Server? Java Basics - Anfänger-Themen 4
S Webservice: Dateien downloaden vom Webserver auf den Client Java Basics - Anfänger-Themen 7
G Ausg. in JSP erzeugen die als Antwort an Client gesch. wird Java Basics - Anfänger-Themen 2
I Server / Client Programm wie einen String übergeben? Java Basics - Anfänger-Themen 6
K Client-Liste im Chat Java Basics - Anfänger-Themen 2
B Client - Server Verbindung über sockets mysql DB ansprechen? Java Basics - Anfänger-Themen 6
G Java Server Client Programmierung Java Basics - Anfänger-Themen 3
B Bild/Datei von einem Server an einen Client senden Java Basics - Anfänger-Themen 6
A Problem mit Ausgabe einer Liste über einen Client Java Basics - Anfänger-Themen 5
rambozola zugriff auf client bei j2ee anwendung Java Basics - Anfänger-Themen 10
G Mail Client öffnen Java Basics - Anfänger-Themen 9
D Server/Client Java Basics - Anfänger-Themen 8
T Datei über UDP verschicken . Speicherprobleme am Client Java Basics - Anfänger-Themen 4
H Server Client, es kommt nichts an. Java Basics - Anfänger-Themen 5
R client-applikation? Java Basics - Anfänger-Themen 5
G [Hilfe] Fileupload: Client-Server Java Basics - Anfänger-Themen 9
S Server/Client Verbindung Java Basics - Anfänger-Themen 2
G Dateidownload Client-Server (jsp) Java Basics - Anfänger-Themen 4
G Zugriff vom 'Server auf Client' Java Basics - Anfänger-Themen 4
S Client-Server Java Basics - Anfänger-Themen 18
X client soll bat auf server ansprechen Java Basics - Anfänger-Themen 7
C client/server programm fehler ! Java Basics - Anfänger-Themen 20
F Wie kommen die Applets zum Client? Java Basics - Anfänger-Themen 7
C string über server/client verbindung senden ? Java Basics - Anfänger-Themen 4
T Client-Authentifizierung Java Basics - Anfänger-Themen 6
K [servcer/Client] Suche Server /Client Tutorial. Java Basics - Anfänger-Themen 2
G http client Java Basics - Anfänger-Themen 4
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
laxla123 Rechteck programmieren Java Basics - Anfänger-Themen 4
A Erste Schritte Dynamische Stempel im PDF Exchange programmieren Java Basics - Anfänger-Themen 0

Ähnliche Java Themen

Neue Themen


Oben