Não foi possível ligar à máquina de SMTP: smtp.gmail.com, Porto: 587; a excepção aninhada é: java. net. ConnectException: a ligação expirou: connect

Aqui está o código da aplicação. Tenho tentado fazer isto usando a IDE do eclipse. Eu também adicionei todos os arquivos java mail jar necessários, nomeadamente dsn.jar,imap.jar,mailapi.jar,pop3.jar,smtp.jar,mail.jar. Mas dá o seguinte erro Could not connect to SMTP host: smtp.gmail.com, port: 587.

Não há firewall a bloquear o acesso, porque uma resposta é recebida. smtp.gmail.com. Até já tentei desta maneira.
  • primeiro sinal na conta do Gmail num navegador no dispositivo onde está a configurar / a usar o seu cliente
  • vá aqui e active o acesso para aplicações "menos seguras": https://www.google.com/settings/security/lesssecureapps
  • Então vai para aqui. https://accounts.google.com/b/0/DisplayUnlockCaptcha e carregue em Continuar. Depois volta imediatamente para o teu cliente e tenta outra vez.
Javax.correio.Messagingexcepção: não foi possível ligar à máquina de SMTP: smtp.gmail.com, Porto: 587; a excepção aninhada é: java. net. ConnectException: a ligação expirou o tempo-limite: ligar em suplemento.sol.correio.smtp.Transporte SMTP.openServer (SMTPTransport.java: 1972) no com.sol.correio.smtp.Transporte SMTP.protocolo de ligação (transporte SMTP.java: 642) no javax.correio.Servico.connect (serviço.java: 317) no javax.correio.Servico.connect (serviço.java: 176) no javax.correio.Servico.connect (serviço.java: 125) no javax.correio.Transporte.send0 (Transportes.java:194) no javax.correio.Transporte.enviar (Transporte.java: 124) em PlainTextEmailSender.sendPlainTextEmail (Plantextemailsender.java: 50) em PlainTextEmailSender.main (PlainTextEmailSender.java: 73) Causado por: java. net. ConnectException: a ligação expirou: connect at java. net. DualStackPlainSocketImpl. connect0 (método nativo) at java. net. DualStackPlainSocketImpl. socketConnect (Fonte desconhecida) at java. net. AbstractPlainSocketImpl. doConnect (Fonte desconhecida) at java. net. AbstractPlainSocketImpl. connectToAddress(desconhecido Fonte) em java. net. AbstractPlainSocketImpl. connect(Fonte desconhecida) em java. net. PlainSocketImpl. connect(Fonte desconhecida) em java. net.SocksSocketImpl. connect(Fonte desconhecida) em java. net. Socket. connect(Fonte desconhecida) em java. net. Socket. connect(Fonte desconhecida) no com.sol.correio.util.SocketFetcher.createSocket (SocketFetcher.java: 319) no com.sol.correio.util.SocketFetcher.getSocket(SocketFetcher.java: 233) em suplemento.sol.correio.smtp.Transporte SMTP.openServer (SMTPTransport.java: 1938)

    package net.codejava.mail;

    import java.util.Date;
    import java.util.Properties;

    import javax.mail.Authenticator;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.AddressException;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;

    public class PlainTextEmailSender {

        public void sendPlainTextEmail(String host, String port,
                final String userName, final String password, String toAddress,
                String subject, String message) throws AddressException,
                MessagingException {

            // sets SMTP server properties
            Properties properties = new Properties();
            properties.put("mail.smtp.host", host);
            properties.put("mail.smtp.port", port);
            properties.put("mail.smtp.auth", "true");
            properties.put("mail.smtp.starttls.enable", "true");

            // creates a new session with an authenticator
            Authenticator auth = new Authenticator() {
                public PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(userName, password);
                }
            };

            Session session = Session.getInstance(properties, auth);

            // creates a new e-mail message
            Message msg = new MimeMessage(session);

            msg.setFrom(new InternetAddress(userName));
            InternetAddress[] toAddresses = { new InternetAddress(toAddress) };
            msg.setRecipients(Message.RecipientType.TO, toAddresses);
            msg.setSubject(subject);
            msg.setSentDate(new Date());
            // set plain text message
            msg.setText(message);

            // sends the e-mail
            Transport.send(msg);

        }

        /**
         * Test the send e-mail method
         *
         */
        public static void main(String[] args) {
            // SMTP server information
            String host = "smtp.gmail.com";
            String port = "587";
            String mailFrom = "user_name";
            String password = "password";

            // outgoing message information
            String mailTo = "email_address";
            String subject = "Hello my friend";
            String message = "Hi guy, Hope you are doing well. Duke.";

            PlainTextEmailSender mailer = new PlainTextEmailSender();

            try {
                mailer.sendPlainTextEmail(host, port, mailFrom, password, mailTo,
                        subject, message);
                System.out.println("Email sent.");
            } catch (Exception ex) {
                System.out.println("Failed to sent email.");
                ex.printStackTrace();
            }
        }
    }
