java.net.UnknownHostException: smtps.aruba.it

Я использую javax.mail с учетной записью mail aruba.

На windows и машине centos7 все работает. Но на другой конкретной машине centos7 (под сервером aruba) консоль tomcat7 говорит:

введите описание изображения здесь

Я видел все сообщения, которые мне подсказывают google и stackru, но ничего не получалось.

Я думаю, что это проблема окружающей среды машины.

Почтовый класс

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.properties

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

сервлет диспетчера

  <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 ответ

Решение

Сообщение об ошибке совершенно ясно. UnknownHostException выбрасывается, если имя сервера не может быть преобразовано в IP-адрес. Скорее всего, это не проблема Java или JavaMail, а проблема, касающаяся конфигурации базовой операционной системы.

Чтобы убедиться, что вы можете открыть сеанс оболочки и введите один из следующих

хост smtps.aruba.it

копать smtps.aruba.it

nslookup smtps.aruba.it

(в зависимости от того, что установлено, одна или несколько команд могут не существовать)

Если ответ таков, что хост неизвестен, вы можете прекратить устранение неполадок в вашем Java-приложении;-)

Другие вопросы по тегам