2017-01-14 2 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 } 
 
}

関連する問題