現在、私が大学で作っているシステムで、Javaでのメール送信を実装しようとしているのですが、
1通送るのに非常に時間がかかってしまいます。大体4~5秒くらいです。
これが普通だと言われてしまうと、どうしようもないですが、、、
システム上、本文がそれぞれ違うものを数十通送る可能性もあるのですが、数十件も送っていると数分かかってしまうので、
できるだけ早く送信したいのですが何かいい方法はないでしょうか。
メール送信のAPIはJavaMail ver1.6.1を使用しています。
現在macbook airで開発しており、今後は大学内のサーバPCを使うかもしれません。
よろしくお願いします。
今回のコードを書くにあたって主に、
JavaアプリケーションからEメールを送信するサンプルコード
を参考にさせていただきました。
以下はメールを送るメソッドです。メールアドレスやパスワードのところは*で埋めてます。
実行にはEclipseを使用しています。
java
1public void send(String subject, String content, String to) { 2 3 final String from = "*******@gmail.com"; 4 5 // Google account mail address 6 final String username = "*******@gmail.com"; 7 // Google App password 8 final String password = "*******"; 9 10 final String charset = "UTF-8"; 11 12 final String encoding = "base64"; 13 14 // for gmail 15 String host = "smtp.gmail.com"; 16 String port = "587"; 17 String starttls = "true"; 18 19 Properties props = new Properties(); 20 props.put("mail.smtp.host", host); 21 props.put("mail.smtp.port", port); 22 props.put("mail.smtp.auth", "true"); 23 props.put("mail.smtp.starttls.enable", starttls); 24 25 props.put("mail.smtp.connectiontimeout", "10000"); 26 props.put("mail.smtp.timeout", "10000"); 27 28 props.put("mail.debug", "true"); 29 30 Session session = Session.getInstance(props, 31 new javax.mail.Authenticator() { 32 protected PasswordAuthentication getPasswordAuthentication() { 33 return new PasswordAuthentication(username, password); 34 } 35 }); 36 37 try { 38 MimeMessage message = new MimeMessage(session); 39 message.setHeader("Content-Transfer-Encoding", encoding); 40 41 message.setSubject(subject, charset); 42 43 // Set From: 44 message.setFrom(new InternetAddress(from)); 45 // Set ReplyTo: 46 message.setReplyTo(new Address[]{new InternetAddress(from)}); 47 // Set To: 48 message.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); 49 50 message.setContent(content, "text/html; charset=" + charset); 51 52 Transport.send(message); 53 54 } catch (MessagingException e) { 55 throw new RuntimeException(e); 56 } catch (UnsupportedEncodingException e) { 57 throw new RuntimeException(e); 58 } 59 60 }
以下はJavaMailのデバッグ用のログです。
DEBUG: JavaMail version 1.6.1 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 Thu Aug 02 01:54:33 JST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle] DEBUG SMTP: need username and password for authentication DEBUG SMTP: protocolConnect returning false, host=smtp.gmail.com, user=******, password=<null> DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL false 220 smtp.gmail.com ESMTP e21-v6sm39546145pfl.187 - gsmtp DEBUG SMTP: connected to host "smtp.gmail.com", port: 587 EHLO 192.168.3.4 250-smtp.gmail.com at your service, [60.94.102.161] 250-SIZE 35882577 250-8BITMIME 250-STARTTLS 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 "STARTTLS", arg "" DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg "" DEBUG SMTP: Found extension "PIPELINING", arg "" DEBUG SMTP: Found extension "CHUNKING", arg "" DEBUG SMTP: Found extension "SMTPUTF8", arg "" STARTTLS 220 2.0.0 Ready to start TLS EHLO 192.168.3.4 250-smtp.gmail.com at your service, [60.94.102.161] 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: protocolConnect login, host=smtp.gmail.com, user=********@gmail.com, 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:<********@gmail.com> 250 2.1.0 OK e21-v6sm39546145pfl.187 - gsmtp RCPT TO:<********@gmail.com> 250 2.1.5 OK e21-v6sm39546145pfl.187 - gsmtp DEBUG SMTP: Verified Addresses DEBUG SMTP: ********@gmail.com DATA 354 Go ahead e21-v6sm39546145pfl.187 - gsmtp Date: Thu, 2 Aug 2018 01:54:33 +0900 (JST) From: =?UTF-8?B?44K544Kx44K444Ol44O844Or566h55CG44K344K544OG44Og?= <********@gmail.com> Reply-To: ********@gmail.com To: ********@gmail.com Message-ID: <423016959.1.1533142473874@[192.168.3.4]> Subject: =?UTF-8?B?W+WGjemAgV0g5Lya6K2w44Gu6ZaL5YKs5pel56iL44Gr?= =?UTF-8?B?44Gk44GE44GmKOimgeaxguiAhe+8muWkqueUsOaCoOS7iyk=?= MIME-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 PGh0bWw+PGJvZHk+4oC744GT44Gu44Oh44O844Or44Gv44CB44G+44Gg5YWl5Yqb44GV44KM44Gm 44GE44Gq44GE5pa544Gr6YCB5L+h44GX44Gm44GE44G+44GZ44CCPGJyPjxicj4g5aSq55Sw5oKg 5LuL44GV44KT44GL44KJ5YWl5Yqb6KaB5rGC44GM5bGK44GE44Gm44GE44G+44GZ44CCPGJyPjxi cj48aHIgYWxpZ249ImxlZnQiIHdpZHRoPSI1NSUiPjxicj7kvJrorbDjgpLjgZfjgb7jgZnjgII8 YnI+PGhyIGFsaWduPSJsZWZ0IiB3aWR0aD0iNTUlIj48YnI+6L+U562U44Gv5Lul5LiL44GuVVJM 44GL44KJ44CBMjAxOC0wOC0yMOOBvuOBp+OBq+OBiumhmOOBhOOBl+OBvuOBmeOAgjxicj48YSBo cmVmPSJodHRwOi8vbG9jYWxob3N0OjgwODAvU2NoZWR1bGVNYW5hZ2VyL0Fuc3dlclBhZ2UvMHJr NVBuRklqTCI+6L+U562U44Oa44O844K4PC9hPjxicj48YnI+PC9ib2R5PjwvaHRtbD4= . 250 2.0.0 OK 1533142477 e21-v6sm39546145pfl.187 - gsmtp DEBUG SMTP: message successfully delivered to mail server QUIT 221 2.0.0 closing connection e21-v6sm39546145pfl.187 - gsmtp
回答2件
あなたの回答
tips
プレビュー