发送邮件时出现异常,java

发送邮件时出现异常,java,java,jakarta-mail,Java,Jakarta Mail,你好。 我正在尝试重写我们的代码,以使用ssl身份验证发送邮件。因为我们的系统管理员添加了后缀代理身份验证。在linux机器上的主机中,有smtp服务器和ip的服务器名。我检查了与telnet的连接 这里是我创建属性和会话的代码 private Properties createProperties() { Properties properties = new Properties(); properties.setProperty("mail.smtp.host", OurS

你好。 我正在尝试重写我们的代码,以使用ssl身份验证发送邮件。因为我们的系统管理员添加了后缀代理身份验证。在linux机器上的主机中,有smtp服务器和ip的服务器名。我检查了与telnet的连接

这里是我创建属性和会话的代码

private Properties createProperties() {
    Properties properties = new Properties();
    properties.setProperty("mail.smtp.host", OurSTMPHostServer);
    properties.setProperty("mail.smtp.port", "587"); //SSL Port
    properties.setProperty("mail.smtp.socketFactory.port", "465"); //SSL Port
    properties.setProperty("mail.smtp.socketFactory.class",  "javax.net.ssl.SSLSocketFactory");
    properties.setProperty("mail.smtp.auth", "true");
    properties.setProperty("mail.smtp.user", MAIL_USER);
    properties.setProperty("mail.smtp.password", MAIL_PASSWORD);
    return properties;
}

private Session createSession(Properties properties) {
    Session session =  Session.getInstance(properties,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication
                getPasswordAuthentication() { return new PasswordAuthentication(MAIL_USER, MAIL_PASSWORD); }
            });
    session.setDebug(true);
    return session;
}
<pre>org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Exception reading response;
  nested exception is:
    java.net.SocketTimeoutException: Read timed out. Failed messages: javax.mail.MessagingException: Exception reading response;
  nested exception is:
    java.net.SocketTimeoutException: Read timed out; message exception details (1) are:
Failed message 1:
javax.mail.MessagingException: Exception reading response;
  nested exception is:
    java.net.SocketTimeoutException: Read timed out
    at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1611)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1369)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)
    at javax.mail.Service.connect(Service.java:288)
    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:389)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:340)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:336)
    at com.zina.service.mail.MailSenderFacade.send(MailSenderFacade.java:122)
    at com.zina.service.mail.MailService.sendTextMessage(MailService.java:131)
    at com.zina.service.mail.MailService.sendTextMessage(MailService.java:193)
    at com.zina.service.person.PersonService.sendRegistrationApproveMail(PersonService.java:255)
    at com.zina.service.person.PersonService.registerUser_aroundBody4(PersonService.java:167)
    at com.zina.service.person.PersonService$AjcClosure5.run(PersonService.java:1)
</pre>
下面是创建消息的代码

