Hatena::ブログ(Diary)

アガテナ

2004-11-15

[][]ozacc-mail libraryS2で使うときの設定 ozacc-mail libraryをS2で使うときの設定を含むブックマーク

サンプルではSpringで使うときの設定しかなかったので、ここに載せておきます。

本家のページに転載してもらえればうれしいです。>ozaccの方

diconの設定はこちら。

allsupport.dicon
<components namespace="support" >
	<component class="com.ozacc.mail.impl.XMLVelocityMailBuilderImpl">
		<description>メール生成クラス</description>
	</component>
	<component class="com.ozacc.mail.impl.SendMailImpl">
		<description>メール送信クラス</description>
	    <property name="host">"smtpサーバホスト名"</property>
	</component>
</components>

業務.dicon
<components>
	<include path="alldao.dicon"/>
	<include path="allsupport.dicon"/>

	<component class="xxx.yyy.zzz.SendMailLogicImpl">
		<property name="templatePath">"/templates/mail-template.xml"</property>
	</component>
</components>

メール送信のメール送信ロジッククラスインターフェイスはこちら。

/**
 * メール送信ロジックインターフェイス。
 */
public interface SendMailLogic{
	void sendMessage(MailFormDto dto);
}
/**
 * メール送信ロジック。
 */
public class SendMailLogicImpl implements SendMailLogic{
    
    //-------------------------------------------------------------[Fields]

    /** ログ */
    private Log log = LogFactory.getLog(getClass());

    //---------------------------------------------------[DI Setter Method]

    /** メール作成クラス[auto injection] */
    private VelocityMailBuilder velocityMailBuilder;
    public void setVelocityMailBuilder(VelocityMailBuilder velocityMailBuilder) {
        this.velocityMailBuilder = velocityMailBuilder;
    }

    /** メール送信クラス[auto injection] */
    private SendMail sendMail;
    public void setSendMail(SendMail sendMail) {
        this.sendMail = sendMail;
    }
    
    /** メールテンプレートパス[manual ingection] */
    private String templatePath;
    public void setTemplatePath(String templatePath) {
        this.templatePath = templatePath;
    }

    //---------------------------------------------------[Implments Method]
    
	/**
	 * メールフォームからの内容を送信します。
	 * メールテンプレートを使ってメール送信します。
	 * @param dto メールフォームの入力内容
	 **/
  public void sendMessage(MailFormDto dto) {
	    
    // VelocityContext作成
    VelocityContext context = new VelocityContext();
		context.put("mailForm", dto);
		
		// メール作成・送信
    Mail mail = velocityMailBuilder.buildMail(templatePath, context);
    sendMail.send(mail);
	}
}

メールテンプレート

<mail>
    <from email="${malForm.mail}" name="${mailForm.name}" />
    <recipients>
        <to email="送信先アドレスを指定"/>
    </recipients>
    <replyTo email="${mailForm.mail}" />
    <subject><![CDATA[
      メールフォームを受け付けました。
    ></subject>
    <body><![CDATA[
名前 : ${mailForm.name}
住所 : ${mailForm.address}
></body>
</mail>

メールテンプレートのtoとかReplay-toにも値のバインドができちゃうのが

便利でした。

ozaccozacc 2004/11/15 19:53 承知しました。

agtagt 2004/11/15 20:13 ありがとうございます。すごい使いやすいライブラリで助かっています。

QunQun 2006/10/23 15:58 CDATAの部分の最後に ]] が抜けているようです。<![CDATA[文章]]>