Отправка письма: проблема при подключении к хосту - PullRequest
0 голосов
/ 12 февраля 2011

Я пытаюсь отправить электронное письмо с использованием Java. Из прочитанного я обнаружил, что если я использую gmail в качестве хоста, я могу сделать это бесплатно, и это должно работать, это правильно.

Итак, у меня есть мой код ниже, и я пытаюсь отправить электронное письмо от себя на электронные письма моих друзей (электронные письма в моем коде ниже были изменены для конфиденциальности), но я получаю исключение при отправке / передаче адрес электронной почты (в строке Transport.send (msg);)

Вывод / исключение:

javax.mail.MessagingException: не удалось подключиться к узлу SMTP: smtp.gmail.com, порт: 25; Вложенное исключение: java.net.ConnectException: истекло время ожидания соединения: соединение Должно было получиться: false

Что вы думаете, я делаю не так?

/**
* SimpleAuthenticator is used to do simple authentication
* when the SMTP server requires it.
*/
class SMTPAuthenticator extends javax.mail.Authenticator
{

    public PasswordAuthentication getPasswordAuthentication()
    {
        String username = "myaccount@gmail.com";
        String password = "xxxxxxx";
        return new PasswordAuthentication(username, password);
    }
}

public class SendEmail 
{

    public SendEmail() 
    {

    }

    public static boolean sendEmail( String from, String to[], String subject, String body ) 
    {
        try 
        {
            boolean debug = false;

            // Set the host smtp address
            Properties props = new Properties();
            props.put("mail.smtp.host", "smtp.gmail.com" );  // "smtp.jcom.net");
            props.put("mail.smtp.auth", "true");

            // create some properties and get the default Session
            // Session session = Session.getDefaultInstance(props, null);
            Authenticator auth = new SMTPAuthenticator();
            Session session = Session.getDefaultInstance(props, auth);
            session.setDebug(debug);

            // create a message
            Message msg = new MimeMessage(session);

            // set the from and to address
            InternetAddress addressFrom = new InternetAddress(from);
            msg.setFrom(addressFrom);

            InternetAddress[] addressTo = new InternetAddress[to.length];
            for (int i = 0; i < to.length; i++) 
            {
                addressTo[i] = new InternetAddress(to[i]);
            }
            msg.setRecipients(Message.RecipientType.TO, addressTo);

            // Optional : You can also set your custom headers in the Email if
            // you Want
            msg.addHeader("MyHeaderName", "myHeaderValue");

            // Setting the Subject and Content Type
            msg.setSubject(subject);
            msg.setContent(body, "text/plain");

            System.out.println( "1" );
            Transport.send(msg);
            System.out.println( "2" );
        } 
        catch (Exception e) 
        {
            System.out.println( e );
            return false;
        }

        return true;
    }

    public static void main(String args[]) 
    {
        boolean res = SendEmail.sendEmail( "myaccount@gmail.com", new String[] {"x@y.com", "y@x.com.au"}, 
                                           "Test", "Did it work?" );
        System.out.println( "Should have succeeded: " + res );
    }

}

Ответы [ 2 ]

1 голос
/ 12 февраля 2011

Google твой друг. Проверить этот сайт: http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/

Gmail принимает только безопасные соединения с использованием TLS, но вы используете стандартную незащищенную аутентификацию.

0 голосов
/ 12 февраля 2011

Попробуйте с портом 465 (найдено здесь )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...