当用户名包含“@”字符时,javax.mail.URLName无法解析用户名和密码

时间:2012-03-30 00:40:53

标签: java email javamail spring-integration

我正在使用spring集成的org.springframework.integration.mail.ImapMailReceiver来读取IMAP服务器上的一些电子邮件。

与许多其他IMAP服务器一样,我连接的IMAP服务器使用电子邮件地址作为用户名。

所以我以这种方式创建ImapMailReceiver的新实例

新的ImapMailReceiver(“imap://user@mail.XXXX.com.au:password@mail.XXXX.com.au:143 / INBOX”);

我相信ImapMailReceiver使用URLName类将给定的字符串解析为协议,用户等。

但是,由于url字符串包含2个'@'字符,因此URLName类变得混乱,无法解析用户名和密码。

以前有其他人有过类似的问题吗?你是怎么解决这个问题的?

任何评论都会受到欢迎!!

感谢。

2 个答案:

答案 0 :(得分:3)

用户名中的“@”需要进行URL编码。如果您使用带有单独的用户名,密码等参数的URLName构造函数,它将为您执行此操作。如果您是手动编写,则需要正确编写,并对任何特殊字符使用正确的编码。

答案 1 :(得分:1)

' ave尝试从GMAIL收到邮件,这就是为什么我使用 imaps

`imapMailReceiver = new ImapMailReceiver("imaps://" + URLEncoder.encode(USERNAME, "UTF-8") + ":" + PASSWORD + "@imap.gmail.com:993/INBOX");`

不,它运作良好