2009年2月14日土曜日

 

メールフォーム - PHPmailer+xajax

Xajax : Downloads - Xajax
PHPMailer : Download - SourceForge.net

Xajax

地方で活動するweb制作者の日々を綴るblog
PHP+xajaxでお気軽Ajaxアプリケーション作成(1) ~インストール/Hello World 【ver 0.5対応版】
PHP+xajaxでお気軽Ajaxアプリケーション作成(2) ~フォームの操作
PHPプロ!ニュース
XajaxとPHPmailerを使用したお問い合わせフォーム

ダウンロードしたら解凍したディレクトリから「xajax_core/」「xajax_js/」をアップする。
使い方はPHPファイルから「xajax.inc.php」を読み込む。「Xajax compiled」をダウンロードしたら「xajaxAIO.inc.php」。

include './xajax_core/xajax.inc.php';
 // Xajax compiled Ver.
include './xajax_core/xajaxAIO.inc.php';
/* PHP */

<?php
function myFunc($post){
    $objResponse = new xajaxResponse();
    // HTML要素書き換え予約
    $objResponse->assign('contents', 'value', $post['val'];
    // alert() 実行予約
    $objResponse->alert('running!');
    // スクリプト実行
    return $objResponse;
}

$xajax = new xajax();
// 関数
$rqst =& $xajax->register(XAJAX_FUNCTION, 'myFunc');
// フォームの値をセット
$rqst->setParameter(0, XAJAX_FORM_VALUES, 'myForm');
$xajax->processRequest();
/* HTML */

<form id="myForm" >
  <input type="text" name="val" id="val" value="39" size="5" /> 
  <input tyle="text" name="answer" id="answer" value="" size="5"></span><br />
  <input type="button" onclick='<?php $rqst->printScript(); ?>'  value="CLICK" />
</form>

$xajax->processRequests()」ではないので注意。
関数で最後に 「return $objResponse;」が返されて初めて、Ajaxが実行される。ブラウザでエラーを確認しづらい。「setFlag('debug', true);」という話もある。

PHPmailer

PHPで日本語メールを送る - 応用編 (添付ファイル、HTMLメール) -

ダウンロード、解凍したら「class.phpmailer.php」が入ってるディレクトリごとアップしてPHPから読み込む。

require("./phpmailer/class.phpmailer.php");

文字化けする時は「class.phpmailer.php」で文字コードセット。

/* class.phpmailer.php */
  public $CharSet           = 'UTF-8';

使い方は以下。XREAではコレで送信した。

/* phpコード */
 mb_language("japanese");
 mb_internal_encoding("UTF-8");

 $email = "test@example.com";
 $from = "test";
 $subject = "Subject";
 $msg = "message";
 $mail = new PHPMailer();

 $mail->From = "info@example.com";
 $mail->FromName = mb_encode_mimeheader(mb_convert_encoding("Webmaster","JIS","UTF-8"));
 $mail->AddAddress( $email);
 //  $mail->AddReplyTo($email, $from);
 $mail->Subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8"));
 $mail->Body = mb_convert_encoding($msg"JIS","UTF-8");

 if ($mail->Send()) {
   $error = "送信完了";
   $show_form = false;
 } else {
   $error = "送信エラー:".$mail->ErrorInfo;
 }

$mail->ErrorInfo」でエラー情報取得。
$mail->CharSet」があるので、そっちでUTF-8をセットしてみたが「class.phpmailer.php」に設定しないと化ける様だ。
外部SMTP認証してメール送信する。試してないので注意。GmailのSMTP設定。

/* SMTP認証 */
 mb_language("japanese");
 mb_internal_encoding("UTF-8");
 $email = "test@example.com";
 $from = "test";
 $subject = "Subject";
 $msg = "message";
 $mail = new PHPMailer();

  $mail->IsSMTP();  
  $mail->Host = "smtp.gmail.com";  
  $mail->SMTPAuth = true;
  $mail->Username = "example@gmail.com";
  $mail->Password = "password";

 $mail->From = "info@example.com";
 $mail->FromName = mb_encode_mimeheader(mb_convert_encoding("Webmaster","JIS","UTF-8"));
 $mail->AddAddress( $email);
 //  $mail->AddReplyTo($email, $from);
 $mail->Subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8"));
 $mail->Body = mb_convert_encoding($msg"JIS","UTF-8");

 if ($mail->Send()) {
   $error = "送信完了";
   $show_form = false;
 } else {
   $error = "送信エラー:".$mail->ErrorInfo;
 }

PHPmailer + Xajax

A (safe) contact form using Xajax and PHPmailer - Xajax
/* PHPmailer + Xajax */
<?php
include './xajax_core/xajax.inc.php';
include ('./phpmailer/class.phpmailer.php');
mb_language("japanese");

mb_internal_encoding("UTF-8");
$form = '<form id="myForm" name="myForm">
            <div>
              <label for="name">Name</label>
              <input name="name" type="text" id="naam" value="" size="25" />
            </div>
            <div>
              <label for="email">E-mail</label>
              <input name="email" type="text" id="email" value="" size="25" />
            </div>
            <div>
              <label for="msg">Message</label>
              <textarea name="msg" id="msg" cols="45" rows="5"></textarea>
            </div>
            <div style="border-top:1px solid #CCCCCC;padding-top:5px;">
              <label for="subbtn" style="text-align:right;">
              <input type="button" id="subbtn" value="Submit" onclick="xajax_myFunc(xajax.getFormValues(\'myForm\'));" /></label>
            </div>
          </form>';
function myFunct($get) {

    global $form, $error;
    $error = '';
    $objResponse = new xajaxResponse();

    $show_form = true;
    if (!empty($get['email']) && !empty($get['msg']) && !empty($get['name'])) {
        if (preg_match("/^[\w-]+(\.[\w-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4})$/i", trim($get['email']))) {
            $email = preg_replace("/\r\n/", "", $get['email']);
            $from = preg_replace("/\r\n/", "", $get['name']);
            $mail = new PHPMailer();

            $mail->From = "Webmaster@example.com";
            $mail->FromName = mb_encode_mimeheader(mb_convert_encoding("Webmaster","JIS","UTF-8"));
            $mail->AddAddress( $get['email']);
            $mail->Subject = mb_encode_mimeheader(mb_convert_encoding($get['name'],"JIS","UTF-8"));
            $mail->Body = mb_convert_encoding($get['msg'],"JIS","UTF-8");
            if ($mail->Send()) {
                $error = "The form is submitted and the mail is send.";
                $show_form = false;
            } else {
                $error = "There was a problem while sending the mail, please try again".$mail->ErrorInfo;
            }
        } else {
            $error = "The entered e-mail address is not valid.";
        }
    } else {
        $error = "At least one of the fields is empty...";
    }
    $data = ($show_form!=true) ? '<p class="contactMsg">'.$error.'</p>' : '<p class="contactMsg">'.$error.'</p>'.$form;
$objResponse->alert($data);

    return $objResponse;
}
$xajax = new xajax();
//$xajax->registerFunction('myFunc');
$rqst =& $xajax->register(XAJAX_FUNCTION, 'myFunc');
$rqst->setParameter(0, XAJAX_FORM_VALUES, 'myform');

$xajax->processRequest();
?>
<?='<?xml version="1.0" encoding="utf-8"?>' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">

<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />

<?php $xajax->printJavascript('./'); /* xajax_js のフォルダ位置を指定。<script>タグでwebページに読み込み*/ ?>
</head>
<body>
<?php echo '<div id="contact_result">'.$form.'</div>'; ?>
</body>
</html>

ラベル: ,


コメント: コメントを投稿

登録 コメントの投稿 [Atom]



この投稿へのリンク:

リンクを作成



<< ホーム

This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google