⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smtpclientdemo.java

📁 Java网络编程与分布式计算, 主要分析java网络各方面的编程, 提供许多实用安全
💻 JAVA
字号:
import java.io.*;import java.net.*;import java.util.*;
// Chapter 8, Listing 1public class SMTPClientDemo{  protected int port = 25;
  protected String hostname = "localhost";  protected String from = "";  protected String to = "";  protected String subject = "";  protected String body = "";  protected Socket socket;  protected BufferedReader br;  protected PrintWriter pw;
  // Constructs a new instance of the SMTP Client  public SMTPClientDemo() throws Exception  {
	try
	{
		getInput();
		sendEmail();
	}
	catch (Exception e)
	{
		System.out.println ("Error sending message - " + e);
	}
  }  public static void main(String[] args) throws Exception  {
	  // Start the SMTP client, so it can send messages	  SMTPClientDemo client = new SMTPClientDemo();  }
  // Check the SMTP response code for an error message  protected int readResponseCode() throws Exception  {    String line = br.readLine();    System.out.println("< "+line);    line = line.substring(0,line.indexOf(" "));    return Integer.parseInt(line);  }
  // Write a protocol message both to the network socket and to the screen  protected void writeMsg(String msg) throws Exception  {    pw.println(msg);    pw.flush();    System.out.println("> "+msg);  }
  // Close all readers, streams and sockets  protected void closeConnection() throws Exception  {    pw.flush();    pw.close();    br.close();    socket.close();  }
  // Send the QUIT protocol message, and terminate connection  protected void sendQuit() throws Exception  {    System.out.println("Sending QUIT");    writeMsg("QUIT");    readResponseCode();    System.out.println("Closing Connection");    closeConnection();  }
  // Send an email message via SMTP, adhering to the protocol known as RFC 2821  protected void sendEmail() throws Exception  {    System.out.println("Sending message now: Debug below");    System.out.println("--------------------------------------------------------------");    System.out.println("Opening Socket");    socket = new Socket(this.hostname,this.port);    System.out.println("Creating Reader & Writer");    br = new BufferedReader(new InputStreamReader(socket.getInputStream()));    pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));    System.out.println("Reading first line");    int code = readResponseCode();    if(code != 220) { socket.close(); throw new Exception("Invalid SMTP Server"); }    System.out.println("Sending helo command");    writeMsg("HELO "+InetAddress.getLocalHost().getHostName());    code = readResponseCode();    if(code != 250)    {      sendQuit();      throw new Exception("Invalid SMTP Server");    }    System.out.println("Sending mail from command");    writeMsg("MAIL FROM:<"+this.from+">");    code = readResponseCode();    if(code != 250)    {      sendQuit();      throw new Exception("Invalid from address");    }    System.out.println("Sending rcpt to command");    writeMsg("RCPT TO:<"+this.to+">");    code = readResponseCode();    if(code != 250)    {      sendQuit();      throw new Exception("Invalid to address");    }    System.out.println("Sending data command");    writeMsg("DATA");    code = readResponseCode();    if(code != 354)    {      sendQuit();      throw new Exception("Data entry not accepted");    }    System.out.println("Sending message");    writeMsg("Subject: "+this.subject);
	writeMsg("To: "+this.to);
	writeMsg("From: "+this.from);    writeMsg("");    writeMsg(body);    code = readResponseCode();    sendQuit();    if(code != 250)      throw new Exception("Message may not have been sent correctly");    else      System.out.println("Message sent");  }
  // Obtain input from the user  protected void getInput() throws Exception  {
	// Read input from user console    String data=null;    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

	// Request hostname for SMTP server    System.out.print("Please enter SMTP server hostname: ");    data = br.readLine();    if (data == null || data.equals("")) hostname="localhost";    else 
		hostname=data;    

	// Request the sender's email address
	System.out.print("Please enter FROM email address: ");
	data = br.readLine();
	from = data;

	// Request the recipient's email address    System.out.print("Please enter TO email address :");    data = br.readLine();    if(!(data == null || data.equals("")))
		to=data;    System.out.print("Please enter subject: ");    data = br.readLine();		subject=data;    System.out.println("Please enter plain-text message ('.' character on a blank line signals end of message):");    StringBuffer buffer = new StringBuffer();
	// Read until user enters a . on a blank line    String line = br.readLine();    while(line != null)    {
	  // Check for a '.', and only a '.', on a line      if(line.equalsIgnoreCase("."))      {        break;      }      buffer.append(line);      buffer.append("\n");      line = br.readLine();    }    buffer.append(".\n");    body = buffer.toString();  }}

⌨️ 快捷键说明

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