我们打算开发一种服务,它始终将保持连接到电子邮件服务器,以便每当用户触发邮件时,它将通过使用连接发送而不是获得新连接并发送邮件。 是否有可能我们总是使用JAVA Mail API保持与电子邮件服务器的连接? 请在此帮助我。连续邮件服务器使用JAVA邮件API连接
1
A
回答
3
当您连接到SMTP服务器时(同样在使用javax.mail
API时),您使用套接字连接(请参阅SMTPTransport and Transport classes的src)。套接字允许您连接到远程服务器,并且该连接保持打开状态,直到明确关闭。这意味着理论上你可以创建一个连接并重用它。
但是,许多SMTP服务器非常邪恶,将终止连接if you are using it "too slow"或if you try to resuse your SMTP session to often。 (我查找了postfix设置。)
Java邮件API允许您创建连接并在需要时关闭它。水木清华。像这样:
Transport transport = session.getTransport("smtp");
transport.connect();
transport.sendMessage(msg, addressArray);
// you can do transport.close(); later
然而,因为事实的SMTP服务器是如何,你不能只执行一次connect()
和忘记它。最多可以做的是通过重新连接来正确处理强制断开连接。还有就是Java邮件API做,在一个通知机制(以在notifyConnectionListeners
方法的用法看看)
0
然而,因为事实的SMTP服务器是如何,你不能只是 执行连接()一次并忘记它。至多,你可以做什么, 通过重新连接再次正确处理强制断开连接。
同意!
可事实上重复使用下面的逻辑了JavaMail SMTP连接:
Transport transport = null;
MimeMessage message = null;
Properties prop = new Properties();
// load all smtp properties
Session session = Session.getDefaultInstance(prop, null);
transport = session.getTransport("smtp");
for (EachMail eachMail : list) {
if (!transport.isConnected()) {
if (port != null && port.length() > 0) {
transport.connect(host, Integer.parseInt(port), "<username>", "<password>");
} else {
transport.connect(host, "<username>", "<password>");
}
}
// set all mail attributes from eachMail object
message.saveChanges();
transport.sendMessage(message, message.getAllRecipients());
}
就像一个魅力。干杯!
0
如果你想要一个总是连接的连接,你应该在发送方法之外创建你的传输,但是为了避免在发送时出现错误(SMTPSendFailedException 421超时数据客户端),你应该检查传输是否连接,如果不连接再次befor发送:
if (!transport.isConnected())//make sure the connection is alive
transport.connect();
transport.sendMessage(message, message.getAllRecipients());
相关问题
- 1. 连接失败POP3使用Java邮件API到Exchange服务器
- 2. Java邮件iCloud邮件连接到IMAP服务器
- 3. 无法连接邮件服务器
- 4. 连接到邮件服务器
- 5. 邮件服务器连接失败
- 6. PHP邮件:无法连接到邮件服务器
- 7. 警告:邮件()[function.mail]:无法连接到邮件服务器
- 8. 如何连接邮件服务器并检索邮件?
- 9. Java邮件API连接存储在本地服务器但未连接到开发服务器
- 10. 使用域名邮件时拒绝使用Java邮件连接
- 11. fasteR在邮件服务器上使用java邮件API搜索特定邮件
- 12. Mercury邮件服务器的JavaMail API连接错误
- 13. 无法连接到我的邮件服务器(JAVA)
- 14. smtp服务器用于通过java邮件api发送邮件
- 15. 如何连接邮件服务器以使用mime4j?
- 16. 使用IMAP连接到Exchange邮件服务器
- 17. 使用Win API通过Gmail邮件服务器发送邮件
- 18. 本地SMTP邮件服务器无法发送邮件(连接超时)
- 19. 警告:邮件():无法连接到邮件服务器; localhost端口25
- 20. 使用自己的邮件服务器的Java邮件
- 21. 使用java邮件API发送邮件
- 22. Java邮件服务
- 23. 如何从没有互联网连接的服务器使用Web服务器发送Java邮件API的邮件?
- 24. 邮件客户端无法连接到代理服务器后面的邮件服务器
- 25. 发送邮件失败:传输失败连接到服务器
- 26. C#IMAP客户端 - 与邮件服务器的多个连接
- 27. 尝试连接到POP3服务器邮件
- 28. 如何从Firefox扩展连接到邮件服务器?
- 29. Perl:SMTP无法连接到邮件服务器
- 30. 本地主机不会连接到邮件服务器
感谢您的快速回复,我会检查这个并回来给你。 – vairam
嗨,我试过上面的代码,它的工作正常,但有一个问题在那里。如果我想连续发送消息使用与消息类型相同的连接作为html(MinmeMessage和MimeBodyPart),则先前的消息将附加到下一封邮件中。你知道它附加的原因吗? – vairam
嗨,忽略上面的评论,我试了上面的代码,它的工作正常,再次感谢。 – vairam