java - 使用并行流发送电子邮件时出现 NoSuchProviderException
问题描述
我正在使用 Java 8 的并行流向用户列表发送电子邮件。这是我的代码 -
AtomicInteger numberOfMailSent = new AtomicInteger(0);
listUsers.parallelStream().forEach(recipient -> {
try {
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
if (EmailHelper.sendEmail(recipient.getEmailAddress()) == true)
numberOfMailSent.incrementAndGet();
} catch (Exception e1) {
logger.error("An error in sending email due to - " + e1.getMessage());
}});
System.out.println(numberOfMailSent);
在上面的代码中,sendEmail 方法使用 Java Mail API 1.4.0 版(我没有源代码)。用户列表大约有 20-40 个用户,这取决于其他输入。对于列表中的某些用户,此代码会抛出 -
NoSuchProviderException: No provider for Address type: rfc822
javax.mail.NoSuchProviderException: No provider for Address type: rfc822
at javax.mail.Session.getTransport(Session.java:475)
at javax.mail.Transport.send0(Transport.java:154)
at javax.mail.Transport.send(Transport.java:80)
但是,当我按顺序运行每个循环使用的相同用户列表时,我根本没有收到此错误,并且邮件正常。我尝试将 Java 邮件 api 版本更改为 1.4.7 但没有成功。任何人知道为什么会这样吗?谢谢!
解决方案
推荐阅读
- c# - 是否可以在 XAML 文件中设置 WPF RenderMode?
- javascript - 如何在json中获取所有日期名称与时间相同?
- python - 在 Python 中使用 ARN iam 将文件上传到 Amazon s3 存储桶
- c++ - 如何返回/复制 unique_ptr 的值
? - ruby-on-rails - 在heroku上通过捆绑安装本地gem不起作用
- ruby-on-rails - 尝试在 simple_from 中显示 Uppy 上传程序
- python - Python中的数据透视表
- aframe - 图像未在 A-Frame 版本 8 中显示(仅限版本 2)
- c - 为什么 main 使用返回类型字符串运行,即使它是用整数返回类型定义的?
- ocr - tesseract 4.0 未能检测到小于“<”符号