SpringBootでWebサービスを開発しています。
メール送信を実装したいのですが、メールサーバーはどうするのか迷いました。
Gmailとかでもいいですが、
Webサービスなのでいずれは独自のメールサーバーを立てたい。
しかし、そのやり方もまだよくわからない状態。
とりあえず、メール送信の機能を実装して単体テストだけでもしたい。
fakeSMTPを使ってダミーのメールサーバーを立てる
ということで調べていたらダミーのメールサーバーを立てるといいと。
ということで今回はfakeSTMPを使いました。
Javaで実装されているため、環境を選ばないのがポイントです。
下記からダウンロードします(macです)。
zipファイルがダウンロードされます。
解凍するとjarファイルが出てきます。
fakeSMTP-x.xx.jar
これを任意の場所に配置し(今回は/path/to/fakeSMTP-x.xx.jar)、
jarファイルをダブルクリックするか、
java -jar /path/to/fakeSMTP-x.xx.jar
で起動します。
「開発元が未確認で起動できない」と言われたら下記を参照。
リスニングポートが「25」です。任意の番号に変更可です。
メッセージ保存先にフォルダを指定すると、送信したメッセージがそのフォルダに保管されます。
SpringBoot アプリケーションの実装
application.propertiesに下記を追記してください。
#ホスト名(今回はローカルで起動します)
spring.mail.host=localhost
#ポート番号(リスニングポートを指定する)
spring.mail.port=25
pom.xmlに依存関係を追加します。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
@Service
public class MailService {
@Autowired
private JavaMailSender mailSender;
public void sendMail() {
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setTo("宛先メールアドレス");
mailMessage.setSubject("件名を入力します");
mailMessage.setText("本文を入力します");
mailSender.send(mailMessage);
}
}
宛先メールアドレスは適当でもいい(aaaとかでもいい)ですが必ず何か入れてください。
実際にはどこにも送られません。
送信してみる
fakeSMTPの「サーバー起動」を押して、メールサーバーを起動します。
Webサービスの開発サーバーを起動して、該当ロジックを流します。
メール送信に成功すると、
fakeSMTPの画面に
送信したメールの情報が表示されます。