連想配列のキー部分がプロパティと一致したらセットする( メール送信用クラス ) では、$_GET でメール用のクラスのテストを行いましたが、実際にレンタルサーバに置いて、自分専用の API として整備しました。
ブラウザからも直接使えるように、header( "Access-Control-Allow-Origin: *" ); を実行しています。
自分専用ですが、イザという時に全て遮断できるように簡易パスワードを設定してあります。
呼び出し側は POST で送信して、FORM 要素を使用する場合は、name の値を クラスのプロパティと一致させるだけで利用可能です。( 但し差出人のメールアドレスは仕様上固定です )
{ "error": "nothing" } は、正常終了です
<?php
header( "Content-Type: application/json; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );
header( "Access-Control-Allow-Origin: *" );
mb_language( "ja" );
mb_internal_encoding("utf-8");
if ( $_POST['pass'] != "簡易パスワード" ) {
print '{ "error": "no pass" }';
exit();
}
$mail = new mail_data();
$_POST['from_address'] = "サーバ側で認証の必要の無いメールアドレス";
$mail->send_mail_set($_POST);
$result = $mail->send_mail();
if ( $result ) {
print '{ "error": "nothing" }';
}
else {
print '{ "error": "mb_send_mail" }';
}
// ***********************************************
// メール処理用クラス
// ***********************************************
class mail_data {
public $from_address;
public $from_text;
public $to_address;
public $to_text;
public $subject;
public $body;
// ***********************************************
// 連想配列のキー部分がプロパティと一致したらセット
// ***********************************************
public function send_mail_set( $data ) {
foreach( $data as $k => $v ) {
if ( property_exists( $this, $k ) ) {
$this->{$k} = $v;
}
}
}
// ***********************************************
// サーバー(メールサーバ)送信処理
// ***********************************************
public function send_mail() {
$from = mb_convert_encoding( $this->from_text, "JIS", "utf-8" );
$from = "From: =?ISO-2022-JP?B?" . base64_encode($from) . "?= <{$this->from_address}>";
$to = mb_convert_encoding( $this->to_text, "JIS", "utf-8" );
$to = "=?ISO-2022-JP?B?" . base64_encode($to) . "?= <{$this->to_address}>";
return mb_send_mail($to, $this->subject, $this->body, $from );
}
}
?>
ブラウザからの ajax を想定していますが、以下は FORM による 直接テスト用の画面になります send_test.php
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/jquery-ui.css">
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"></script>
<style>
.title {
display: inline-block;
width: 150px;
padding: 15px;
}
.entry {
display: inline-block;
width: 350px;
padding: 15px;
}
</style>
<script>
// jQuery 初期処理
$(function() {
$("input,textarea").prop("required", true );
});
</script>
</head>
<body>
<div>
<?php
// -------------------------------------
// フォーム開始
// -------------------------------------
?>
<form
method="post"
action="send_mail.php"
target="_self">
<?php
// -------------------------------------
// 簡易パスワード
// -------------------------------------
?>
<input
type="hidden"
name="pass"
value="簡易パスワード">
<div class="title">差出人(日本語)</div>
<div class="entry">
<input
type="text"
name="from_text"
maxlength="50"
style="width:200px">
</div>
<br>
<div class="title">宛先</div>
<div class="entry">
<input
type="text"
name="to_address"
style="width:200px">
</div>
<br>
<div class="title">宛先(日本語)</div>
<div class="entry">
<input
type="text"
name="to_text"
style="width:200px">
</div>
<br>
<div class="title">件名</div>
<div class="entry">
<input
type="text"
name="subject"
style="width:200px">
</div>
<br>
<div class="title" style='vertical-align:top'>本文</div>
<div class="entry">
<textarea
name="body"
style="width:200px;height:150px;"></textarea>
</div>
<br>
<div class="title"></div>
<div class="entry">
<input
type="submit"
name="send"
value="送信">
</div>
</form>
</body>
</html>
|
|
【PHP + 通信の最新記事】
- fake sendmail for windows を使って、PHP でごく普通に( mb_send_mail で )メール送信
- PHP の cURL でファイルアップロード
- PHP : WEB でもコマンドラインでも HTTP でファイルをダウンロードする 『fget.php』
- PHP : cURL : Google Photo API の albums.list メソッドを使用して アルバム一覧データを取得する
- PHP + cURL で Google Photo API の アクセストークンを取得する
- PHP : cURL で FTP + SSL ダウンロード
- PHP の imap 関数で( Windows ローカル )、Yahoo メールのメールをさくらインターネットのメールへコピーする
- PHP の imap 関数( Windows のローカル )で、さくらインターネットのメールボックスの情報を取得する
- PHP : IMAP 関数 でまずメールのヘッダ部分を整理してログに出力する / ※ JSON 出力を追加
- ファイルを一つアップロード : FORM の target を IFRAME にして、PHP に JavaScript を書き出させて元のページにメッセージを表示させる
- Pear の Net_POP3 で、SSL(995) を使って簡単にメール受信
- PHP をコマンドプロンプトから実行して、WEB 上のデータを取得するいくつかの方法
- FormData を使用して $.ajax で送信すると、ファイルのアップロードとメール送信(ファイル添付)を一度に行えます
- ファイルのアップロードからそれを添付してメールを送るテンプレート(スケルトン)
- PHP で Windows標準のオブジェクト(CDO.Message)とGMail を使ってメール送信
- PHP : http 経由でファイルのサイズを取得する file_size 関数と ファイルサイズを付加した get_imagesize 関数
- 連想配列のキー部分がプロパティと一致したらセットする( メール送信用クラス )
- PHP : リモートのファイルサイズを取得する
- ローカルの PHP を使ってコマンドプロンプトより簡単にバイナリファイルをアップロードする
- PHP の cURL で ftp サーバーにファイルをアップロードする(SSLなし)






