import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.net.*; import java.io.*; public class KirjasaatjaRakend extends Applet implements ActionListener{ TextArea tasisu=new TextArea(4, 20), talogi=new TextArea(4, 20); TextField taadress=new TextField(20), tpealkiri=new TextField(20); Label laadress=new Label("Aadress:"), lpealkiri=new Label("Pealkiri:"); String masin; Button saada=new Button("saada"); public void init(){ masin=getCodeBase().getHost(); taadress.setText("@"+masin); GridBagLayout g=new GridBagLayout(); setLayout(g); GridBagConstraints c=new GridBagConstraints(); c.fill=GridBagConstraints.BOTH; c.weightx=1.0; c.weighty=1.0; c.gridheight=1; c.gridx=0; g.setConstraints(laadress, c); add(laadress); c.gridx=1; g.setConstraints(taadress, c); add(taadress); c.gridx=0; c.gridy=1; g.setConstraints(lpealkiri, c); add(lpealkiri); c.gridx=1; g.setConstraints(tpealkiri, c); add(tpealkiri); c.gridx=0; c.gridy=2; c.gridwidth=2; g.setConstraints(saada, c); add(saada); Label lsisu=new Label("Kirja sisu:"); c.gridy=3; g.setConstraints(lsisu, c); add(lsisu); c.gridy=4; c.gridheight=2; g.setConstraints(tasisu, c); add(tasisu); Label llogi=new Label("Saatmise logi:"); c.gridy=6; c.gridheight=1; g.setConstraints(llogi, c); add(llogi); c.gridy=7; c.gridheight=2; g.setConstraints(talogi, c); add(talogi); saada.addActionListener(this); } public void actionPerformed(ActionEvent e){ saadaKiri(taadress.getText(), "tundmatu@polelolemas.ee", tpealkiri.getText(), tasisu.getText(), talogi); } void saadaKiri(String aadress, String saatja, String pealkiri, String kirjasisu, TextArea logi){ try{ kirjasisu=kahekordistaYksikudPunktid(kirjasisu)+ "\n\n kiri saadetud rakendi abil masinast "+InetAddress.getLocalHost().getHostName(); logi.append("--Ühendatakse masinasse "+masin+"\n"); Socket sc=new Socket(masin, 25); PrintWriter valja=new PrintWriter(sc.getOutputStream(), true); logi.append("--Ühendus olemas\n"); BufferedReader sisse=new BufferedReader(new InputStreamReader(sc.getInputStream())); valja.println("helo "+masin); logi.append("-> helo "+masin+"\n"); logi.append(sisse.readLine()+"\n"); logi.append(sisse.readLine()+"\n"); valja.println("mail from: "+saatja); logi.append("-> mail from:"+saatja+"\n"); logi.append(sisse.readLine()+"\n"); valja.println("rcpt to: "+aadress); logi.append("-> rcpt to: "+aadress+"\n"); logi.append(sisse.readLine()+"\n"); valja.println("DATA"); logi.append("-> DATA\n"); logi.append(sisse.readLine()+"\n"); valja.println("Subject: "+pealkiri); logi.append("-> Subject: "+pealkiri+"\n"); valja.println("From: "+"\"Juhan Juurikas\" <"+saatja+">"); logi.append("-> From: "+"\"Juhan Juurikas\" <"+saatja+">\n"); valja.println(kirjasisu); logi.append(kirjasisu+"\n"); valja.println("."); logi.append("-> .\n"); logi.append(sisse.readLine()+"\n"); valja.println("quit"); logi.append("-> quit\n"); logi.append(sisse.readLine()+"\n"); sc.close(); logi.append("-- Ühendus otsas\n\n"); }catch(Exception e){ logi.append(e.toString()+"\n"); } } String kahekordistaYksikudPunktid(String alg){ int koht; while((koht=alg.indexOf("\n.\n"))>0){ alg=alg.substring(0, koht)+"\n..\n"+alg.substring(koht+3); } return alg; } }