2017-04-20 244 views
3

アプリケーションをGmailからSMTPサーバーとして送信する必要があります。 これは私のメールコネクタクラスであると私はMailConnectException:ホスト、ポートに接続できませんでした:smtp.gmail.com、465;タイムアウト-1

public class EmailConnector { 


    public static Session sessionCreate() { 
     final String fromEmail = ConfigurationManager.getInstance().getProperty(EmailConfig.SENDER_EMAIL.toString()); 

     final String password = ConfigurationManager.getInstance().getProperty(EmailConfig.SENDER_PASSWORD.toString()); 

     Properties props = new Properties(); 
     props.put("mail.smtp.host", ConfigurationManager.getInstance().getProperty(EmailConfig.SMTP_HOST.toString())); 

     props.put("mail.smtp.socketFactory.port", 
       ConfigurationManager.getInstance().getProperty(EmailConfig.SSL_PORT.toString())); 

     props.put("mail.smtp.socketFactory.class", 
       ConfigurationManager.getInstance().getProperty(EmailConfig.SSL_FACTORY_CLASS.toString())); 

     props.put("mail.smtp.auth", 
       ConfigurationManager.getInstance().getProperty(EmailConfig.SMTP_AUTHENTICATION.toString())); 

     props.put("mail.smtp.port", ConfigurationManager.getInstance().getProperty(EmailConfig.SMTP_PORT.toString())); 

     Authenticator auth = new Authenticator() { 
      @Override 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication(fromEmail, password); 
      } 
     }; 
     return Session.getDefaultInstance(props, auth); 
    } 
} 

プロパティ別のプロパティファイルの値を設定しています

#Email send configuration 
SENDER_EMAIL = [email protected] 
SENDER_PASSWORD = abcalert321 
SMTP_HOST = smtp.gmail.com 
SSL_PORT = 465 
SMTP_AUTHENTICATION = true 
SMTP_PORT = 465 
SSL_FACTORY_CLASS = javax.net.ssl.SSLSocketFactory 

は、その後、私は「GroupEmail.class」

と呼ばれる、メール送信者クラスを実装
public class GroupEmail { 

    public void sendEmail() throws IOException { 
     String recipient = "[email protected]"; 

     Session session = EmailConnector.sessionCreate(); 
     /* subject of email */ 
     String emailSubject = "ABC_Alert"; 
     try { 
      MimeMessage msg = new MimeMessage(session); 
      msg.addHeader("Content-type", "text/HTML; charset=UTF-8"); 
      msg.addHeader("format", "flowed"); 
      msg.addHeader("Content-Transfer-Encoding", "8bit"); 

      msg.setFrom(new InternetAddress("[email protected]", "ABC Alerts")); 

      msg.setReplyTo(InternetAddress.parse("[email protected]")); 

      msg.setSubject(emailSubject, "UTF-8"); 

      msg.setSentDate(new Date()); 
      /* buyer email address */ 
      msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient)); 

      /* Create the message body part */ 
      msg.setText("A new Test-Alert from AB_Alerts"); 

      /* Send message */ 
      Transport.send(msg, "[email protected]", "abcalert321"); 

     } catch (MessagingException | UnsupportedEncodingException e) { 
      SystemLogger.logErrorMessege(this, e); 
     } 
    } 

} 

「GroupEmail.class」は、メールの送信を開始するために必要な場所で呼び出されました。

GroupEmail groupEmail = new GroupEmail(); 
     groupEmail.sendEmail(); 

localhostでTomcat v8サーバーを使用していましたが、アプリケーションが動作するときは次の例外があります。

98656 [http-nio-8080-exec-9] ERROR it.codegen.rnd.cgalert.notification.template.email.GroupEmail - Couldn't connect to host, port: smtp.gmail.com, 465; timeout -1 
com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 465; timeout -1; 
    nested exception is: 
    java.net.SocketException: Permission denied: connect 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2100) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:699) 
    at javax.mail.Service.connect(Service.java:388) 
    at javax.mail.Service.connect(Service.java:246) 
    at javax.mail.Service.connect(Service.java:195) 
    at javax.mail.Transport.send0(Transport.java:254) 
    at javax.mail.Transport.send(Transport.java:124) 
..more 

答えて

1

これらを修正するcommon JavaMail mistakes

connection debugging tips in the JavaMail FAQに従ってください。

ほとんどの場合、接続を妨げるファイアウォールやウイルス対策製品があります。

TomcatがJavaセキュリティマネージャで実行されている場合は、JavaMail FAQ has information about configuring security permissions。それが助けにならないなら、JavaMail FAQ also has information about debugging problems with security permissions

JavaMail FAQを読む必要がありますか? :-)

0

私は、これは非常に遅く答えですけど、私は同じ問題に直面し、ほとんどJavaコアメールAPI、ApacheメールAPIとMimeMessageについてもSpringをしようとしたときに私の経験を共有したいです。

Java JDK 1.7.0_80で50回以上試してみましたが、上記の例外で繰り返し失敗し、JDK 1.8.0_151に移動しました。

ここで、ソースコードを説明する前に、私の設定を共有したいと思います。 >Sign-in & securityAccounts and Import下>Other Google Account settingsGmail>Settings

移動します。

は、安全性の低いアプリの許可:OFF

2段階認証(私のアプリケーションがないほど安全であることを意味する):オフ

