java.net.UnknownHostException: smtps.aruba.it
java.net.UnknownHostException: smtps.aruba.it
我正在使用 javax.mail 和 mail aruba 帐户。
在 windows 和 centos7 机器上一切正常。
但是在另一台特定的centos7机器上(在aruba服务器下)tomcat7的控制台说:
我看到了 google 和 Whosebug 向我推荐的所有帖子,但没有任何效果。
我认为是机器环境问题
邮件class
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
disspacer 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>
错误信息很清楚。如果无法将服务器名称解析为 IP 地址,则会抛出 UnknownHostException
。这很可能不是 Java- 或 Java 邮件问题,而是与基础操作系统配置有关的问题。
为确保您可以打开 shell 会话并键入以下内容之一
host smtps.aruba.it
dig smtps.aruba.it
nslookup smtps.aruba.it
(取决于安装的内容,一个或多个命令可能不存在)
如果答案是主机未知,您可以停止对 java 应用程序进行故障排除 ;-)
我正在使用 javax.mail 和 mail aruba 帐户。
在 windows 和 centos7 机器上一切正常。 但是在另一台特定的centos7机器上(在aruba服务器下)tomcat7的控制台说:
我看到了 google 和 Whosebug 向我推荐的所有帖子,但没有任何效果。
我认为是机器环境问题
邮件class
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
disspacer 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>
错误信息很清楚。如果无法将服务器名称解析为 IP 地址,则会抛出 UnknownHostException
。这很可能不是 Java- 或 Java 邮件问题,而是与基础操作系统配置有关的问题。
为确保您可以打开 shell 会话并键入以下内容之一
host smtps.aruba.it
dig smtps.aruba.it
nslookup smtps.aruba.it
(取决于安装的内容,一个或多个命令可能不存在)
如果答案是主机未知,您可以停止对 java 应用程序进行故障排除 ;-)