我做了一个简单的应用程序来使用 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;
}
但是,无论 hostName 的值如何(例如 gmail.com、yahoo.com) Record[] records = new Lookup(hostName, Type.MX).run(); 总是返回 null。
我很确定我错过了什么,但我不知道是什么。你能帮我解决这个问题吗?你能告诉我我做错了什么吗?
非常感谢,
安德烈亚