Zend_Mailでメール送信::携帯サイト作成(1)

By katou - 08/11/07 - このエントリをはてなブックマークに追加このエントリをYahoo!ブックマークに追加このエントリをdel.icio.usに追加このエントリをFC2ブックマークに追加

Zend_Mailでメール送信::携帯サイト作成の第一弾として

今回は、Zend_Mailを使用して簡単なメール送信を行います。

第一弾の目標は、送信元・宛先を指定して、フォームで入力された件名と本文が

指定した送信元から宛先に送信する事です。

セキュリティ問題や文字化けについては次回以降ご紹介します。

Zend_MailはテキストメールやMIME マルチパートメールを作成、送信するための一般的な機能を提供してくれます。

簡単に言えば、テキストだけのメール、もしくは画像やデコメ等、テキスト以外にも色々ついているメールの作成送信が出来ます。

下記ソースコードの本文・件名部分にフォームで入力された値が入っていると思ってください。

※フォームのソースコードは割愛します。

    require_once 'Zend/Mail.php';

        

        //送信者の名前
       $fromName = 'from@domain.jp';

        //送信元
       $fromMail = 'from@domain.jp';

        //宛先の文章
        $toName   = '宛先の文章を入れてください';

        //宛先
        $toMail   = 'to@keitai.ne.jp';

        //件名
        $subject  = '※件名・半角は化けます';

        //本文
        $body     = 'ここがメール本文になります';

        
        //今回実行しているサーバーの環境がEUC-JPですので、日本語メール用(ISO-2022-JP)に変換しています
        $fromName = mb_convert_encoding($fromName, 'ISO-2022-JP' ,'EUC-JP');
        $fromMail = mb_convert_encoding($fromMail, 'ISO-2022-JP' ,'EUC-JP');
        $toName   = mb_convert_encoding($toName, 'ISO-2022-JP' ,'EUC-JP');
        $toMail   = mb_convert_encoding($toMail, 'ISO-2022-JP' ,'EUC-JP');
        $subject  = mb_convert_encoding($subject, 'ISO-2022-JP' ,'EUC-JP');
        $body     = mb_convert_encoding($body, 'ISO-2022-JP' ,'EUC-JP');

        
        //文字コードを指定して、インスタンスを生成
        $mail = new Zend_Mail('ISO-2022-JP');

        //本文セット
        $mail->setBodyText($body);

        //送信元、送信者をセット
        $mail->setFrom($fromMail ,$fromName);

        //宛先、宛先の文章をセット
        $mail->addTo($toMail, $toName);

        //件名をセット
        $mail->setSubject($subject);

        //送信
        $mail->send();

メールの送信だけを見れば、無事メール受信出来たかと思います。
Zend_MailはZend_Mail_Transport_Sendmail か Zend_Mail_Transport_Smtp
どちらかを指定して送信することが出来ます。
デフォルトはZend_Mail_Transport_Sendmailです。
SMTP経由でメール送信する場合でも基本的に使い方は大して変わりませんので、詳細は
Zend Frameworkのドキュメントを確認していただければと思います。

上記ソースでは、送信出来たと思いますが、文字化けや、セキュリティの問題が残っています。
例えば、送信者の日本語にすると文字化けしたり、
件名に半角カタカナがあると文字化けする。などなど。
値の検証はZend_Validateを使えば簡単に出来るとして、
文字化けの原因や解決策に関しては次回にご紹介させていただきます。