Java 查找SMTP服务器及其端口?

Java 查找SMTP服务器及其端口?,java,android,email,smtp,Java,Android,Email,Smtp,我正在为我的期末专题做一些研究。我的想法是开发一个android电子邮件客户端 我正在测试我的一些想法,出现了一个问题。要联系SMTP服务器,发送电子邮件,我需要知道is(SMTP服务器)名称和端口。例如,如果用户有mail.ru帐户,则我需要知道SMTP服务器名称和联系人端口 有没有办法通过编程方式找到该名称和端口?通常,您只有一个特定的SMTP服务器,配置为转发邮件 如果您想自己发送邮件,您必须向DNS请求邮件主机(在linux系统上尝试dig mail.ru MX)。但是,请注意,如果您使

我正在为我的期末专题做一些研究。我的想法是开发一个android电子邮件客户端

我正在测试我的一些想法,出现了一个问题。要联系SMTP服务器,发送电子邮件,我需要知道is(SMTP服务器)名称和端口。例如,如果用户有
mail.ru
帐户,则我需要知道SMTP服务器名称和联系人端口


有没有办法通过编程方式找到该名称和端口?

通常,您只有一个特定的SMTP服务器,配置为转发邮件

如果您想自己发送邮件,您必须向DNS请求邮件主机(在linux系统上尝试
dig mail.ru MX
)。但是,请注意,如果您使用的是动态IP地址,接收方可能会阻止您以避免垃圾邮件

邮件传递端口,即查询MX记录的主机,始终为25。如果您使用提供商发送邮件服务器,端口也可能是587-请咨询提供商

有没有办法通过编程方式找到该名称和端口

您可以在DNS中找到邮件主机的名称。查询
MX
记录。获得邮件主机后,根据RFC 5321使用端口
25
。您不需要用户名和密码,因为它是对方的邮件服务器


如果您试图连接到组织的邮件服务器,以便邮件服务器将邮件发送到其他系统,请尝试端口465或端口587。首先使用465,因为这是
SMTPS
,然后尝试将端口587用于
MSA
。您需要
SMTPS
,因为您不想将身份验证凭据以纯文本形式放到网络上


以下是如何使用以下工具查询
MX
记录:

$dig gmail.com MX
;  挖掘9.8.5-P1 gmail.com MX
;; 全局选项:+cmd
;; 得到答案:

;; ->>Header看看这个相关问题:服务器名称和端口与配置outlook android电子邮件客户端时使用的相同。在站点上检查他们使用了/未使用加密的端口。顺便说一句,如果你想向这些服务器发送邮件,你必须检查是否支持tls。你可以通过编程查询一个包含这些信息的大型数据库,在你在线找到一个或你自己创建了一个数据库之后。(大多数邮件客户端实际上都是这样做的,除非他们只是建议
smtp。[之后是什么]
)。
$ dig gmail.com MX

; <<>> DiG 9.8.5-P1 <<>> gmail.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42931
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;gmail.com.         IN  MX

;; ANSWER SECTION:
gmail.com.      3599    IN  MX  20 alt2.gmail-smtp-in.l.google.com.
gmail.com.      3599    IN  MX  30 alt3.gmail-smtp-in.l.google.com.
gmail.com.      3599    IN  MX  10 alt1.gmail-smtp-in.l.google.com.
gmail.com.      3599    IN  MX  5 gmail-smtp-in.l.google.com.
gmail.com.      3599    IN  MX  40 alt4.gmail-smtp-in.l.google.com.

;; Query time: 23 msec
;; SERVER: 172.16.1.10#53(172.16.1.10)
;; WHEN: Fri Feb 07 22:19:33 EST 2014
;; MSG SIZE  rcvd: 150