2017-08-22 1 views

Répondre

0

Il est dans le transport, vous pouvez utiliser

transport.close(); 
+0

Nous utilisons communs apache piscine comme celui-ci 'essayer (ClosableSmtpConnection transport = connPool.borrowObject()) {...}'. Pensez-vous qu'il est possible de créer une stratégie d'éviction de pool pour ce pool, qui va expulser les transports utilisés plus de fois ou créés il y a un certain temps? Cela devrait assurer la fermeture des connexions longues ouvertes et également la fermeture des connexions SMTP lourdes utilisées. – Zveratko

0
//Declare the factory and the connection pool, usually at the application startup 
SmtpConnectionPool smtpConnectionPool = new SmtpConnectionPool(SmtpConnectionFactoryBuilder.newSmtpBuilder().build()); 

//borrow an object in a try-with-resource statement or call `close` by yourself 
try (ClosableSmtpConnection transport = smtpConnectionPool.borrowObject()) { 
    MimeMessage mimeMessage = new MimeMessage(transport.getSession()); 
    MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, false); 
    mimeMessageHelper.addTo("[email protected]"); 
    mimeMessageHelper.setFrom("[email protected]"); 
    mimeMessageHelper.setSubject("Hi!"); 
    mimeMessageHelper.setText("Hello World!", false); 
    transport.sendMessage(mimeMessage); 
} 

//Close the pool, usually when the application shutdown 
smtpConnectionPool.close(); 
+0

Que faire si j'ai besoin de fermer la connexion toutes les 20 courriels pour activer correctement les serveurs SMTP à équilibrage de charge. – Zveratko

+0

essayer() fermera ClosableSmtpConnection –

+0

-t-il fermer la connexion socket après chaque message? Ou seulement une connexion SMTP? J'ai essayé un test et la connexion physique est restée ouverte. – Zveratko