gpt4 book ai didi

java - Singleton 类中的邮件 session

转载 作者:行者123 更新时间:2023-12-02 00:43:58 25 4
gpt4 key购买 nike

将邮件 session (javax.mail.Session)存储在单例中是一个好的做法吗?我和我的团队决定将单个邮件 session 保留在 Singleton 类内的静态变量中。

因此,在私有(private)构造函数中我们这样做:

try {
Properties props = new Properties();

props.put("mail.transport.protocol", config.getMailTransportProtocol());
props.put("mail.smtp.starttls.enable", config.getMailStarttlsEnable());
props.put("mail.smtp.host", config.getMailHost());
props.put("mail.smtp.auth", config.getMailAuth());
props.put("mail.smtp.user", config.getMailFrom());
props.put("mail.debug", config.getMailDebug());
props.put("mail.smtp.port", config.getMailPort());
props.put("mail.smtp.socketFactory.port", config.getMailPort());
props.put("mail.smtp.socketFactory.class", config.getMailSocketFactoryClass());
props.put("mail.smtp.socketFactory.fallback", config.getMailSocketFactoryFallback());

props.put("mail.pop3.host", config.getMailPop3Host());
props.put("mail.store.protocol", config.getMailStoreProtocol());

SimpleAuth auth = new SimpleAuth(config.getMailUser(), config.getMailPass());

MailSession.session = Session.getDefaultInstance(props, auth);
session.setDebug(config.getMailDebug());
} catch (Throwable ex) {
System.err.println("Initial MailSession creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}

但我担心最好保持这样,还是为每封电子邮件打开和关闭一个 session 。

最佳答案

首先,您需要阅读 common mistakes 上的 JavaMail 常见问题解答条目.

如果您阅读 javadocs for the Session.getDefaultInstance method ,您将看到 JavaMail 已经为您维护了一个单例 session 。如果您从不更改 session 的配置,这可能对您有用,尽管我通常建议不要这样做。

关于java - Singleton 类中的邮件 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13589162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com