のAppパスワード(それをクリックすると、Googleが生成されます。あなたのための16文字の長いパスワードは、後で、この16文字の長いパスワード(これはスペースなし)であなたのGmailのパスワードを変更します。

import org.springframework.mail.javamail.JavaMailSenderImpl; 
import org.springframework.mail.javamail.MimeMessageHelper; 

import javax.mail.MessagingException; 
import javax.mail.internet.MimeMessage; 
import javax.swing.JOptionPane; 
import java.util.List; 
import java.util.Properties; 

public class Email { 

    public final void prepareAndSendEmail(String htmlMessage, String toMailId) { 

     final OneMethod oneMethod = new OneMethod(); 
     final List<char[]> resourceList = oneMethod.getValidatorResource(); 

     JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); 
     mailSender.setHost("smtp.gmail.com"); 
     mailSender.setPort(465); 

     mailSender.setUsername(String.valueOf(resourceList.get(0))); 
     mailSender.setPassword(String.valueOf(resourceList.get(1))); 

     //from email id and password 
     System.out.println("Username is : " + String.valueOf(resourceList.get(0)).split("@")[0]); 
     System.out.println("Password is : " + String.valueOf(resourceList.get(1))); 

     Properties mailProp = mailSender.getJavaMailProperties(); 
     mailProp.put("mail.transport.protocol", "smtp"); 
     mailProp.put("mail.smtp.auth", "true"); 
     mailProp.put("mail.smtp.starttls.enable", "true"); 
     mailProp.put("mail.smtp.starttls.required", "true"); 
     mailProp.put("mail.debug", "true"); 
     mailProp.put("mail.smtp.ssl.enable", "true"); 

     MimeMessage mimeMessage = mailSender.createMimeMessage(); 
     try { 
      MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); 
      helper.setTo(toMailId); 
      helper.setSubject("Welcome to Subject Part"); 
      helper.setText(htmlMessage, true); 

      //Checking Internet Connection and then sending the mail 
      if(OneMethod.isNetConnAvailable()) 
       mailSender.send(mimeMessage); 
      else 
       JOptionPane.showMessageDialog(null, "No Internet Connection Found..."); 
     } catch (MessagingException e) { 
      e.printStackTrace(); 
     } 

    } 

} 

Spring mailデバッグloggingsは以下といわれている:

Google Generated App Password

さて、私のソースコードがある

Username is : exampleusername 
Password is : abcdefghijklmnop 
DEBUG: JavaMail version 1.6.0 
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers 
DEBUG: Tables of loaded providers 
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]} 
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]} 
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map 
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle] 
DEBUG SMTP: useEhlo true, useAuth true 
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL true 
220 smtp.gmail.com ESMTP 12sm62330270pfr.147 - gsmtp 
DEBUG SMTP: connected to host "smtp.gmail.com", port: 465 

EHLO Administrator 
250-smtp.gmail.com at your service, [157.48.195.205] 
250-SIZE 35882577 
250-8BITMIME 
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH 
250-ENHANCEDSTATUSCODES 
250-PIPELINING 
250-CHUNKING 
250 SMTPUTF8 
DEBUG SMTP: Found extension "SIZE", arg "35882577" 
DEBUG SMTP: Found extension "8BITMIME", arg "" 
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH" 
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg "" 
DEBUG SMTP: Found extension "PIPELINING", arg "" 
DEBUG SMTP: Found extension "CHUNKING", arg "" 
DEBUG SMTP: Found extension "SMTPUTF8", arg "" 
DEBUG SMTP: STARTTLS requested but already using SSL 
DEBUG SMTP: protocolConnect login, host=smtp.gmail.com, [email protected], password=<non-null> 
DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM XOAUTH2 
DEBUG SMTP: Using mechanism LOGIN 
DEBUG SMTP: AUTH LOGIN command trace suppressed 
DEBUG SMTP: AUTH LOGIN succeeded 
DEBUG SMTP: use8bit false 
MAIL FROM:<[email protected]> 
250 2.1.0 OK 12sm62330270pfr.147 - gsmtp 
RCPT TO:<[email protected]> 
250 2.1.5 OK 12sm62330270pfr.147 - gsmtp 
DEBUG SMTP: Verified Addresses 
DEBUG SMTP: [email protected] 
DATA 
354 Go ahead 12sm62330270pfr.147 - gsmtp 
Date: Mon, 19 Feb 2018 18:55:29 +0530 (IST) 
To: [email protected] 
Message-ID: <[email protected]> 
Subject: Welcome to Subject Part 
MIME-Version: 1.0 
Content-Type: multipart/mixed; 
    boundary="----=_Part_0_1884507527.1519046720984" 

------=_Part_0_1884507527.1519046720984 
Content-Type: multipart/related; 
    boundary="----=_Part_1_1634862487.1519046721031" 

------=_Part_1_1634862487.1519046721031 
Content-Type: text/html; charset=us-ascii 
Content-Transfer-Encoding: 7bit 

<!DOCTYPE html> 
<html> 
Your html page source code is here 
</html> 

------=_Part_1_1634862487.1519046721031-- 

------=_Part_0_1884507527.1519046720984-- 
. 
250 2.0.0 OK 1519046738 12sm62330270pfr.147 - gsmtp 
DEBUG SMTP: message successfully delivered to mail server 
QUIT 
221 2.0.0 closing connection 12sm62330270pfr.147 - gsmtp 

また、あなたのインターネット接続、ウイルス対策設定やファイアウォールを確認してください中断されないためのアクセス、これは時間を無駄にすることから多くを助けることを願っています。

関連する問題