代码之家  ›  专栏  ›  技术社区  ›  frisk

Java语言网未知后异常:smtps。阿鲁巴。它

  •  1
  • frisk  · 技术社区  · 7 年前

    我正在使用javax。使用mail aruba帐户发送邮件。

    在windows和centos7机器上,一切正常。 但在另一台特定的centos7机器上(在 aruba 服务器)tomcat7的控制台显示:

    enter image description here

    我看到了google和stackoverflow向我推荐的每一篇帖子,但都没有奏效。

    我认为这是一个机器环境问题。

    邮件类

    import java.io.IOException;
    import java.util.Properties;
    
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Transport;
    import javax.mail.internet.AddressException;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.core.io.ClassPathResource;
    import org.springframework.core.io.Resource;
    import org.springframework.core.io.support.PropertiesLoaderUtils;
    import org.springframework.mail.MailSender;
    import org.springframework.stereotype.Service;
         @Service("mailSender")
        public class ApplicationMailer {
    
            private static javax.mail.Session session=null; 
            private static Resource resource = new ClassPathResou
    
    rce("resources/mail.properties");
    
        static {
            try {
                final Properties props = PropertiesLoaderUtils.loadProperties(resource);
                if (props!=null)
                {
                    session = javax.mail.Session
                        .getInstance(props, new javax.mail.Authenticator() {
                            protected PasswordAuthentication getPasswordAuthentication() {
                                return new PasswordAuthentication(props.getProperty("email.username"),
                                        props.getProperty("email.password"));
                            }
    
                        });
                }
            } catch (IOException e) {
                session=null;
                e.printStackTrace();
            }
        }
    
    
        @Autowired
        private MailSender mailSender;
    
    
        public MailSender getMailSender() {
            return mailSender;
        }
    
        public void setMailSender(MailSender mailSender) {
            this.mailSender = mailSender;
        }
    
        /**
         * This method will send compose and send the message 
         * @throws IOException 
         * @throws MessagingException 
         * @throws AddressException 
         * */
        public void sendMail(String to, String subject, String body) throws IOException, AddressException, MessagingException{
                Message mail = new MimeMessage(session);
                final Properties props = PropertiesLoaderUtils.loadProperties(resource);
                mail.setFrom(new InternetAddress(props.getProperty("mail.from")));
                mail.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
                mail.setSubject(subject);
                mail.setContent(body, "text/html");
                Transport.send(mail); 
    
        }
    }
    

    邮政属性

    mail.debug=true
    mail.from=*****
    email.username=******
    email.password=******
    
    mail.smtp.host=smtps.aruba.it
    mail.smtp.port=465
    mail.smtp.localhost=localhost
    mail.mime.charset=UTF-8
    mail.smtp.auth=true
    
    mail.smtp.ssl.enable=true
    mail.transport.protocol=smtps
    

    dispacer servlet

      <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
            <property name="host" value="smtps.aruba.it" />
            <property name="port" value="465" />
            <property name="protocol" value="smtps" />
            <property name="username" value="*****" />
            <property name="password" value="*****" />
            <property name="javaMailProperties">
                <props>
                    <prop key="mail.transport.protocol">smtps</prop>
                    <prop key="mail.smtp.auth">true</prop>
                    <prop key="mail.smtp.starttls.enable">true</prop>
                    <prop key="mail.debug">true</prop>
                    <prop key="mail.smtp.localhost">localhost</prop>
                    <prop key="mail.mime.charset">UTF-8</prop>
    <!--                <prop key="mail.smtps.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop> -->
                    <prop key="mail.smtps.ssl.enable">false</prop>
                </props>
            </property>
        </bean>
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   Lothar    7 年前

    错误信息非常清楚。一 UnknownHostException 如果无法将服务器名称解析为IP地址,则引发。这很可能不是Java或JavaMail问题,而是与底层操作系统的配置有关的问题。

    为了确保可以打开shell会话并键入以下内容之一

    主机smtps。阿鲁巴。它

    挖掘smtps。阿鲁巴。它

    nslookup smtps。阿鲁巴。它

    (根据安装的内容,可能不存在一个或多个命令)

    如果答案是主机未知,则可以停止对java应用程序进行故障排除;-)

    推荐文章