public MimeMessage createMimeMessage(String mailFromAddress, String mailFromName,
                                     String subject, String mailTo, String message, String messageText, List<File> fileList) throws MessagingException, UnsupportedEncodingException {
    MimeMessage msg = new MimeMessage(createSession(createProperties()));
    msg.setFrom(new InternetAddress(mailFromAddress, mailFromName));
    msg.setSubject(subject);
    msg.setRecipients(Message.RecipientType.TO, mailTo);
    MimeBodyPart wrap = new MimeBodyPart();
    MimeMultipart cover = new MimeMultipart("alternative");
    MimeBodyPart text = new MimeBodyPart();
    text.setHeader("Content-Transfer-Encoding", "base64");
    text.setContent(messageText, "text/plain;charset=UTF-8");
    cover.addBodyPart(text);
    MimeBodyPart html = new MimeBodyPart();
    html.setHeader("Content-Transfer-Encoding", "base64");
    html.setContent(message, "text/html;charset=UTF-8");
    cover.addBodyPart(html);
    wrap.setContent(cover);
    MimeMultipart content = new MimeMultipart("related");
    msg.setContent(content);
    content.addBodyPart(wrap);
    msg.saveChanges();
    return msg;
}
public void sendTextMessage(String mailFromAddress, @Nullable String mailFromName, String subject, String mailTo, String message) {
    MimeMessage msg = null;
    try {
        String messageText = convertService.htmlToText(message);
        msg = createMimeMessage(mailFromAddress, mailFromName, subject, mailTo, message, messageText, Collections.<File>emptyList());
            mailSenderFacade.send(msg);
    }
}
public MimeMessage createmimessage(字符串mailFromAddress,字符串mailFromName,
字符串主题、字符串邮件收件人、字符串消息、字符串消息文本、列表文件列表)引发MessaginException、UnsupportedEncodingException{
MimeMessage msg=新的MimeMessage(createSession(createProperties());
msg.setFrom(新的InternetAddress(mailFromAddress,mailFromName));
msg.setSubject(主题);
msg.setRecipients(Message.RecipientType.TO,mailTo);
MimeBodyPart包裹=新的MimeBodyPart();
MimemMultipart封面=新的MimemMultipart(“备选”);
MimeBodyPart文本=新的MimeBodyPart();
setHeader(“内容传输编码”、“base64”);
setContent(messageText,“text/plain;charset=UTF-8”);
封面。添加正文部分(文本);
MimeBodyPart html=新的MimeBodyPart();
setHeader(“内容传输编码”、“base64”);
setContent(消息,“text/html;charset=UTF-8”);
cover.addBodyPart(html);
包装。设置内容(封面);
MimeMultipart内容=新的MimeMultipart(“相关”);
msg.setContent(content);
内容。添加车身部件(包裹);
msg.saveChanges();
返回味精;
}
这里是发送消息的代码

public MimeMessage createMimeMessage(String mailFromAddress, String mailFromName,
                                     String subject, String mailTo, String message, String messageText, List<File> fileList) throws MessagingException, UnsupportedEncodingException {
    MimeMessage msg = new MimeMessage(createSession(createProperties()));
    msg.setFrom(new InternetAddress(mailFromAddress, mailFromName));
    msg.setSubject(subject);
    msg.setRecipients(Message.RecipientType.TO, mailTo);
    MimeBodyPart wrap = new MimeBodyPart();
    MimeMultipart cover = new MimeMultipart("alternative");
    MimeBodyPart text = new MimeBodyPart();
    text.setHeader("Content-Transfer-Encoding", "base64");
    text.setContent(messageText, "text/plain;charset=UTF-8");
    cover.addBodyPart(text);
    MimeBodyPart html = new MimeBodyPart();
    html.setHeader("Content-Transfer-Encoding", "base64");
    html.setContent(message, "text/html;charset=UTF-8");
    cover.addBodyPart(html);
    wrap.setContent(cover);
    MimeMultipart content = new MimeMultipart("related");
    msg.setContent(content);
    content.addBodyPart(wrap);
    msg.saveChanges();
    return msg;
}
public void sendTextMessage(String mailFromAddress, @Nullable String mailFromName, String subject, String mailTo, String message) {
    MimeMessage msg = null;
    try {
        String messageText = convertService.htmlToText(message);
        msg = createMimeMessage(mailFromAddress, mailFromName, subject, mailTo, message, messageText, Collections.<File>emptyList());
            mailSenderFacade.send(msg);
    }
}
public void sendTextMessage(String mailFromAddress、@null String mailFromName、String subject、String mailTo、String message){
mimessage msg=null;
试一试{
字符串messageText=convertService.htmlotext(消息);
msg=createMimeMessage(mailFromAddress、mailFromName、subject、mailTo、message、messageText、Collections.emptyList());
mailSenderFacade.send(msg);
}
}
其中mailSenderFacade是JavaMailSender类,其中字段host=OurSMTPHostServer,port=465 UPD: 这里是错误

org.springframework.mail.MailSendException:邮件服务器连接失败;嵌套异常为javax.mail.MessaginException:异常读取响应;
嵌套异常是:
java.net.SocketTimeoutException:读取超时。失败消息:javax.mail.MessaginException:异常读取响应;
嵌套异常是:
java.net.SocketTimeoutException:读取超时;消息异常详细信息(1)包括:
失败消息1:
javax.mail.MessaginException:异常读取响应;
嵌套异常是:
java.net.SocketTimeoutException:读取超时
在com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1611)上
在com.sun.mail.smtp.SMTPTransport.openServer上(SMTPTransport.java:1369)
在com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)上
在javax.mail.Service.connect(Service.java:288)
位于org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:389)
位于org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:340)
位于org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:336)
位于com.zina.service.mail.MailSenderFacade.send(MailSenderFacade.java:122)
在com.zina.service.mail.MailService.sendTextMessage(MailService.java:131)上
在com.zina.service.mail.MailService.sendTextMessage(MailService.java:193)上
在com.zina.service.person.PersonService.sendRegistrationApproveMail(PersonService.java:255)上
在com.zina.service.person.PersonService.registerUser_aroundBody4上(PersonService.java:167)
在com.zina.service.person.PersonService$AjcClosure5.run(PersonService.java:1)

共享异常如何?异常的确切含义是什么?它在哪一行抛出?添加的异常是故意和故意使用两个不同的SMPT端口?我不知道这是否是一个问题,但我以前从未见过。相反,我知道的代码对
“mail.smtp.port”
“mail.smtp.socketFactory.port”
使用相同的端口。好吧,那么这样做肯定是错误的;-)