S2Maiでメールを送るの巻き
http://s2mai.sandbox.seasar.org/ja/を読むと簡単に送れた。
・・・だとネタにも何にもならないので・・・少し詳細に書きます。
trouble.dicon を書きます。
今回は trouble というプロジェクトで作成したのでこうなりましたが、何でもいいみたいです。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.3//EN" "http://www.seasar.org/dtd/components23.dtd"> <components> <include path="s2mai.dicon"/> <component class="trouble.util.IMai"> <aspect>s2MaiInterceptor</aspect> </component> </components>
trouble.util.IMai.java インターフェイスを作成します。
package trouble.util; import trouble.dto.MaiDto; public interface IMai { void sendMail(MaiDto dto); }
trouble.dto.MaiDto.java を作成します。
長いので略してます。
package trouble.dto;import java.util.List;
import javax.mail.internet.InternetAddress;
public class MaiDto {
private String title
private String toName;
private String ccName;
:public String getTitle() {
return title;
}public void setTitle(String title) {
this.title = title;
}
:
}
実際は下記のテンプレートに合わせてプロパティ、アクセサメソッドが定義されます。
テンプレートは trouble.util におきます。
sendMail というインターフェイスから呼ばれるので、IMai_sendMail.ftl という名前になります。
Subject: 【${data.matterName}】修正待ちの不具合があります。 ☆TO ${data.toName} さん ************************************** * 【案件名 :${data.matterName}】 ************************************** ${data.registUserName}さんから修正依頼があります。 『${data.title}』が修正待ちの状態にあります。 【品質ID】 ${data.number} 【登録者】: ${data.registUserName} (${data.registUser}) 【URL】 ${data.url}
*FreeMaker の仕様なのか文章の最後に4つほど改行が入ります。
で実際に送るには、適当な action から呼び出します。
こんな感じで、
try {
S2Container container = S2ContainerFactory.create("trouble.dicon");
IMai mai = (IMai) container.getComponent(IMai.class);
MaiDto dto = new MaiDto();// From
dto.setFrom(new InternetAddress("postmaster@exapmle.com", "ほげほげ"));// To
if (troubleForm.sendUserIdTo != null) {
getToHead(dto);
}
:
// 本文
dto.setTitle(troubleForm.title);
dto.setNumber(troubleForm.number);
dto.setMatterName(menuDto.matterName);
dto.setRegistUserName(loginDto.name);
:// 送信
mai.sendMail(dto);
}
catch (Exception ex) {
ex.printStackTrace();
}
ちゃんと送れたみたいです (^_^)v