2011-10-15 63 views
0

我有一個使用Java的套接字設置,用戶可以輸入他們的用戶ID和密碼登錄到郵件的SMTP服務器。發送電子郵件時,我需要知道服務器上用戶的電子郵件地址,以便我可以將其放入電子郵件的From:標題中。但有時,用戶的ID可能與他的電子郵件地址不完全相同。例如,用戶ID可能是abc_john,主機名可能是smtp.smith.com,但實際的電子郵件地址可能是[email protected]。類似的東西。這是用戶名並不意味着其實際的電子郵件地址。在SMTP中解析實際的電子郵件地址

有沒有辦法在Java中解析其實際的電子郵件地址?我使用Socket連接他的SMTP服務器,而不是 JavaMail API。我希望能否有可以返回實際電子郵件地址的SMTP命令。

回答

2

向SMTP服務器發送一個VRFY命令,指定用戶名作爲參數。如果服務器支持VRFY(這是一個可選但推薦的命令),則響應應包含用戶郵箱的完整電子郵件地址。有關更多詳細信息,請參閱RFC 2821

0

不,你不能基於使用的用戶名和SMTP服務器派生任何東西。一個SMTP服務器可以作爲多個域的MX(例如,我的公司使用Gmail作爲其郵件提供商,但我們的電子郵件地址僅來自公司域)。過去(在垃圾郵件發生之前),您可以使用(至少在理論上)任何SMTP服務器爲任何給定的電子郵件地址發送郵件。

簡而言之:用戶需要以某種方式提供完整的電子郵件地址。

+0

如果用戶可以輸入他想要的任何地址作爲他的電子郵件地址,是不是會助長垃圾郵件和拼版?就像他可以試圖強加於別人一樣。當然,郵件的標題會顯示他的身份,但沒有人會一直讀取標題。 – Carven

+0

這取決於郵件服務器的確切配置。郵件服務器通常不允許任何電子郵件作爲發件人,除非配置爲允許特定用戶使用。 –

相關問題