当前位置:  技术问答>java相关

請問用Socket來實現SMTP的發送功能﹐它的流程是怎樣呢﹖謝謝﹗﹗

    来源: 互联网  发布时间:2015-02-19

    本文导语:  是否是﹕Connect->FromAddress->FromPassword->ToAddress->Sbuject->Message? | 回复人: sharetop(天生很笨) (2001-6-21 16:36:00)  得90分  /** 发送Email 的JavaBean @author sharetop @version 1.0.1 created date:2001-4-25 采用...

是否是﹕Connect->FromAddress->FromPassword->ToAddress->Sbuject->Message?

|
回复人: sharetop(天生很笨) (2001-6-21 16:36:00)  得90分 

/**
发送Email 的JavaBean

@author sharetop
@version 1.0.1
created date:2001-4-25

采用直接写Socket方式发送email
关于SMTP(SIMPLE MAIL TRANSFER PROTOCOL)命令,
参考 http://www.faqs.org/rfcs/rfc821.html

*/

import java.io.*;
import java.util.*;
import java.net.*;

public class Email
{
  private static final String CONTENT_TYPE = "text/html";

  private String smtpServer=null;
  private String fromMail=null;
  private String toMail=null;
  
  public Email(String smtp,String from,String to)
  {
  this.smtpServer=smtp;
  this.fromMail=from;
  this.toMail=to;
  }
  
  public void mail(String subject,String content) throws MailException
  {

    try{
  
  //打开邮件服务器port:25
  Socket s = new Socket(smtpServer,25);
  
  //用于socket读写数据
  PrintWriter out = new PrintWriter(s.getOutputStream(),true); 
  BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
    
    String res = null; //smtp服务器返回信息

    out.println("HELO "+smtpServer);
res=in.readLine();
if( !res.startsWith("220") ) throw new MailException("MailException:"+res);

    out.println("MAIL FROM: "+fromMail);
    res = in.readLine();
    if( !res.startsWith("250") ) throw new MailException("MailException:"+res);

  out.println("RCPT TO: "+toMail);
    res = in.readLine();
    if( !res.startsWith("250") ) throw new MailException("MailException:"+res);

    out.println("DATA");
    res = in.readLine();
    if( !res.startsWith("250") ) throw new MailException("MailException:"+res);
    
    out.println("Subject:"+subject);
    out.println("From:"+fromMail);
    out.println("To:"+toMail);
    out.println("Content-Type: text/html; charset=gb2312");
    out.println(content);

    out.println(".");
    res = in.readLine();
if( !res.startsWith("354") ) throw new MailException("MailException:"+res);
    
out.println("QUIT");
    s.close();
  }
  catch(UnknownHostException x) {
  throw new MailException("MailException:"+x.getMessage());
  }
  catch(IOException x){
  throw new MailException("MailException:"+x.getMessage());
  }
}//end method mail

}//end class Email

//发送邮件违例类
class MailException extends Exception
{
public MailException(String msg)
{
super(msg);
}
}
 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • QSocketDevice ( int socket, Type type )中那个 int socket 是哪里来得?
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • java命名空间java.net类socket的类成员方法: getreceivebuffersize定义及介绍
  • 线程间可否通过管道传递SOCKET句柄?还有其他方式传递SOCKET么?
  • java命名空间java.net类socket的类成员方法: gettrafficclass定义及介绍
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • java命名空间java.net类socket的类成员方法: getport定义及介绍
  • 两个 Socket 互相通信,其中一个如何判断另一个 Socket 是否已经意外断开了连接?
  • java命名空间java.net类socket的类成员方法: getlocalport定义及介绍
  • NOSQL iis7站长之家
  • java命名空间java.net类socket的类成员方法: getinetaddress定义及介绍
  • 我的ping程序怎么老是出现Socket operation on non-socket
  • java命名空间java.net类socket的类成员方法: isconnected定义及介绍
  • sco unix 下输入 man socket 居然显示 man:socket not found up有分


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3