我在Windows上有相同的代碼,它運作良好。當我將代碼移動到centos時,它會給出例外: javax.mail.MessagingException:無法連接到SMTP主機:stmp.gmail.com,port:587; 嵌套的例外是: java.net.ConnectException:連接被拒絕java郵件給java.net.connectexception:連接拒絕
任何人都可以請給我有關此異常的一些建議嗎?
非常感謝。
我在Windows上有相同的代碼,它運作良好。當我將代碼移動到centos時,它會給出例外: javax.mail.MessagingException:無法連接到SMTP主機:stmp.gmail.com,port:587; 嵌套的例外是: java.net.ConnectException:連接被拒絕java郵件給java.net.connectexception:連接拒絕
任何人都可以請給我有關此異常的一些建議嗎?
非常感謝。
您犯了拼寫錯誤!它應該是「smtp .gmail.com」而不是「stmp .gmail.com」。
對不起,我只是輸入錯誤。我用stmp.gmail.com來連接。 –
如果您剛剛學習如何通過Java發送郵件,請嘗試以下操作,否則需要將其設置爲您的電子郵件提供商SMTP服務器,然後該SMTP服務器將郵件發送到適當的位置而不是這個代碼的情況。
注意:代碼是用Java Servlet編寫的。
public class MailClient extends HttpServlet
{
private class SMTPAuthenticator extends Authenticator
{
private PasswordAuthentication authentication;
public SMTPAuthenticator(String login, String password)
{
authentication = new PasswordAuthentication(login, password);
}
@Override
protected PasswordAuthentication getPasswordAuthentication()
{
return authentication;
}
}
protected void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try
{
String from = "xyz.com";
String to = "abc.com";
String subject = "Your Subject.";
String message = "Message Text.";
String login = "xyz.com";
String password = "password";
Properties props = new Properties();
props.setProperty("mail.host", "smtp.gmail.com");
props.setProperty("mail.smtp.port", "587");
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.smtp.starttls.enable", "true");
Authenticator auth = new SMTPAuthenticator(login, password);
Session session = Session.getInstance(props, auth);
MimeMessage msg = new MimeMessage(session);
try
{
msg.setText(message);
msg.setSubject(subject);
msg.setFrom(new InternetAddress(from));
msg.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
Transport.send(msg);
}
catch (MessagingException ex)
{
Logger.getLogger(MailClient.class.getName()).
log(Level.SEVERE, null, ex);
}
}
finally
{
out.close();
}
}
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
processRequest(request, response);
}
@Override
public String getServletInfo()
{
return "Short description";
}
}
如何解決ConnectionException? – EJP
'連接被拒絕' 意味着兩件事情之一。您指定的主機:端口不正確,或者中間的防火牆未打球。
看起來類似於這個http://stackoverflow.com/questions/3649014/send-email-using-java – Jasonw
你是否成功執行了「telnet stmp.gmail.com 587」? –