0

私はJavaで電子メールアプリケーションを構築しています.これを使ってみましたが、このコードを実行してもエラーは発生しません.ですが、メールボックスを確認すると、そのようなメールは届いていません。なぜこれが起こっているのか、誰かが私に説明できますか?

また、最後に「正常に送信されました」というメッセージを出力しましたが、どういうわけかメッセージが出力されず、エラーが何であるかわかりません。助けていただければ幸いです。

    public class Email 
    public static void main(String[] args) {
    // TODO code application logic here


    String[] to = {"pqr@gmail.com"};
    String from = "abc@gmail.com";
    String host = "smtp.gmail.com";
            String user_name = "abc@gmail.com";
            String password = "xyz";

    try{
    Properties properties = System.getProperties();
    properties.setProperty("smtp.gmail.com", "imaps");
            properties.put("smtp.starttls.enable", "true");
            properties.put("mail.smtp.host",host);
            properties.put("mail.smtp.user",user_name);
            properties.put("mail.smtp.password", password);
            properties.put("mail.smtp.port", "465");
            properties.put("mail.smtp.auth", "true");


            //properties.put
    Session session = Session.getDefaultInstance(properties,null);
            //Store store = session.getStore("imaps");



        MimeMessage message = new MimeMessage(session);
        // basically stores one or more addresses , whom the mail has to be       sent
        //InternetAddress[] send_to = { new InternetAddress(to) };
        //InternetAddress[] send_from = { new InternetAddress(from) };
                    InternetAddress[] toAddress = new InternetAddress[to.length];

                    for(int i = 0; i < to.length ;i++)
                    {
                        toAddress[i] = new InternetAddress(to[i]);
                    }

                    for(int i = 0 ; i < toAddress.length ; i++){
        message.addRecipient(Message.RecipientType.TO, toAddress[i]);
                    }

        message.setFrom(new InternetAddress(from));
        message.setSubject("Testing email");
        message.setText("this is a test");
                    Transport transport = session.getTransport("smtp");
                    transport.connect(host, user_name, password);
        transport.send(message);
                    transport.close();


                    System.out.println("Message successfully sent");


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

}

4

3 に答える 3

1

このコードを試してください

public class SendMail {

    String host, port, emailid,username, password;
    Properties props = System.getProperties();
    Session l_session = null;

    public SendMail() {
        host = "smtp.mail.yahoo.com";
        port = "587";
        emailid = "a@yahoo.com";
        username = "a";
        password = "pwd";

        emailSettings();
        createSession();
        sendMessage("a@yahoo.com", "rahul@gmail.com","Test","test Mail");
    }

    public void emailSettings() {
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.auth", "true");
        props.put("mail.debug", "false");
        props.put("mail.smtp.port", port);
//        props.put("mail.smtp.socketFactory.port", port);
//        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
//        props.put("mail.smtp.socketFactory.fallback", "false");

    }

    public void createSession() {

        l_session = Session.getInstance(props,
                new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(username, password);
                    }
                });

        l_session.setDebug(true); // Enable the debug mode

    }

    public boolean sendMessage(String emailFromUser, String toEmail, String subject, String msg) {
        //System.out.println("Inside sendMessage 2 :: >> ");
        try {
            //System.out.println("Sending Message *********************************** ");
            MimeMessage message = new MimeMessage(l_session);
            emailid = emailFromUser;
            //System.out.println("mail id in property ============= >>>>>>>>>>>>>> " + emailid);
            //message.setFrom(new InternetAddress(emailid));
            message.setFrom(new InternetAddress(this.emailid));

            message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
            message.addRecipient(Message.RecipientType.BCC, new InternetAddress(AppConstants.fromEmail));
            message.setSubject(subject);
            message.setContent(msg, "text/html");

            //message.setText(msg);
            Transport.send(message);
            System.out.println("Message Sent");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }//end catch block
        return true;
    }

}
于 2012-09-20T08:44:12.223 に答える
1

プロキシ/ファイアウォールの背後で実行している場合は、プロキシを設定する必要がある場合があります

System.setProperty("http.proxyHost", "myProxyServer.com");
System.setProperty("http.proxyPort", "80");
于 2012-09-20T08:51:30.913 に答える
0

ありがとう、私は見逃していたようです

props.put("mail.smtp.socketFactory.port", "587");

一部、これを追加し、正常に機能しています。

于 2012-09-20T15:11:59.533 に答える