ようこそゲストさん

Qdmail - PHP::Mail Library , Quick and Detailed for Multibyte

テキストメール

ここはバージョン1系のeasyモードの解説です。バージョン0系については、バージョン0系のeasyモードの使い方をご参照ください。

単純なテキストメール

推奨文字コード

Qdmailは、ソースコードや渡された文字コードを自動的に判別し、もっとも文字化けの少ない方法で送るように試みます。
しかし、インターネットメールの環境は様々であり、自動判別は完璧なものではありません。
もっとも文字化けが出る可能性が低いのは、当方の開発環境と同じ以下の環境です。
スクリプトの文字コード:UTF-8で統一。
スクリプトの改行コード:CRLF
デフォルトでは、Qdmailは、このUTF-8を日本語のメールに適したiso-2022-jpに変換して送ります。
もちろん、EUC-JP,SHIFT-JISでも、改行コードLFのみでも大丈夫なようには設計してあります。

メールアドレスの指定の基本

メールアドレスだけの場合'address@example.com'
表示名もつける場合array( 'address@example.com' , '表示名' )
表示名をつけて、複数指定array(array( 'address@example.com' , '表示名' ),array( 'address@example.com' , '表示名' ).....)
メールアドレスだけの複数指定array(array( 'address@example.com'),array( 'address@example.com')...

一番簡単なメール

インクルードできるパスの通ったところに、qdmail.phpを配置してください。
わからなければ、呼び出すファイルと同じディレクトリ(フォルダ)で構わないです。
require_once('qdmail.php');
$mail = & new Qdmail();
$mail -> easyText(
      array( 'mailto@example.com' , '宛先(日本語OK)' ),
      'タイトル(日本語OK)' ,
      '本文(日本語OK)',
      array('from@example.com' , '配信元(日本語OK)')
 );
(PHP5の時は、new 前の "&" は必要ありません。)

オブジェクト指向(OOP)的な書き方がわからない方は、-> や new の意味がわからないかも知れませんが、おまじないと思って、上記をコピー&ペーストしてみてください。
「$mail -> 関数名()」で、ひとつの関数と思って構いません。
なお、「$mail -> & new Qdmail();*1」は、最初に一回だけやっておけば、それ以降は必要ありません。
「$mail」は、自分の好きな変数名にして構いません。以後は、その「newした変数名->関数名」に置き換えて下さい。

添付ファイルを添付する

添付ファイルの置き場所:まずは、呼びだしもとのファイルと同じ場所において試してみて下さい。このファイルの置き場所は変更することもできます。
$mail = & new Qdmail();();*1
$mail -> easyText(
       array( 'mailto@example.com' , '宛先(日本語OK)' ),
       'タイトル(日本語OK)' ,
       '本文(日本語OK)',
       array( 'from@example.com' , '配信元(日本語OK)' ), 
       array( 'test.jpg', '添付された時のファイル名(日本語OK).jpg')
 );
なお、添付ファイルの置き場所は、呼びだしもとファイルからの相対パスでも、絶対パスでも指定できます。
例えば、
相対パス「./images/test.jpg」「images/test.jpg」
絶対パス「/home/hogehoge/images/test.jpg」「c:\htdocs\hogehoge\test.jpg」
最初の文字が「/」「¥」「\」の場合は、絶対パスとして解釈しますので注意してください。

複数のファイルを添付する。

これ以降は、$mail = & new Qdmail(); は省略します。

$param[] = array( 'test.jpg' , '添付ファイル名(日本語OK省略も可能).jpg' );
$param[] = array( 'test2.jpg' , '添付ファイル名2(日本語OK省略も可能).jpg' );

$mail -> easyText(
       array( 'mailto@example.com' , '宛先(日本語OK)' ),
       'タイトル(日本語OK)' ,
       '本文(日本語OK)',
       array( 'from@example.com' , '配信元(日本語OK)' ), 
       $param
 );

複数の宛先に送付する

この例では、2人に送っていますが、何人でも追加できます。
toヘッダに複数指定した場合は、その指定された人全員が、全員のメールアドレスを知ることになりますので注意しましょう。
それがまずい場合(ネットサービスでは、ほとんどがそうですよね)は、後で述べるBCCを使いましょう。

複数の宛先に送付する

複数の宛先に送付する (表示名も指定)


$to[] = array('mailto1@example.com' , '表示名1(日本語OK)' );
$to[] = array('mailto2@example.com' , '表示名2(日本語OK)' );

$mail -> easyText(
        $to ,
       'タイトル(日本語OK)' ,
       '本文(日本語OK)',
       array('from@example.com' , '配信元(日本語OK)' ) 
 );
必ず、メールアドレスのキーがゼロ、表示名のキーが1になるようにします。

cc や bcc も追加する。


$address['to'][] = array('mailto1@example.com' , '表示名1(日本語OK)' );
$address['to'][] = array('mailto2@example.com' , '表示名2(日本語OK)' );

$other_heder['cc'][] = array('mailto3@example.com' , '表示名3(日本語OK)' );
$other_heder['cc'][] = array('mailto4@example.com' , '表示名4(日本語OK)' );

$other_heder['bcc'][] = array('mailto5@example.com' , '表示名5(日本語OK)' );
$other_heder['bcc'][] = array('mailto6@example.com' , '表示名6(日本語OK)' );

$other_heder['from'][] = array('from@example.com' , '配信元(日本語OK)' );

$mail -> easyText(
        $address ,
       'タイトル(日本語OK)' ,
       '本文(日本語OK)',
       $other_header
 );
toやccは大文字でも小文字でも問題ありません。
ccやbccは省略可能ですが、toには最低1つの宛先が必要になりますので、注意して下さい。
Fromを指定していた引数の部分が、other_headerに置き換わります。その代わりに、$other_headerの中に、fromを指定しておきます。Fromヘッダーは必須ヘッダーです。

reply-toを設定する

WEBサービスでは、Fromは配信専用にして、reply-toを設定したい場合もあるでしょう。

$var['from'] = array('mailto2@example.com' , '表示名2(日本語OK)');
$var['reply-to'] = array('mailto3@example.com' , '表示名3(日本語OK)');

$mail -> easyText(
       'address1@example.com' ,
       'タイトル(日本語OK)' ,
       '本文(日本語OK)',
       $var  
 );

*1 : PHP5の時は、new 前の "&" は必要ありません。

# nino 2013年01月21日(月) 午前11時37分

すみません。
ここのサンプルコード「cc や bcc も追加する。」のアドレスなどを変更しても
Notice: Undefined variable: other_header in /var/www/htdocs/index.php on line 22 Notice: Undefined offset: 0 in /var/www/htdocs/qdmail.1.2.6b/qdmail.php on line 1933 Qdmail error: Qdmail Version 1.2.6b ,PHP Version 5.3.3
Qdmail error: OS Linux ; PHP Version 5.3.3 ; Qdmail version 1.2.6b
php.ini status: mb_language = Japanese ; mb_internal_encoding = UTF-8 ; mb_detect_order = ASCII,JIS,UTF-8,EUC-JP,SJIS
Qdmail Status debug: 0, log: 0, errorlog: 0
Qdmail error: Tyr Varidate Error by regex preg_match('/[^@]+@[^@]+/') the address is -> line -> 3699
Qdmail error: Illegal Mail AddressSystemValidete Address Method line -> 2770
Qdmail error: Must Header is not exist 'TO' line -> 2232
Qdmail error: Must Header is not exist 'FROM' line -> 2232
Qdmail error: No recipient line -> 2849
Qdmail error: Error happen, see upper line -> 2194
Qdmail error: Send Error line -> 2115
のようになってしまいます。
変数初期化など試してみたのですが何故かわかりません。
何かわかりますでしょうか?
「複数の宛先に送付する (表示名も指定)」は正常に動作しているようです。gmailには届いているので。。。


#  非公開コメント   
  • TB-URL  http://hal456.net/qdmail/057/tb/
  • easy型の使い方(ver1系) Qdmail - PHP::Mail Library , Quick and Detailed for Multibyte spok
    バージョン0系と1系では、easyモードの使い方が異なります。バージョン0系については、バージョン0系のeasyモードの使い方をご参照ください。easyモードの使い方(バージョン1系)easyモードは、オブジェクト指向型でなるべく簡単に、様々なメールを送信...