荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: icefire (as you wish), 信区: Java
标  题: JAVA编写的CGI--发送邮件
发信站: BBS 荔园晨风站 (Wed Dec  2 08:11:00 1998), 站内信件

发信人: wooce (残雪), 信区: CGI
标  题: JAVA编写的CGI--发送邮件
发信站: 华南网木棉站 (Tue Dec  1 13:41:21 1998), 转信

// Scrolling Message V2.00
// R. BERTHOU

// Standard Java Imports
// import java.awt.*;

import java.applet.Applet;

import java.net.*;
import java.io.*;
import java.awt.*;


public class tMail extends java.applet.Applet {
    TextArea    tMessage ;
        Button      bEnvoie  ;
    TextField   tSubject ;
    TextField   tTo      ;
    TextField   tFrom    ;



// Applet initialisation routine
public void init() {

        GridBagLayout gridbag = new GridBagLayout();
    GridBagConstraints g = new GridBagConstraints();
    setFont(new Font("Helvetica", Font.PLAIN, 12));
    setLayout(gridbag);

    g.anchor     = GridBagConstraints.NORTHEAST ;
    g.fill               = GridBagConstraints.HORIZONTAL ;
    g.weightx    = 1.0 ;
    g.weighty    = 1.0;

        g.gridwidth = GridBagConstraints.REMAINDER; //end row
        bEnvoie = new Button("Envoie") ;
    gridbag.setConstraints(bEnvoie, g);
        add(bEnvoie);

        g.gridwidth = GridBagConstraints.RELATIVE ;
        Label l0 = new Label("From :") ;
    gridbag.setConstraints(l0, g);
        add(l0);

        tFrom = new TextField("moi@monserveur.com") ;
    gridbag.setConstraints(tFrom, g);
        add(tFrom);

        g.gridwidth = GridBagConstraints.REMAINDER; //end row

        bEnvoie = new Button("Envoie") ;
    gridbag.setConstraints(bEnvoie, g);
        add(bEnvoie);

        g.gridwidth = GridBagConstraints.RELATIVE ;
        Label l1 = new Label("To :") ;
    gridbag.setConstraints(l1, g);
        add(l1);

        g.gridwidth = GridBagConstraints.REMAINDER; //end row
        tTo = new TextField("xxxx@yyyy.com") ;
    gridbag.setConstraints(tTo, g);
        add(tTo);

        g.gridwidth = GridBagConstraints.RELATIVE ;
        Label l2 = new Label("Subject :") ;
    gridbag.setConstraints(l2, g);
        add(l2);

        g.gridwidth = GridBagConstraints.REMAINDER; //end row
        tSubject = new TextField("Test tMail") ;
    gridbag.setConstraints(tSubject, g);
        add(tSubject);

        g.gridwidth = GridBagConstraints.RELATIVE ;
        Label l3 = new Label("Message :") ;
    gridbag.setConstraints(l3, g);
        add(l3);

    g.fill               = GridBagConstraints.BOTH ;
        g.gridwidth  = GridBagConstraints.REMAINDER; //end row
        g.gridheight = GridBagConstraints.REMAINDER; //end col
        tMessage     = new TextArea("...",5,40) ;
    gridbag.setConstraints(tMessage, g);
        add(tMessage);

} // end of init


public boolean action(Event evt, Object arg)
{
        if (evt.target instanceof Button) {
      try {
                 sendMail(tTo.getText(),
                                  tFrom.getText(),
                  tSubject.getText(),
                  tMessage.getText() ) ;
      }
      catch(UnknownHostException uhe)
          {
                 Debug("-->uhe " + uhe ) ;
          }
      catch(ProtocolException pe)
          {
                 Debug("-->pe " + pe ) ;
          }
      catch(IOException ioe)
          {
                 Debug("-->ioe " + ioe ) ;
          }
        }

        return true ;
}



public void sendMail(String to_address,   // Destinataire du message
                        String from_address, // Emeteur du message
                        String sSu,          // Sujet du message
                        String sMess)        // Message
         throws IOException, ProtocolException, UnknownHostException
 {

         tMessage.setText("") ;
         Debug("--- Envoie de Mail----") ;
         Debug("--- From : " + from_address) ;
         Debug("--- To   : " + to_address) ;
         Debug("--- Sujet: " + sSu) ;
         Debug("--- Mess : " + sMess) ;
         Debug("----------------------") ;

     Socket socket;       // Le Socket
     DataInputStream in;  // Le stream de lecture du Socket
     PrintStream out;     // Le stream d'ecriture du Socket
     String host;         // Identification du poste
     String str;          // Pour la lecture de donnees
     // Identification du poste
     // host = InetAddress.getLocalHost().toString() ;
         host = new String("www.aol.com") ;

     // Ouverture du socket (connection au mailServer)
     //   et des streams de lecture et d'ecriture
     socket = new Socket(getDocumentBase().getHost(), 25);
     in     = new DataInputStream(socket.getInputStream());
     out    = new PrintStream(socket.getOutputStream());
     // lecture du message initial
         str = in.readLine();

         Debug(str) ;

     if (!str.startsWith("220"))
                 throw new ProtocolException(str);
     while (str.indexOf('-') == 3) {
                 str = in.readLine();
                 Debug(str) ;
         if (!str.startsWith("220"))
            throw new ProtocolException(str);
         }
     // fin message initial

     // Dialogue avec les Serveur de mail
         // Envoie de HELO au serveur SMTP
     out.println( "HELO " + host );
         out.flush() ;
         str = in.readLine();

         Debug(str) ;

     if (!str.startsWith("250"))    throw new ProtocolException(str);
     // On est connecte au serveur de Mail...
         // Envoie du Mail
     out.println( "MAIL FROM: " + from_address );
         out.flush() ;
     str = in.readLine();

         Debug(str) ;

     if (!str.startsWith("250"))    throw new ProtocolException(str);
     // A qui envoie t on cela
         out.println( "RCPT TO: " + to_address );
     out.flush() ;
     str = in.readLine();

         Debug(str) ;

     if (!str.startsWith("250"))    throw new ProtocolException(str);
     // Est on pret a envoyer les donnees
         out.println( "DATA" );
     out.flush() ;
         str = in.readLine();

         Debug(str) ;

     if (!str.startsWith("354"))    throw new ProtocolException(str);
     // Emmeteur - Destinataire - Sujet
     out.println("From: " + from_address);
         out.println("To: " + to_address);
     out.println( "Subject: " + sSu + "\n" );
         out.flush() ;
     out.println("Comment: Unauthenticated sender");
     out.println("X-Mailer: Simple tSmtp");
         out.println("");
     out.println( sMess ) ;
     out.println(".") ;
         out.flush() ;
     str = in.readLine();

         Debug(str) ;

     if (!str.startsWith("250"))    throw new ProtocolException(str);

     out.println("QUIT");
         out.flush();
         in.close() ;

         Debug("Fin du Mail...") ;

     socket.close()  ;
         return ;
}

public void Debug(String str)
{
//      System.out.println(str) ;
        tMessage.appendText(str + "\n") ;

        return ;
}

public static void main(String args[])
{
        Frame f = new Frame("tMail");
        tMail tM = new tMail();
        tM.init();
        tM.start();

        f.add("Center", tM);
        f.resize(350, 200);
        f.pack();
        f.show();
   }

}
--
来去如风

※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.5]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店