Springbootでメール送信
こんにちはおしりんです。
花粉症と風邪を併発して死にかけてます。
最近Springbootでメールを送信する機会がありました。
あとから使えるかもなのでめもっときます。
ライブラリ
org.springframework.boot:spring-boot-starter-mail:1.5.9.RELEASE
configファイルのbean設定
SMTPサーバの設定を記述
認証なしサーバの場合
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="localhost" /> <property name="port" value="25" /> </bean>
認証ありサーバの場合(ex:Gmail)
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="smtp.gmail.com" /> <property name="port" value="587" /> <property name="username" value="" /> <property name="password" value="" /> <property name="javaMailProperties"> <props> <prop key="mail.transport.protocol">smtp</prop> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.starttls.enable">true</prop> </props> </property> </bean>
組織アカウントのメールアドレスを使用する場合はusernameに送信元となるメールアドレスと、passwordにメールアドレスに紐づくパスワードをそれぞれ設定。
また、Googleのアカウント情報から「安全性の低いアプリの許可」を有効にする必要がある。
個人アカウントを使用する場合はusernameに送信元となるメールアドレスと、passwordにはアプリパスワードを設定する。
アプリパスワードについては、以下のサイトが分かりやすかったどす。
https://www.ajaxtower.jp/googleaccount/2step-verify/index6.html
実装
@Autowired JavaMailSender javaMailSender; public String sendErrorEmail() { SimpleMailMessage email = new SimpleMailMessage(); email.setTo("to@example.com"); email.setCc("cc@example.com"); email.setSubject("件名"); email.setText("本文"); javaMailSender.send(email); return "result"; }
簡易的なメールを送信する場合はSpringが提供しているSimpleMailMessageクラスを使用する。
そうでない場合(添付ファイルを送りたい、HTML形式にしたい)は、MimeMessageクラスを使用する。
To、Cc、Bccは複数設定可能。その場合は配列で定義する。
Fromは設定してもしなくてもおk。
動作確認
テストはRadishで行いました。
色々試したけどこれがいちばんらくちんでした。
http://radish.jp.brothersoft.com/download/
Radishの使い方は以下のサイトが分かりやすかったどす。
http://lilium.7thheavenblue.com/web_environment/radish/
ありがとうございました。
いじょう!