ようこそゲストさん

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

基本的な使い方-OOP編

$mail -> send() 型

簡単Qdmailのオブジェクト指向的送り方です。
OOPではない指定の仕方もありますが、出来る限りOOP方式をお薦めします。
文字コードは、Qdmailが自動判別します。

基本的な送り方( text メール)

$mail = & new Qdmail();

$mail -> to( 'address@example.com' , '宛先日本語名' );
$mail -> subject( 'タイトルも日本語で' );
$mail -> text( 'ここに内容をいれます' );
$mail -> from( 'from@example.com' , '配信元日本語名' );

$mail ->send();
文字コードは、Qdmailが自動判別し、デフォルトでもっとも文字化けが起こりにくいiso-2022-jpで送ります。
「日本語名」は省略できます。
PHP5では、newの前の & は必要ありません。

cc,bcc,reply-to

cc,bcc,reply-toは次のように指定します。
$mail -> cc( 'address2@example.com' , '宛先cc日本語名' );
$mail -> bcc( 'address3@example.com' );
$mail -> replyto( 'address4@example.com' , '返信先replyto日本語名' );
※bccでは、宛先表示名は意味がありませんので、指定できません。

この場合、reply-toは、ハイフンを抜いてreplytoで指定しますので、気をつけて下さい。

複数宛先の指定方法その1


$to = array( 'address1@example.com','address2@example.com','address3@example.com' );

$toName = array( '宛先1の日本語名','宛先2の日本語名','宛先3の日本語名' );

$mail -> to( $to , $toName );

cc,bccも同様です。from,reply-toは、ひとつしか設定できません。


複数宛先の指定方法その2


$to[] = array( 'address1@example.com' , '宛先1の日本語名' );
$to[] = array( 'address2@example.com' , '宛先2の日本語名' );
$to[] = array( 'address3@example.com' , '宛先3の日本語名' );

$mail -> to( $to );
cc,bccも同様です。from,reply-toは、ひとつしか設定できません。

複数宛先の指定方法その3

$to[] = array( 'address1@example.com' , '宛先1の日本語名' );
$to[] = array( 'address2@example.com' , '宛先2の日本語名' );
$to[] = array( 'address3@example.com' , '宛先3の日本語名' );

foreach( $to as $addr_and_name ){
  $mail -> to( $addr_and_name  , null , true );
}
point
$mail -> to()の第3引数を true にするのがポイントです。
この第2引数は、これまでに設定されていたメールアドレスに「追加するか、上書きするか」を指定しています。
$mail -> to()の第3引数
追加true
上書きfalse
cc,bccも同様です。

htmlメール

$mail ->text('内容');の代わりに
$mail ->html('htmlメールの内容を入れます。');
とするだけです。
Qbmailのデフォルトでは、自動的に代替テキストが作成されます。
これでhtmlメールを読むことができないメーラでも、内容を読むことができるようになります。
例えば、原則としてテキストメールしか読めない*1秀丸メールや、携帯メールなどに送るときに有効でしょう。

この自動テキスト生成機能は、OFFにすることもできます。
$mail->send();の前に
$mail -> autoBoth(false);
としてください。

*1 : そのようなポリシーのメーラー

# K Fan 2008年05月02日(金) 深夜3時39分

はじめまして。
メールの文字化け対策に悩んでいたところ、発見しまして使用させていただきました。

一点だけ間違いを発見しました。
このページの基本的な送り方の

$mail = & new Qdmai();

new Qdmailのlが抜けています。

# spok 2008年05月07日(水) 深夜1時41分

K Fanさん

ご指摘ありがとうございます。
まさに基本的な部分でタイポしまして申し訳ありません。
修正しておきました。
バージョンアップもしましたので、ぜひご利用ください。(0.8.0a)

# LG23 2008年11月13日(木) 午前9時38分

はじめまして。
メール送信を簡単にしてくれるのでいつも使わせていただいてます (^^)

一つ困ってしまったことがあるのですが、cakePHPで使用する際、
$Qdmail->ccや$Qdmail->bccとして指定したcc、bccのクリアは
どのようにしたらよろしいのでしょうか?

$Qdmail->cc('')としてもバリデートエラーが返ってきてしまいます。
教えていただけたら幸いです。

# spok 2008年11月13日(木) 午後8時38分

こちらをご参照ください。

http://hal456.net/qdmail/reset

# custar 2008年12月20日(土) 午前11時30分

function subject() で設定したサブジェクトの文字列は、
下記 (2)-(4) において、$this->subject['CONTENT'] に格納されます。

引数をもたずに呼び出される subject() の返り値は、(1) において、
$this->subject が返されています。

しかし、期待される subject() の返り値は、$this->subject['CONTENT']
ではないでしょうか?

そうであれば (1) は、

return $this->subject['CONTENT'];

が宜しいと思いますが、いかがでしょうか?



function subject($subj = null)
{
 if (is_null($subj))
 {
  return $this->subject; ................................. (1)
 }
 
 if (is_string( $subj ) || is_numeric( $subj ))
 {
  $this->subject['CONTENT'] = (string) $subj; ............ (2)
  return ...
 }
 elseif (is_array($subj))
 {
  $subj = array_change_key_case( $subj , CASE_UPPER );

  if (isset($subj['CONTENT']))
  {
   $this->subject = $subj; .............................. (3)
  }
  else
  {
   $this->subject['CONTENT'] = (string) $subj[0]; ....... (4)
   ...
  }

  return ...
 }
 else
 {
  return ...
 }
}

# spok 2008年12月20日(土) 午後10時27分

ご指摘ありがとうございます。検討させていただきます。

# tkm 2013年04月09日(火) 午後5時08分

はじめまして。
下記の件で悩んでおります。

「複数宛先の指定方法その2」の方法で宛先、CCを指定しています。
toは大丈夫なのですが、
ccは、初めの1件目しか送信されません。
(アドレスを変更しても同様です。)

なにかお気づきの点などありましたらご指摘、ご教授お願いいたします。

以下記述-----------------------------------------
$to[] = array($toAddress1,$toName1);
$to[] = array($toAddress2,$toName2);
$cc[] = array($ccAddress1,$ccName1);
$cc[] = array($ccAddress2,$ccName2);

require_once('/qdmail.php');
$mail = new Qdmail( 'UTF-8' , 'base64' );
$mail -> errorDisplay( false );
$mail -> to( $to );
$mail -> cc( $cc );
$mail -> subject($subject);
$mail -> text( $body );
$mail -> from($userAddress,$username);
$mail ->send();
-------------------------------------------------
//Qdmail ver 1.2.6b


#  非公開コメント   
  • TB-URL  http://hal456.net/qdmail/08/tb/
  • 添付ファイルの指定 Qdmail - PHP::Mail Library , Quick and Detailed for Multibyte spok
    添付ファイルのOOP的指定方法です。オブジェクトの生成や他のアドレスの指定は省略します。それらは、基本的な使い方-OOP編をみてください。Qdmailでは、いくつでもファイルを添付することが出来ます。簡単な指定方法$mail -> attach( '...
  • デコメの送り方(OOP) Qdmail - PHP::Mail Library , Quick and Detailed for Multibyte spok
    ■デコレーションメール日本での携帯端末向けの機能です。(ver0.7.2a以降)デコメは、ここで紹介する以外に、簡単デコメ機能(easyDeco)を利用することもできます。 ひとつの宛先にデコメを送付する$mail = & new Qdmail()...