WEB开发网
开发学院WEB开发Jsp 使用SMTP协议发送邮件 阅读

使用SMTP协议发送邮件

 2008-01-05 08:53:47 来源:WEB开发网   
核心提示:使用SMTP协议发送邮件,可以不通过SMTP服务器,使用SMTP协议发送邮件,直接将邮件发送到邮件服务器,很多服务器端程序可能需要向很多用户发送邮件,用SMTP协议发送邮件,这里使用sohu信箱,直接通过SMTP发送可能是最有效的,关于SMTP协议定义在RFC821

  使用SMTP协议发送邮件,可以不通过SMTP服务器,直接将邮件发送到邮件服务器。很多服务器端程序可能需要向很多用户发送邮件,直接通过SMTP发送可能是最有效的。

关于SMTP协议定义在RFC821,可以在此看中文版。

第一步:通过目标email查找邮件服务器。
例如:asklxf@sohu.com,其邮件服务器地址为:sohumx.sohu.com

import java.net.*;
import java.io.*;
import java.util.*;
import javax.naming.*;
import javax.naming.Directory.*;

public class Smtp {

   public static void main(String[] args) throws Exception {
     // DNS服务器,看看本机的DNS配置
     String dns = "dns://192.168.1.1";
     // 邮箱后缀:
     String domain = "sohu.com";
     Hashtable env = new Hashtable();
     env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
     env.put("java.naming.PRovider.url", dns);
     DirContext ctx = new InitialDirContext(env);
     Attributes attr = ctx.getAttributes(domain, new String[]{"MX" });
     NamingEnumeration servers = attr.getAll();
     // 列出所有邮件服务器:
     while(servers.hasMore()) {
       System.out.println(servers.next());
     }
   }
}

第二步:直接连接邮件服务器的25端口,用SMTP协议发送邮件。
这里使用sohu信箱,邮件服务器为sohumx.sohu.com,收信人必须在此服务器上:

import java.net.*;
import java.io.*;
import java.util.*;
import javax.naming.*;
import javax.naming.directory.*;

public class Smtp {

   private static String END_FLAG = "\r\n";

   public static void main(String[] args) throws Exception {
     String mx = "sohumx.sohu.com";
     InetAddress addr = InetAddress.getByName(mx);
     Socket socket = new Socket(addr, 25);

   InputStream in = socket.getInputStream();
     OutputStream out = socket.getOutputStream();


Tags:使用 SMTP 协议

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