mailapplet.java

来自「java网络高级编程的配套源码,java网络高级编程为清华出版社出版.」· Java 代码 · 共 191 行

JAVA
191
字号
/*源程序清单12-27*/

import borland.jbcl.layout.*;
import borland.jbcl.control.*;
import java.awt.*;
import java.applet.Applet;
import java.util.StringTokenizer;
import java.net.Socket;
import java.io.PrintStream;
import java.lang.Exception;
import java.awt.event.ActionEvent;

public class MailApplet extends Applet
{
  boolean isStandalone = false;
  PaneLayout paneLayout1 = new PaneLayout();
  Panel panel1 = new Panel();
  Label label1 = new Label();
  XYLayout xYLayout1 = new XYLayout();
  Label label2 = new Label();
  TextField textField1 = new TextField();
  TextField textField2 = new TextField();
  Label label3 = new Label();
  TextArea textArea1 = new TextArea();
  Button button1 = new Button();
  Button button2 = new Button();
  private int SMTP_PORT = 25;//邮件服务器缺省端口号
  Frame frame=new Frame();
  Color bgcolor=null;
  String send="";
  String get="";

  public MailApplet()
  {
  }

  public void init()
  {
    try
    {
      int c1=Integer.parseInt(getParameter("color1"));
      int c2=Integer.parseInt(getParameter("color2"));
      int c3=Integer.parseInt(getParameter("color3"));
      bgcolor=new Color(c1,c2,c3);
      SMTP_PORT=Integer.parseInt(getParameter("port"));
      send=getParameter("send");
      get=getParameter("get");
      jbInit(); 
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }

  //Component initialization
  private void jbInit() throws Exception
  {
    this.setSize(new Dimension(332, 280));
    panel1.setBackground(bgcolor);
    label1.setAlignment(2);
    label1.setText("收信人地址:");
    label2.setAlignment(2);
    label2.setText("寄信人地址:");
    label3.setAlignment(2);
    label3.setText("内容:");
    button1.setLabel("发  送");
    button1.addActionListener(new MailApplet_button1_actionAdapter(this));
    button2.setLabel("清  除");
    button2.addActionListener(new MailApplet_button2_actionAdapter(this));
    panel1.setLayout(xYLayout1);
    this.setLayout(paneLayout1);
    this.add(panel1, new PaneConstraints("panel1", "panel1", PaneConstraints.ROOT, 1.0f));
    panel1.add(label1, new XYConstraints(10, 5, 80, 20));
    panel1.add(label2, new XYConstraints(10, 30, 80, 20));
    panel1.add(textField1, new XYConstraints(95, 5, 200, 20));
    panel1.add(textField2, new XYConstraints(95, 30, 200, 20));
    panel1.add(label3, new XYConstraints(10, 60, 80, 20));
    panel1.add(textArea1, new XYConstraints(10, 80, 300, 150));
    panel1.add(button1, new XYConstraints(50, 240, 80, 25));
    panel1.add(button2, new XYConstraints(160, 240, 80, 25));
    textField1.setText(get);
    textField2.setText(send);
  }

  public String getAppletInfo()
  {
    return "Applet Information";
  }

  public String[][] getParameterInfo()
  {
    return null;
  }

  void sendMail()
  {
    String sender=textField2.getText();
    String geter=textField1.getText();
    String memo=textArea1.getText();
    StringTokenizer st=new StringTokenizer(sender,"@");
    int count=st.countTokens();
    if(count!=2)
    {
      MessageDialog mdlg=new MessageDialog(frame,"邮件地址错误","你的发信人地址错误,请确认后重新发送!",1);
      mdlg.show();
      textField2.selectAll();
      return;
    }
    String senderName=st.nextToken();
    String senderHost=st.nextToken();
    st=new StringTokenizer(geter,"@");
    count=st.countTokens();
    if(count!=2)
    {
      MessageDialog mdlg=new MessageDialog(frame,"邮件地址错误","你的收信人地址错误,请确认后重新发送!",1);
      mdlg.show();
      textField1.selectAll();
      return;
    }
    String geterName=st.nextToken();
    String geterHost=st.nextToken();
    try
    {
      Socket s = new Socket(geterHost, SMTP_PORT);
      PrintStream out = new PrintStream(s.getOutputStream());
      out.println("HELLO: " + senderHost);
             //邮件服务器不认证读者所输SMTP是否正确
      out.println("MAIL FROM: " + senderName);
      out.println("RCPT TO: " + geterName);
      out.println("DATA");
      out.println(memo);
      out.println(".");
      out.println("QUIT");
      MessageDialog mdlg=new MessageDialog(frame,"邮件地址成功","恭喜,您发送的邮件已经发送成功!",1);
      mdlg.show();
    }
    catch(Exception e)
    {
      System.out.println(e.toString());
      MessageDialog mdlg=new MessageDialog(frame,"邮件发送错误",e.toString(),1);//"邮件发送出错,请确认后重新发送!",1);
      mdlg.show();
      return;
      }
  }

  void button1_actionPerformed(ActionEvent e)
  {
    sendMail();
    textArea1.setText("");
  }

  void button2_actionPerformed(ActionEvent e)
  {
    textField1.setText("");
    textField2.setText("");
    textArea1.setText("");
  }
}

class MailApplet_button1_actionAdapter implements java.awt.event.ActionListener
{
  MailApplet adaptee;

  MailApplet_button1_actionAdapter(MailApplet adaptee)
  {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e)
  {
    adaptee.button1_actionPerformed(e);
  }
}

class MailApplet_button2_actionAdapter implements java.awt.event.ActionListener
{
  MailApplet adaptee;

  MailApplet_button2_actionAdapter(MailApplet adaptee)
  {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e)
  {
    adaptee.button2_actionPerformed(e);
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?