`
isiqi
  • 浏览: 16002610 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java开发的邮件发送程序

阅读更多
导读:
  Java的网络功能非常强大,开发和使用也非常简单,难怪microsoft极力要争回程序语言的霸主地位。笔者根据smtp协议使用java Socket写了一个发送邮件的程序,将此与各位分享。
  实现的原理非常简单,首先建立和邮件服务器的Socket连接,然后进行和服务器握手,然后发送smtp指令,并封装邮件体,然后发送即可。大家不妨一试。由什么问题可以和我联系:Email:linlichao@163.com;Homepage:http://www.ehawa.com。
  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="\r\n";
  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()  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:<..><br>  sendRequest("MAIL FROM:"+LINEFEED); <br>  readResponse("250"); <br>  //RCPT TO:<..><br>  for(Enumeration enu=to.elements();enu.hasMoreElements();){ <br>  String to1=(String)enu.nextElement(); <br>  sendRequest("RCPT To:"+LINEFEED); <br>  readResponse("250"); <br>  } <br>  //DATA <br>  sendRequest("DATA"+LINEFEED); <br>  readResponse("354"); <br>  //邮件内容 <br>  StringBuffer s1=new StringBuffer("From: "+LINEFEED); <br>  s1.append("To: "+LINEFEED); <br>  s1.append("Subject: "+subject+LINEFEED); <br>  s1.append("Date: "+new java.util.Date().toLocaleString()+LINEFEED); <br>  s1.append("Content-Type: text/plain;charset=\"GB2312\""+LINEFEED); <br>  s1.append(LINEFEED); <br>  s1.append(content); <br>  s1.append(LINEFEED+"."+LINEFEED);//发送 <br>  sendRequest(s1.toString()); <br>  readResponse("250"); <br>  //QUIT退出 <br>  sendRequest("QUIT"+LINEFEED); <br>  readResponse("221"); <br>  try{ <br>  inData.close(); <br>  inData=null; <br>  }catch(Exception ex){} <br>  try{ <br>  outData.close(); <br>  outData=null; <br>  }catch(Exception ex){} <br>  try{ <br>  socket.close(); <br>  socket=null; <br>  }catch(Exception ex){} <br>  }catch(Exception e){ <br>  return false; <br>  //e.printStackTrace(); <br>  } <br>  return true; <br>  } <br>  private void readResponse(String cmd)throws Exception{ <br>  String tmp=inData.readLine(); <br>  if(tmp.startsWith(cmd));//System.out.println(" [S:]"+tmp); <br>  else throw new Exception("##########邮件发送失败!##########"+tmp); <br>  while(tmp.startsWith(cmd+"-"))tmp=inData.readLine(); <br>  } <br>  private void sendRequest(String msg){ <br>  //System.out.print("***[C:]"+msg); <br>  outData.write(msg); <br>  outData.flush(); <br>  } <br>  public void close(){ <br>  try{ <br>  inData.close(); <br>  inData=null; <br>  }catch(Exception ex){} <br>  try{ <br>  outData.close(); <br>  outData=null; <br>  }catch(Exception ex){} <br>  try{ <br>  socket.close(); <br>  socket=null; <br>  }catch(Exception ex){} <br>  } <br>  } <br>   <br>  Java的网络功能非常强大,开发和使用也非常简单,难怪microsoft极力要争回程序语言的霸主地位。笔者根据smtp协议使用java Socket写了一个发送邮件的程序,将此与各位分享。实现的原理非常简单,首先建立和邮件服务器的Socket连接,然后进行和服务器握手,然后发送smtp指令,并封装邮件体,然后发送即可。大家不妨一试。由什么问题可以和我联系:Email:linlichao@163.com;Homepage:http://www.ehawa.com。 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="\r\n"; 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&amp;&amp;this.pass!=null&amp;&amp;!this.user.equals("")&amp;&amp;!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() sendRequest("MAIL FROM:"+LINEFEED); readResponse("250");//RCPT TO:<..> for(Enumeration enu=to.elements();enu.hasMoreElements();){ String to1=(String)enu.nextElement(); sendRequest("RCPT To:"+LINEFEED); readResponse("250");}//DATA sendRequest("DATA"+LINEFEED); readResponse("354");//邮件内容 StringBuffer s1=new StringBuffer("From: "+LINEFEED); s1.append("To: "+LINEFEED); s1.append("Subject: "+subject+LINEFEED); s1.append("Date: "+new java.util.Date().toLocaleString()+LINEFEED); s1.append("Content-Type: text/plain;charset=\"GB2312\""+LINEFEED); s1.append(LINEFEED); s1.append(content); s1.append(LINEFEED+"."+LINEFEED);//发送 sendRequest(s1.toString()); readResponse("250");//QUIT退出 sendRequest("QUIT"+LINEFEED); readResponse("221"); try{ inData.close(); inData=null;}catch(Exception ex){} try{ outData.close(); outData=null;}catch(Exception ex){} try{ socket.close(); socket=null;}catch(Exception ex){}}catch(Exception e){ return false;//e.printStackTrace();} return true;} private void readResponse(String cmd)throws Exception{ String tmp=inData.readLine(); if(tmp.startsWith(cmd));//System.out.println(" [S:]"+tmp); else throw new Exception("##########邮件发送失败!##########"+tmp); while(tmp.startsWith(cmd+"-"))tmp=inData.readLine();} private void sendRequest(String msg){//System.out.print("***[C:]"+msg); outData.write(msg); outData.flush();} public void close(){ try{ inData.close(); inData=null;}catch(Exception ex){} try{ outData.close(); outData=null;}catch(Exception ex){} try{ socket.close(); socket=null;}catch(Exception ex){}}} <br><br>本文转自 <br><a href="http://www.cn-java.com/www1/?action-viewnews-itemid-2600">http://www.cn-java.com/www1/?action-viewnews-itemid-2600</a></..></..></..>
分享到:
评论

相关推荐

    java邮件发送完整测试程序

    适用于:需要开发邮件发送程序的java程序员,不知如何下手的java程序员。 此方法简单、易懂。 java版本邮件测试程序,在java上面完全运行。 邮件发送服务器包含:126、163、qq 1.把我打包文件里面的java程序直接导入...

    JAVA简单邮件发送客户端程序设计编程资料

    JAVA简单邮件发送客户端程序设计

    java开发的邮件服务器,对于发送文本邮件十分方便

    该程序通过java实现了在无需打开网页的情况下,完成邮件的发送,十分方便。

    java实现的邮件发送桌面程序

    使用的IDE是eclipse,导入的jar包只有javax.mail.jar这一个,在jdk1.7的环境下编写并调试的因为对javaMail这块一直不是太熟悉,所以就利用周六周日的时间参考API的情况下,做了一个小程序练手使用了网易的163的...

    java eamil发送

    java开发邮件发送程序,程序注释相当相当详细,让你一看就会。

    java电子邮件收发系统 java源代码

    java开发的电子邮件收发应用程序。包括邮件的发送、阅读、和删除功能。当然还可以添加联系人,联系人是采用xml文档保存的。本邮件系统当有新邮件到达时可以提示,并且系统托盘中的邮件图标会闪动。本邮件系统是本人...

    email 邮件发送 java 工具接口

    这是我写好的 直接能用的程序 里面有mail.jar和activation.jar 如果 用myEclipse进行开发时,如果程序...原因:邮件发送的jar包版本不统一 解决方法如下: 删除javaee.jar下javax自带的mail.jar和activation.jar

    Java邮件开发详解

    Java邮件开发介绍 课程目标 为什么要学习和如何学习邮件开发 电子邮件的一些基本常识 准备实验环境 SMTP协议与POP3协议 ...编写邮件发送程序 邮件内容的组织结构与邮件内容创建程序 邮件接收程序的简要介绍

    06_传智播客张孝祥java邮件开发_编写一个JavaMail发送邮件的程序.rar

    06_传智播客张孝祥java邮件开发_编写一个JavaMail发送邮件的程序.rar06_传智播客张孝祥java邮件开发_编写一个JavaMail发送邮件的程序.rar

    java源码包实例源码JAVA开发源码50个合集.zip

    java源码包实例源码JAVA开发源码50个合集: Ajax框架 ZK.rar Java图书馆管理系统源程序.rar Java图片倒影效果实例源码.rar Java图片翻折,将图像压扁.rar Java坦克大战网络对战版源代码.rar Java声音播放程序源代码....

    JAVA发送邮件的JAR包

    提供给开发者处理电子邮件相关的编程接口。Sun发布的用来处理email的API,可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

    <邮件自动发送>例子-Java实现

    最近用Java写了个邮件自动发送的功能,今日把例子发给大家进攻参考。

    java发送mail

    用java开发邮件发送程序,总会出现这样或那样的错误,今天真正用到了这块,写一个demo给需要的同事一个参考,里面包括: 1. 程序报错及解决方案.txt 2. MailUtils.java(程序源代码) 3. activation.jar 4. mail.jar

    电子邮件发送程序的设计与实现.doc

    详细设计 7 4.1窗体界面控件设计 7 4.2 程序实现 8 5、系统的实现与测试 15 5.1 发送电子邮件程序主界面(带附件) 15 5.2接收界面(带附件) 15 6、结束语 17 参考文献 18 电子邮件发送程序的设计与实现 摘 要 电子...

    基于SMTP的JAVA邮件发送基于websocket和java的多人聊天室编程资料程序编程资料

    基于SMTP的JAVA邮件基于websocket和java的多人聊天室发送程序

    Java Web开发实例大全

    Java Web开发实例大全(提高卷)筛选、汇集了Java Web开发从基础知识到高级应用各个层面的大量实例及源代码,共有600个左右,每个实例及源代码按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析...

    java开发的完整小应用程序

    该程序用net beans开发,用jsmooth打包,装jre后能独立运行,有简单的发送邮件功能。能从数据库中导入导出数据到Excel。

    javamail邮件系统(java邮件系统源代码)

    java开发的电子邮件收发应用程序。包括邮件的发送、阅读、和删除功能。当然还可以添加联系人,联系人是采用xml文档保存的。本邮件系统当有新邮件到达时可以提示,并且系统托盘中的邮件图标会闪动。本邮件系统是本人...

    精选_基于java.swing实现的发送邮件的小程序_源码打包

    基于java.swing实现的发送邮件的小程序

    java电子邮件收发系统 java源代码(2.2版)

    java开发的电子邮件收发应用程序。包括邮件的发送、阅读、和删除功能。当然还可以添加联系人,联系人是采用xml文档保存的。本邮件系统当有新邮件到达时可以提示,并且系统托盘中的邮件图标会闪动。本邮件系统是本人...

Global site tag (gtag.js) - Google Analytics