■ Java で、 Email を送るには...
* (色々あるらしいが)JavaMail を利用する
JavaMailの公式サイト
http://www.oracle.com/technetwork/java/javamail/index.htmlhttps://javaee.github.io/javamail/
■ 準備 / JavaMailの設定
色々、方法はあるが、ここでは、以下を紹介。【1】 JavaMailを直接ダウンロード 【2】 Gradle を使う << ★2018/03/20追記★
【1】 JavaMailを直接ダウンロード
* 以下のサイトから「javax.mail.jar」(今回は「JavaMail v1.5.5」)を ダウンロードしインポートしておくhttps://javaee.github.io/javamail/
【2】 Gradle を使う
* 以下の関連記事の「準備 : Buildship: Eclipse Plug-ins for Gradle のインストール」を行い Gradle プロジェクトを作成し、Eclipseの対象プロジェクトを右クリックし、 [Gradle]-[Refresh Gradle Project]を選択しモジュールをダウンロードhttps://blogs.yahoo.co.jp/dk521123/37204914.html
build.gradle
dependencies { // ★JavaMail★ compile group: 'com.sun.mail', name: 'javax.mail', version: '1.6.1' }
■ 任意準備 / 開発用SMTPサーバーの設定
Windowsローカル上でテストする
(これまた色々あるらしいが)smtp4dev を利用する* 以下のサイトから「smtp4dev-X.X.X-binaries.zip」(今回は「smtp4dev-2.0.9-binaries.zip」) をダウンロードし、解凍し、smtp4dev.exeを起動するだけ(簡単)http://smtp4dev.codeplex.com/
* その他のツールやLinux環境下での構築については、以下の関連記事を参照のこと。https://blogs.yahoo.co.jp/dk521123/37222874.html
https://blogs.yahoo.co.jp/dk521123/36252946.html
https://blogs.yahoo.co.jp/dk521123/37440819.html
https://blogs.yahoo.co.jp/dk521123/36257589.html
■ サンプル
EmailHandler.java
import java.security.InvalidParameterException; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class EmailHandler { private final static String DEFAULT_TIMEOUT = "10000"; private final static String DEFAULT_HOST = "localhost"; private final static String DEFAULT_POST = "25"; private String fromAddress; private List<String> toAddresses; private String mailSubject; private String mailBody; private String host; private String port; private String timeout; private boolean isOnDebugMode; /** * Default Contractor. */ public EmailHandler() { this.fromAddress = null; this.toAddresses = new ArrayList<>(); this.mailSubject = null; this.mailBody = null; this.host = DEFAULT_HOST; this.port = DEFAULT_POST; this.timeout = DEFAULT_TIMEOUT; this.isOnDebugMode = false; } public void setFromAddress(String fromAddress) { this.fromAddress = fromAddress; } public void setToAddresses(List<String> toAddresses) { this.toAddresses = toAddresses; } public void addToAddress(String toAddress) { this.toAddresses.add(toAddress); } public void setMailSubject(String mailSubject) { this.mailSubject = mailSubject; } public void setMailBody(String mailBody) { this.mailBody = mailBody; } public void setHost(String host) { this.host = host; } public void setPort(String port) { this.port = port; } public void setOnDebugMode(boolean isOnDebugMode) { this.isOnDebugMode = isOnDebugMode; } public void send() throws MessagingException { if (this.toAddresses == null || this.host == null) { throw new InvalidParameterException(); } Properties props = new Properties(); props.put("mail.smtp.host", this.host); props.put("mail.smtp.port", this.port); props.put("mail.debug", this.isOnDebugMode); props.put("mail.smtp.connectiontimeout", this.timeout); props.put("mail.smtp.timeout", this.timeout); Session session = Session.getInstance(props, null); Message mimeMessage = new MimeMessage(session); mimeMessage.setFrom(this.toInternetAddress(this.fromAddress)); InternetAddress[] addresses = this.toInternetAddresses(this.toAddresses); mimeMessage.setRecipients(Message.RecipientType.TO, addresses); mimeMessage.setSubject(this.mailSubject); mimeMessage.setSentDate(new Date()); mimeMessage.setText(this.mailBody); Transport.send(mimeMessage); } private InternetAddress[] toInternetAddresses(List<String> addresses) throws AddressException { InternetAddress[] returnValues = new InternetAddress[addresses.size()]; int index = 0; for (String address : addresses) { returnValues[index] = this.toInternetAddress(address); index++; } return returnValues; } private InternetAddress toInternetAddress(String address) throws AddressException { return new InternetAddress(address); } /** * 【使用例】 * * @param args */ public static void main(String[] args) { try { EmailHandler email = new EmailHandler(); email.setFromAddress("sample@yahoo.com"); email.addToAddress("sample@gmail.com"); email.setMailSubject("タイトルです。"); email.setMailBody("メール本文です。\r\n以上です。"); email.setOnDebugMode(true); email.send(); } catch (Exception ex) { ex.printStackTrace(); } } }
■ 補足
上記のサンプルは、Listを使っているが、以下のようにもできる。 InternetAddress[] myToList = InternetAddress.parse("abc.001@gmail.com,def.002@yahoo.com");
参考文献
* 以下のサイトは、非常に参考になった。http://qiita.com/rubytomato@github/items/b106ff8011bcad60bce2
* smtp4dev に関する参考サイトhttp://www.atmarkit.co.jp/ait/articles/1410/23/news017.html
* シンプルなサンプルhttp://www.javadrive.jp/javamail/smtp/index1.html
その他のサイト
http://www.atmarkit.co.jp/ait/articles/0502/08/news103.htmlhttp://masahnoheya.blog11.fc2.com/blog-entry-54.html