Author: Yazan, 2016-07-27

2 answers

Como eu disse, Não há nada de errado com o seu código. Se alguma coisa, apenas para fazer alguns testes, tente largar a parte de autenticação para ver se isso funciona:
    public void sendPlainTextEmail(String host, String port,
            final String userName, final String password, String toAddress,
            String subject, String message) throws AddressException,
            MessagingException {

        // sets SMTP server properties
        Properties properties = new Properties();
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", port);
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.starttls.enable", "true");
// *** BEGIN CHANGE
        properties.put("mail.smtp.user", userName);

        // creates a new session, no Authenticator (will connect() later)
        Session session = Session.getDefaultInstance(properties);
// *** END CHANGE

        // creates a new e-mail message
        Message msg = new MimeMessage(session);

        msg.setFrom(new InternetAddress(userName));
        InternetAddress[] toAddresses = { new InternetAddress(toAddress) };
        msg.setRecipients(Message.RecipientType.TO, toAddresses);
        msg.setSubject(subject);
        msg.setSentDate(new Date());
        // set plain text message
        msg.setText(message);

// *** BEGIN CHANGE
        // sends the e-mail
        Transport t = session.getTransport("smtp");
        t.connect(userName, password);
        t.sendMessage(msg, msg.getAllRecipients());
        t.close();
// *** END CHANGE

    }
Esse é o código que estou usando todos os dias para enviar dezenas de E-mails da minha aplicação, e é 100% garantido para funcionar -- desde que smtp.gmail.com:587 seja acessível, é claro.
 0
Author: Luis G., 2016-07-28 07:03:50

E-Mail conseguiu através Gmail com JDK 7 com o abaixo Gmail configurações.

Ir para Gmail Definições > Contas e Importação > Outras configurações da Conta do Google > e em Sinal-em & segurança

  1. 2-Verificação Do Patamar: Desligado
  2. permitir aplicações menos seguras: em
  3. Aplicação Senhas: 1 Senha (16 caracteres longos), mais tarde substituiu a senha actual com isto.

Utilizado nas seguintes dependências maven:

spring-core:4.2.2
spring-beans:4.2.2
spring-context:4.2.2
spring-context-support:4.2.2
spring-expression:4.2.2
commons-logging:1.2

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

E o meu código-fonte é:

import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.swing.JOptionPane;
import java.util.List;
import java.util.Properties;

public class Email {

    public final void prepareAndSendEmail(String htmlMessage, String toMailId) {

        final OneMethod oneMethod = new OneMethod();
        final List<char[]> resourceList = oneMethod.getValidatorResource();

        //Spring Framework JavaMailSenderImplementation    
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost("smtp.gmail.com");
        mailSender.setPort(465);

        //setting username and password
        mailSender.setUsername(String.valueOf(resourceList.get(0)));
        mailSender.setPassword(String.valueOf(resourceList.get(1)));

        //setting Spring JavaMailSenderImpl Properties
        Properties mailProp = mailSender.getJavaMailProperties();
        mailProp.put("mail.transport.protocol", "smtp");
        mailProp.put("mail.smtp.auth", "true");
        mailProp.put("mail.smtp.starttls.enable", "true");
        mailProp.put("mail.smtp.starttls.required", "true");
        mailProp.put("mail.debug", "true");
        mailProp.put("mail.smtp.ssl.enable", "true");
        mailProp.put("mail.smtp.user", String.valueOf(resourceList.get(0)));

        //preparing Multimedia Message and sending
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.setTo(toMailId);
            helper.setSubject("I achieved the Email with Java 7 and Spring");
            helper.setText(htmlMessage, true);//setting the html page and passing argument true for 'text/html'

            //Checking the internet connection and therefore sending the email
            if(OneMethod.isNetConnAvailable())
                mailSender.send(mimeMessage);
            else
                JOptionPane.showMessageDialog(null, "No Internet Connection Found...");
        } catch (MessagingException e) {
            e.printStackTrace();
        }

    }

}
Espero que isto ajude alguém.
 0
Author: ArifMustafa, 2018-02-23 15:23:09