- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试从 Java 邮件 API 发送邮件时遇到以下异常: javax.mail.MessagingException: Can't send command to SMTP host;
nested exception is: javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.j: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is:
java.security.cert.CertPathValidatorException: The certificate issued by CN=Baltimore CyberTrust Root, OU=CyberTrust, O=Baltimore, C=IE is not trusted; internal cause is:
java.security.cert.CertPathValidatorException: Certificate chaining error
下面是我的Java代码。相同的代码在我的本地系统上运行良好。当我在 tomcat 服务器上发布 Web 应用程序但相同的代码无法工作时。当我在 IBM WebSphere Application Server 上部署它时。
它显示了上述异常,
public static void sendMail(String toMailIds,String subject,String htmlMsg){
String[] recipientList = toMailIds.split(",");
InternetAddress[] recipientAddress = new InternetAddress[recipientList.length];
int counter = 0;
for (String recipient1 : recipientList) {
try {
recipientAddress[counter] = new InternetAddress(recipient1.trim());
} catch (AddressException e) {
e.printStackTrace();
}
counter++;
}
// Sender's email ID needs to be mentioned
String from = "abc@xyz.com";
final String username = "abc@xyz.com";//change accordingly
final String password ="password`enter code here`";//change accordingly
String host = "smtp.office365.com";
Properties props = new Properties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.ssl.trust", host);
// props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.debug", "true");
props.put("mail.smtp.user", username);
// Get the Session object.
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Transport tr = session.getTransport("smtp");
tr.connect();
System.out.println("Validating email finished");
// Create a default MimeMessage object.
Message message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.setRecipients(Message.RecipientType.TO, recipientAddress);
// Set Subject: header field
message.setSubject(subject);
// HTML TEXT
message.setContent(htmlMsg, "text/html");
// Send message
Transport.send(message);
System.out.println("Sent message successfully....");
} catch (Exception e) {
System.out.println("Exception--------------------"+e);
throw new RuntimeException(e);
}
// TODO Auto-generated constructor stub
}`
最佳答案
查看异常:
The certificate issued by CN=Baltimore CyberTrust Root, OU=CyberTrust, O=Baltimore, C=IE is not trusted;
您使用 SSL 连接到 SMTP 服务器。您必须将 SMTP 服务器证书放入 WebSphere Application Truststore 才能建立连接。您的 Tomcat 服务器使用不同的 JDK,因此使用不同的信任库。
查看其他帖子如何将签名者证书添加到 WAS 中的信任库。
第二个考虑因素是您应该在 WAS 中使用 MailSession,而不是在代码中硬编码所有邮件服务器数据。这是在 Java EE 应用程序中获取邮件 session 的推荐方法。
如果您不想在完整的 WAS 上进行开发,那么您应该使用 WebSphere Liberty Profile 进行开发,而不是使用 Tomcat。它在启动时间和内存占用方面与 Tomcat 一样轻量级,并且 WAS 中已包含库,因此您无需添加第三方库。
关于javax.mail.MessagingException : Can't send command to SMTP host,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35171412/
我正在尝试安装一种用于 TCPDF 的字体。为此,我需要运行附带的命令行实用程序 ttf2ufm。 (包含在 TCPDF 中的 fonts/utils/ttf2ufm 中)但是当我运行它时,出现错误
我是 answering a question并假设 if [ $(command) ]; then ... 总是等同于 if command; then ... 但是,我得到了a couple of
我的package.json定义: ... "scripts": { "start": "node scripts/start.js", "build"
我知道默认的“CTRL+B”Windows 命令可用于显示所有嵌套文件。 是否有显示所有嵌套文件夹的快捷方式? 最佳答案 我怀疑 Total Commander 中是否存在此功能。内置tree实用性对
任何人都可以告诉我,是否有任何可以检测当前运营商名称的AT命令? 我用过AT+COPS? 它返回给我运算符(operator)的数字代码:0,2,40410 然后我使用命令 AT+WOPN = 0,4
我需要将网站托管到 google firebase 托管。 我几乎到处都看过,但钢有问题。 我已安装 npm install --global firebase 还有 npm install -g f
我想要这样的东西 如果(command_not_exists)退出 谁能告诉我如何在 cshell 脚本中实现此功能? 最佳答案 我的问题是使用 where 命令解决的(我尝试使用 which 命令)
通过使用 + 的参数调用它,我可以使 vim 将光标定位在文件的最后一行。 : vi + myfile # "+" = go to last line of file 我怎样才能做到
我想要这样的东西 如果(command_not_exists)退出 谁能告诉我如何在 cshell 脚本中实现此功能? 最佳答案 我的问题是使用 where 命令解决的(我尝试使用 which 命令)
在 cobra 中,我创建了一个命令命令: myapp zip -directory "xzy" -output="zipname" myapp upload -filename="abc" 我想制作
我应用了所有可能的答案,但仍然是同样的问题。 也试过 $this->db->reconnect(); 我的查询没有问题 我的代码: public function GetdistributorsDet
有什么区别: eval echo lala 和: command="echo lala" $command 它们似乎都具有相同的效果,但我可能遗漏了一些东西。此外,如果它们确实具有相同的效果,那么ev
要将命令的输出存储为 sh/ksh/bash 中的变量,您可以执行任一操作 var=$(command) 或 var=`command` 这两种方法有什么区别? 最佳答案 反引号/标记已被弃用,取而代
我想让我的用户根据他的选择以 sudo 和普通用户身份运行。他可以使用 sudo 或普通用户,但如果不使用 sudo,我必须禁用某些功能来消除错误。那么我怎么知道该用户是否给了我 sudo 执行权限?
这个问题已经有答案了: Command substitution: backticks or dollar sign / paren enclosed? [duplicate] (3 个回答) 已关闭
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: Command substitution: backticks or dollar sign / paren enc
要将命令的输出存储为 sh/ksh/bash 中的变量,您可以执行任一操作 var=$(command) 或 var=`command` 这两种方法有什么区别? 最佳答案 反引号/标记已被弃用,取而代
Linux 101 Hacks 这本书的第 38 页建议: cat url-list.txt | xargs wget –c 我通常这样做: for i in `cat url-list.txt`
问题是当我为我的项目编写 Makefile 时,当我需要检测当前分支名称时,在 make 规则中我这样做了: check_branch: if [ "$(git rev-parse --abb
默认情况下,控制台命令文件夹位于:MyProject\MyBundle\Command并且一切都按预期工作,但是如果我将文件夹移动到另一个目录中,例如:MyProject\MyBundle\MyFol
我是一名优秀的程序员,十分优秀!