【java开发的邮件发送程序】

Java的网络功能非常强大,开发和使用也非常简单,难怪microsoft极力要争回程序语言的霸主地位。根据smtp协议使用java Socket写了一个发送邮件的程序,

  实现的原理非常简单,首先建立和邮件服务器的Socket连接,然后进行win7 vista xp系统优化教程和服务器握手,然后发送smtp指令,并封装邮件体,然后发送即可。

  import java.net.*;

  import java.io.*;

  import java.util.*;

  public class SMTPSender{

  Socket socket=null;

  PrintWriter outData=null;

  BufferedReader inData=null;

  String smtpServer="";

  String user="";

  String pass="";

  String from="";

  String LINEFEED=" ";

  boolean isNeedAuthLogin=false;

  Vector to=new Vector();

  public static void main(String[] args){

  SMTPSender smtp=new SMTPSender();

  smtp.setMailServer("mail.ehawa.com");

  smtp.setMailFrom("root@ehawa.com","???","???");

  smtp.addMailTo("root@ehawa.com");

  if(smtp.send("hello","这是一个测试!")){

  System.out.println("邮件发送成功!");

  }else System.out.println("邮件发送失败!");

  }

  public void setMailServer(String s){

  smtpServer=s;

  }

  public void setMailFrom(String s,String uid,String pwd){

  this.from=s;

  this.user=uid;

  this.pass=pwd;

  this.isNeedAuthLogin=(this.user!=null&&this.pass!=null&&!this.user.equals("")&&!this.pass.equals(""));

  }

  public boolean addMailTo(String mailAddr){

  to.addElement(mailAddr);

  return true;

  }

  public boolean send(String subject,String content){

  try{

  if(smtpServer==null||smtpServer.equals(""))return false;

  if(from==null||from.equals(""))return false;

  if(to.size()<1)return false;

  socket=new Socket(smtpServer,25);

  outData=new PrintWriter(socket.getOutputStream());

  inData=new BufferedReader(new InputStreamReader(socket.getInputStream()));

  //与邮件服务器连接成功

  readResponse("220");

  //HELO host

  sendRequest("HELO "+smtpServer+LINEFEED);

  readResponse("250");

  if(isNeedAuthLogin){

  //AUTH LOGIN

  sendRequest("AUTH LOGIN"+LINEFEED);

  readResponse("334");

  //USERNAME:

  sendRequest(new String(Base64.encodeString(user))+LINEFEED);

  readResponse("334");

  //PASSWORD:

  sendRequest(new String(Base64.encodeString(pass))+LINEFEED);

  readResponse("235");

  }

  //MAIL FROM:<..>

  sendRequest("MAIL FROM:<"+from+">"+LINEFEED);

  readResponse("250");

  //RCPT TO:<..>

  for(Enumeration enu=to.elements();enu.hasMoreElements();){

  String to1=(String)enu.nextElement();

  sendRequest("RCPT To:<"+to1+">"+LINEFEED);

  readResponse("250");

  }

posted @ 2013-08-28 09:38  豆豆逗逗  阅读(137)  评论(0编辑  收藏  举报