Я не получаю письмо с этим кодом.В чем проблема? - PullRequest
1 голос
/ 07 июля 2011

Ниже приведена программа, которую я пытаюсь отправить по электронной почте.Код не содержит ошибок, и я не получаю никаких исключений во время выполнения.Но код не может отправить по электронной почте.Я много пересмотрел этот код, но не могу понять, что же на самом деле не так.Отправитель и получатель имеют учетные записи GMail.У отправителя отключен двухэтапный процесс проверки.(Я не думаю, что это имеет значение для получателя. Имеет ли это?)

Код:

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;

class tester {
   public static void main(String args[]) {
      Properties props = new Properties();
      props.put("mail.smtp.host" , "smtp.gmail.com");
      props.put("mail.stmp.user" , "username"); // username or complete address ! Have tried both
      Session session  = Session.getDefaultInstance( props , null);
      String to = "me@gmail.com";
      String from = "from@gmail.com";
      String subject = "Testing...";
      Message msg = new MimeMessage(session);
         try {
           msg.setFrom(new InternetAddress(from));
           msg.setRecipient(Message.RecipientType.TO , new InternetAddress(to));
           msg.setSubject(subject);
           msg.setText("Working fine..!");
           System.out.println("fine!!??");
         }  catch(Exception exc) {
                System.out.println(exc);
            }
    }
}

Ответы [ 2 ]

4 голосов
/ 07 июля 2011

Ваш код на самом деле не пытается отправить сообщение.Взгляните на Transport.send.

Вот несколько примеров:

1 голос
/ 07 июля 2011

Прежде всего, вы забыли позвонить Transport.send(), чтобы отправить MimeMessage.

Во-вторых, GMail необходимо настроить для использования соединения TLS или SSL.К вашему Properties (props) необходимо добавить следующее:

//To use TLS
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");

//To use SSL
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");

Чтобы подключиться к GMail SMTP, используйте метод Transport.connect().Я вижу, вы вообще не используете Transport в своем коде, поэтому добавьте:

Transport transport = session.getTransport();

//Connect to GMail
transport.connect("smtp.gmail.com", 465, "USERNAME_HERE", "PASSWORD_HERE");
transport.send(msg);

В качестве альтернативы, вы можете создать Session, включив javax.mail.Authenticator в качестве параметра.

Пример:

Session session = Session.getDefaultInstance(props,
    new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("USERNAME_HERE", "PASSWORD_HERE");
        }
    });

Надеюсь, это поможет вам.

Ресурсы:

...