使用JAVA API查找知道电子邮件地址的SMTP主机和端口

Ioj*_*eea 6 java jakarta-mail java-api

我做了一个简单的应用程序来使用Java API发送电子邮件,并提出一个问题:

有没有办法找出SMTP主机知道将登录发送电子邮件的人的电子邮件地址?还有港口?

例如,如果发件人的电子邮件地址是sender@gmail.com,则SMTP主机为smtp.gmail.com,端口为465.如果发件人的电子邮件地址为sender@yahoo.com,则SMTP主机为smtp .yahoomail.com和25端口.

假设我不知道这个,有没有办法使用Java API类找到这些信息?请注意我是java的新手:)

提前致谢,

安德列亚


谢谢你的回答.我试过做以下事情:

    public static String getMXRecordsForEmailAddress(String eMailAddress) { 

            String returnValue = null; 

            try { 
                String hostName = getHostNameFromEmailAddress(eMailAddress); 
                Record[] records = new Lookup(hostName, Type.MX).run(); 
                if (records == null) { 
             throw new RuntimeException("No MX records found for domain " + hostName + ".");
 } 

                // return first entry (not the best solution) 
                if (records.length > 0) { 
                        MXRecord mx = (MXRecord) records[0]; 
                        returnValue = mx.getTarget().toString(); 
                } 
            } catch (TextParseException e) { 
                throw new RuntimeException(e); 
            } 

            System.out.println("return value = "+returnValue);
            return returnValue; 
        } 
Run Code Online (Sandbox Code Playgroud)

但是,无论hostName的值如何(例如.gmail.com,yahoo.com) Record [] records = new Lookup(hostName,Type.MX).run(); 总是返回null.

我很确定我错过了什么,但我不知道是什么.你能帮我解决这个问题吗?你能告诉我我做错了什么吗?

非常感谢你,

安德列亚

小智 0

您通常与您拥有的 smtp 服务器通信,它负责将邮件路由到 yahoo Gmail(某些随机 ISP 的服务器)。

使用的常规 API 是http://javamail.kenai.com/nonav/javadocs/javamail

如果您正在编写自己的 smtp 服务器: 1 请不要这样做 2 smtp 信息存储在 DNS mxrecord http://en.m.wikipedia.org/wiki/MX_record中