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-приложении;-)