2017-01-14 3 views
-2

Мне интересно, почему нижеследующая базовая почтовая программа java не работает, потому что у меня не было никаких ошибок, так как программа выполнена просто отлично. Есть ли что-то, что я делаю неправильно? Любая помощь была бы оценена. Я также хотел бы добавить, что я также пробовал это, используя неправильную комбинацию имени пользователя и пароля, но все равно не получая ошибок, и программы работают полностью.Простая почтовая программа Java не работает?

public class emailfromgmail { 

public static void main(String[]args) 
{ 
    final String from = "username"; 
    final String pass = "password"; 
    String to = "[email protected]"; 
    String host="smtp.gmail.com"; 
    String subject = "java Mail"; 
    String body = "example of java mail api using gmail smtp"; 

//get the session object 

     Properties p = System.getProperties(); 
     p.put("mail.smtp.starttls.enable","true"); 
     p.put("mail.smtp.host",host); 
     p.put("mail.smtp.user",from); 
     p.put("mail.smtp.password",pass); 
     p.put("mail.smtp.port", "587"); 
     p.put("mail.smtp.auth","true"); 

     Session session = Session.getInstance(p, 
    new javax.mail.Authenticator() { 
       @Override 
    protected PasswordAuthentication getPasswordAuthentication() { 
     return new PasswordAuthentication(from, pass); 
    } 
    }); 

    try{ 
     MimeMessage msg = new MimeMessage(session); 
     msg.setFrom(new InternetAddress(from)); 
     msg.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); 
     msg.setSubject(subject); 
     msg.setText(body); 

     Transport.send(msg); 
     System.out.print("message sent successfully"); 

    } 
    catch(MessagingException e){ 
     e.printStackTrace(); 

    }  
} 
} 
+0

Пожалуйста, объясните, что вы подразумеваете под «не работает» –

+0

Милостивый на самом деле я имею в виду, что программа выполняется в порядке, я не получил любые ошибки, но он просто ничего не делает, я имею в виду, что он должен отправлять почту, но это не так. –

+0

Поскольку значение 'from' сообщения электронной почты не является адресом электронной почты, просто имя, ваше сообщение, вероятно, будет отброшено как спам. Попробуйте изменить 'from' на' sender @ gmail.com', где 'sender', конечно же, является вашим фактическим именем. – Andreas

ответ

0

У меня была такая же проблема - я запускал свою программу и вставлял диалоговое окно в разных местах, чтобы увидеть, где он прекратил делать что-либо. Я все еще не знаю, что случилось, но я попробовал совершенно другой подход, и это сработало. Вместо отправки через TLS я отправляю через SSL. Я использовал этот сайт:

https://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/

Их TLS не работали - это просто ничего не делать, когда я побежал. Их SSL работал как шарм!

Вот код:

package com.mkyong.common; 
 

 
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 SendMailSSL { 
 
\t public static void main(String[] args) { 
 
\t \t Properties props = new Properties(); 
 
\t \t props.put("mail.smtp.host", "smtp.gmail.com"); 
 
\t \t props.put("mail.smtp.socketFactory.port", "465"); 
 
\t \t props.put("mail.smtp.socketFactory.class", 
 
\t \t \t \t "javax.net.ssl.SSLSocketFactory"); 
 
\t \t props.put("mail.smtp.auth", "true"); 
 
\t \t props.put("mail.smtp.port", "465"); 
 

 
\t \t Session session = Session.getDefaultInstance(props, 
 
\t \t \t new javax.mail.Authenticator() { 
 
\t \t \t \t protected PasswordAuthentication getPasswordAuthentication() { 
 
\t \t \t \t \t return new PasswordAuthentication("username","password"); 
 
\t \t \t \t } 
 
\t \t \t }); 
 

 
\t \t try { 
 

 
\t \t \t Message message = new MimeMessage(session); 
 
\t \t \t message.setFrom(new InternetAddress("[email protected]")); 
 
\t \t \t message.setRecipients(Message.RecipientType.TO, 
 
\t \t \t \t \t InternetAddress.parse("[email protected]")); 
 
\t \t \t message.setSubject("Testing Subject"); 
 
\t \t \t message.setText("Dear Mail Crawler," + 
 
\t \t \t \t \t "\n\n No spam to my email, please!"); 
 

 
\t \t \t Transport.send(message); 
 

 
\t \t \t System.out.println("Done"); 
 

 
\t \t } catch (MessagingException e) { 
 
\t \t \t throw new RuntimeException(e); 
 
\t \t } 
 
\t } 
 
}

Смежные вопросы