我做了一个简单的应用程序来使用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 …Run Code Online (Sandbox Code Playgroud) 我正在构建一个程序来列出域的所有MX记录.它起初似乎工作正常,但在与在线工具http://mxtoolbox.com/进行比较后.MXToolbox可以有程序无法获取MX记录的域.
我不确定是什么原因或任何需要的配置.
非常感谢;
这是我的代码.
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.InitialDirContext;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Hashtable;
public class DNSLookup
{
private InitialDirContext iDirC;
public DNSLookup ()
{
Hashtable<String, String> env = new Hashtable<String, String>();
//env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
//env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.dns.DnsContextFactory");
//env.put(Context.PROVIDER_URL, "dns://google.com");
// get the default initial Directory Context
try {
iDirC = new InitialDirContext(env);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void lookup (String host, String …Run Code Online (Sandbox Code Playgroud)