7

Вопрос по java – Ошибка исключения почты Java;

MyCode:

import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendMailTLS {
public static void main(String[] args) {
    final String username = "myemailid@gmail.com";
    final String password = "myemailpassword";
    Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");
    Session session = Session.getInstance(props,
      new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
      });

    try {
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("myemailid@gmail.com"));
        message.setRecipients(Message.RecipientType.TO,
            InternetAddress.parse("myfriedemail@ymail.com"));
        message.setSubject("Testing Subject");
        message.setText("Dear Mail Crawler,"+
 "\n\n No spam to my email,please!"); 
        Transport.send(message);
        System.out.println("Done");
    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }
}
}

Моя ошибка:

Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException:
Unknown SMTP host: smtp.gmail.com;
nested exception is:
java.net.UnknownHostException: smtp.gmail.com
at Mail.SendMailTLS.main(SendMailTLS.java:56)
Caused by: javax.mail.MessagingException: Unknown SMTP host: smtp.gmail.com;
nested exception is:
java.net.UnknownHostException: smtp.gmail.com
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1970)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
at javax.mail.Service.connect(Service.java:317)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at Mail.SendMailTLS.main(SendMailTLS.java:51)
Caused by: java.net.UnknownHostException: smtp.gmail.com
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:525)
at java.net.Socket.connect(Socket.java:475)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:319)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:233)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1938)
... 7 more
Java Result: 1

I am having the Local proxy as 172.17.0.4:8080 с именем пользователя как:user1, пароль как:user2
 Решения пожалуйста ??

Что за..? Мне было интересно, почему вы добавили к этому теги Swing и SWT. Затем, при проверке импорта в верхней части источника, я удивился, почему вы добавили либо. Хотите уточнить?

Apr 10, 2012, 9:13 AMот

У меня была похожая проблема с pop.gmail.com - сработал код, затем через некоторое время возникло исключение для нескольких попыток, затем снова сработало. Так что вина может быть не на вашей стороне :)

Jul 28, 2016, 11:34 AMот

попробуйте проверить связь с сервером и проверьте, можете ли вы получить доступ к Gmail из прокси-сервера.

Apr 10, 2012, 9:35 AMот

Вы когда-нибудь понимали это?

Dec 24, 2014, 4:05 PMот

5ответов

1

Просто для целей разработки, вы можете попробовать открыть туннель через ваш прокси на smtp.gmail.com

proxytunnel -q -p proxy_host:proxy_port -d smtp.gmail.com:465 -a local_port

и использовать в своем коде

props.put("mail.smtp.host", "localhost");
props.put("mail.smtp.port", "local_port");
9

Если вы используете прокси-сервер, я думаю, что вы не можете использовать Java Mail.

От :oracle.com

Q: How do I configure JavaMail to work through my proxy server?

A: JavaMail does not currently support accessing mail servers through a web proxy server. One of the major reasons for using a proxy server is to allow HTTP requests from within a corporate network to pass through a corporate firewall. The firewall will typically block most access to the Internet, but will allow requests from the proxy server to pass through. In addition, a mail server inside the corporate network will perform a similar function for email, accepting messages via SMTP and forwarding them to their ultimate destination on the Internet, and accepting incoming messages and sending them to the appropriate internal mail server.

1

не могли бы вы попробоватьprops.put("mail.smtp.host", "gmail.com"); без smtp.gmail.com

10

Попробуйте этот сервер:

smtp.googlemail.com

2

Это происходит из-за безопасности Gmail ... просто разрешите доступ к своей учетной записи Gmail через приложения, которые находятся под вашей учетной записью: https://www.google.com/settings/security/lesssecureapps and it will work .. smtp.gmail.com is correct.No need to change it.

Также не забудьте проверить интернет-соединение.

RelatedQuestions