WEB开发网
开发学院WEB开发Jsp 使用Socket发送电子邮件 阅读

使用Socket发送电子邮件

 2008-01-05 08:58:15 来源:WEB开发网   
核心提示:import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Ou
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PRintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

public class SMTPDemo {

 public static void main(String args[]) throws IOException,
   UnknownHostException {
  String msgFile = "file.txt";
  String from = "java2s@java2s.com";
  String to = "yourEmail@yourServer.com";
  String mailHost = "yourHost";
  SMTP mail = new SMTP(mailHost);
  if (mail != null) {
   if (mail.send(new FileReader(msgFile), from, to)) {
    System.out.println("Mail sent.");
   } else {
    System.out.println("Connect to SMTP server failed!");
   }
  }
  System.out.println("Done.");
 }

 static class SMTP {
  private final static int SMTP_PORT = 25;

  InetAddress mailHost;

  InetAddress localhost;

  BufferedReader in;

  PrintWriter out;

  public SMTP(String host) throws UnknownHostException {
   mailHost = InetAddress.getByName(host);
   localhost = InetAddress.getLocalHost();
   System.out.println("mailhost = " + mailHost);
   System.out.println("localhost= " + localhost);
   System.out.println("SMTP constrUCtor done\n");
  }

  public boolean send(FileReader msgFileReader, String from, String to)
    throws IOException {
   Socket smtpPipe;
   InputStream inn;
   OutputStream outt;
   BufferedReader msg;
   msg = new BufferedReader(msgFileReader);
   smtpPipe = new Socket(mailHost, SMTP_PORT);
   if (smtpPipe == null) {
    return false;
   }
   inn = smtpPipe.getInputStream();
   outt = smtpPipe.getOutputStream();
   in = new BufferedReader(new InputStreamReader(inn));
   out = new PrintWriter(new OutputStreamWriter(outt), true);
   if (inn == null  outt == null) {
    System.out.println("Failed to open streams to socket.");
    return false;
   }
   String initialID = in.readLine();
   System.out.println(initialID);
   System.out.println("HELO " + localhost.getHostName());
   out.println("HELO " + localhost.getHostName());
   String welcome = in.readLine();
   System.out.println(welcome);
   System.out.println("MAIL From:<" + from + ">");
   out.println("MAIL From:<" + from + ">");
   String senderOK = in.readLine();
   System.out.println(senderOK);
   System.out.println("RCPT TO:<" + to + ">");
   out.println("RCPT TO:<" + to + ">");
   String recipientOK = in.readLine();
   System.out.println(recipientOK);
   System.out.println("DATA");
   out.println("DATA");
   String line;
   while ((line = msg.readLine()) != null) {
    out.println(line);
   }
   System.out.println(".");
   out.println(".");
   String acceptedOK = in.readLine();
   System.out.println(acceptedOK);
   System.out.println("QUIT");
   out.println("QUIT");
   return true;
  }
 }
}

Tags:使用 Socket 发送

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接