smtp用メールデータのみを取得する

2008/08/13 未分類 spok
(この機能は、バージョン1.0.3b以降です。0系では使用できません。)

Qdmailで作成したsmtp用メール全データを渡すメソッドです。
このメソッドでは、送信されることはありません。
Qdmailでメールデータだけを作成し、他のSMTP送信ソフトなどで送信する場合などにご利用ください。
$mail -> smtpData();
このメソッドで、以下のようなsmtp用のデータを取得することができます。
(ヘッダー)
CRLF
(本文、添付ファイル等のマルチパートも含むデータ)

メールデータサイズを知る

2008/08/13 未分類 spok
(この機能は、バージョン1.0.3b以降です。0系では使用できません。)

Qdmailが作成したメールのバイト数を知ることができます。
例えば、デコメなど容量制限のあるサービスを使用する際には、事前にメールのデータサイズを把握しておく必要がありますってことで。
注意点
メールのヘッダーは、中継サーバーがヘッダー情報を加えていきますので、最終到達地点の正確なヘッダーデータサイズを知ることは不可能です。ここで照会するヘッダーサイズは、あくまでもQdmailが作成したヘッダーサイズです。本文サイズは、変わることはありません。

メール本文のサイズ

$mail -> sizeBody();

メールヘッダーのサイズ

$mail -> sizeHeader();

メールの全サイズ

$mail -> sizeAll();
メールヘッダーとメール本文の間には、CRLFが入りますので、
全サイズ = ヘッダーサイズ + 本文サイズ +2バイト(CRLF)
の関係が成り立ちます。

言及&リンク御礼

2008/08/08 未分類 spok
◎設置が簡単。
◎viewに本文を入れられる。
◎コントローラーがスッキリする。
◎文面は elements フォルダにがんがん作れるので送信する内容が多くても管理しやすい。
qdmailの使い方-秀ブログ
ググれば解決法はいくらでも見つかるんですが、
この時期にあえてちゃんとライブラリとしてだす所がいいですね。
cakePHP メール送信はもうこれでいいでしょ -LoveIT - 安江ブログ
いつか確実に使う機会がありそうなんでめもめも
PHPでデコメール Qdmail-LoveIT - 安江ブログ
デコメールは各キャリアによって仕様が異なっているため、送信・変換が簡単にできるのは嬉しいですね。
全キャリア対応のデコメールの作成・変換が行えるPHPライブラリQdmail  ke-tai.org

CAP-LABテクニカルさんのCakePHP高機能メールコンポーネント-Qdmail オススメ
国ごとにCakePHPを含めたフレームワークの検索キーワードランキングを調べてみた-ねねとまつの小部屋
CakePHP でメールを送信する機能は色々な方が作成されていますが、今回は Qdmail を利用してみました。
Qdmailで日本語のメール送信-CakePHPクッキング
なんの問題もなく、快適に動作しました。
すばらしかー。
CakePHPで日本語メールの送信-"42"
使ってみたらと言われたのが Qdmail
メール送信ライブラリ Qdmail-PodTV開発日誌(symfony風味)
結構簡単に実装できますた。
CakePHP :「Qdmail」コンポーネントで送信されたメール内容が変-yahoo!ブログからの移民
Qdmailなるものを発見。
これは使えそう。
Qdmail-Am I Wry? No
なんてったって、PHP4に対応してんのが、本当にありがたい。
CakePHPその17 ~Qdmail Component~sandmanの旅行の写真”とか”

デコメール

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

ここでは、日本の携帯端末特有のデコメの送り方について説明します。

前提として、テキストメールHTMLメールの送り方は、知っておいて下さい。

基本的な送り方

例を示します。
$mail = & new Qdmail();

$body = '<html><body bgcolor="#aabbff">
<h1>HTMLメールテスト</h1>
<b>太字</b>
<font color="red">文字色を変えてみます。</font>
<div>画像はこのように</div>
<img src="cid:test2.jpg">
<div>文章中に置くことができます。</div>
<p>Send by Qdmail</p>
<div>携帯端末、キャリアによって使えるHTMLタグが違いますので注意してください。</div>
<div><a href="mailto:address@example.com">メールはこちらへ</a></div>
<div><a href="tel:00-0000-0000">電話はこちらへ</a></div>
</body></html>';


$mail -> easyDeco(
      array('address@exaple.com' ,'宛先(日本語OK)' ),
      'デコメのテスト' ,
      $body,
      array( 'from@example.com' ,'配信元(日本語OK)'),
      'test2.jpg'
 );
PHP5の場合は、new の前の"&"は必要ありません。
test2.jpgという名前の、適当な画像ファイルを、貴方のほうで準備しておいてください。もちろん、ファイル名はアルファベットと数字であれば、なんでも構いません。(cid:との連携は必要)

インテリジェント・デコメ・システム

通信キャリア(ドコモ、au、ソフトバンクモバイル、イーモバイル)は、それぞれデコメの仕様が異なりますが、Qdmailは、その違いを吸収して、@以下のアドレスで、キャリアを判別し、それぞれに適した形にHTMLメールを加工して、メールを送ります。

ただし、端末毎の違いをすべて検証すたわけではありません。場合によっては、表示が崩れることもあるかも知れません。
その際は情報をお寄せいただければ、幸いです。
技術的参考記事:CPA-LABテクニカル-デコメール携帯4社MIMEマルチパート比較

キャリアをごちゃまぜにして、一度に送る

ちょっと複雑にみえますが、テキストメールの送り方を理解していれば簡単です。
test2.jpgとtest3.jpgという名前の画像ファイルを適当に用意してください。
$mail = & new Qdmail();

$to[] = array('××××××@docomo.ne.jp','ドコモ端末さん');
$to[] = array('××××××@ezweb.ne.jp','au端末さん');
$to[] = array('××××××@softbank.ne.jp','ソフトバンク端末さん');
$to[] = array('××××××@emnet.ne.jp','イーモバイル端末さん');

$body = '<html><body bgcolor="#aabbff">
<h1>HTMLメールテスト</h1>
<b>太字</b>
<font color="red">文字色を変えてみます。</font>
<div>画像はこのように</div>
<img src="cid:test2.jpg">
<div>文章中に置くことができます。</div>
<p>Send by Qdmail</p>
<img src="cid:test3.jpg">
<div>携帯端末、キャリアによって使えるHTMLタグが違いますので注意してください。</div>
<div><a href="mailto:address@example.com">メールはこちらへ</a></div>
<div><a href="tel:00-0000-0000">電話はこちらへ</a></div>
</body></html>';

$attach = array('test2.jpg','test3.jpg');

$mail -> easyDeco(
      $to ,
      'デコメのテスト' ,
      $body,
      array( 'from@example.com' , '配信元(日本語OK)'),
      $attach
 );
コツtips
  1. 画像のリンクは、”cid:ファイル名”とし、ファイル名を同じにします。これはコンテンツIDといいますが、別途指定することもできます。デフォルトは、ファイル名です。
  2. easyDecoモードでは、複数の宛先を指定しても、それをQdmailがひとつづつに分解し、1通ごとにメールを送付します。(そうしないこともできます。)
  3. 使える画像の種類、容量はキャリアによって異なりますが、携帯端末にはごく小さなファイルしか送れないと理解しておいたほうがいいでしょう。詳細は各キャリアの仕様をみてください。

htmlメール

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

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

メールアドレスだけの場合'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')...

htmlメール

ここで説明するのは、画像をインターネットに置いておくタイプのHTMLメールです。
HTML内に表示する画像もいっしょに送るタイプは、「インラインHTMLメール」といい、別項にて説明します。デコメは、インラインHTMLメールであり、日本の携帯端末向けのデコレーションメールは、別に説明します。
require_once('qdmail.php');
$mail = & new Qdmail();*1

$mail -> easyHtml(
      array8 'mailto@example.com' , '宛先(日本語OK)' ),
      'タイトル(日本語OK)' ,
      '本文(日本語OK)',
      array( 'from@example.com' , '配信元(日本語OK)' )
 );
Htmlの部分が変わった以外は、easyText と全く同じです。
添付ファイルやその他のヘッダーの設定の仕方も同じです。
もちろん、'本文(日本語OK)'の部分には、htmlで内容を書かなくてはなりません。
Qdmailでは、htmlメールを解析することができないメーラーや、ポリシーとしてhtmlメールを読まない方にも、内容だけは届くように、htmlメールから、代替テキストを自動的に生成して、メールに添えています。
このオプションは変更することもできます。

HTMLメールの例

ここでは、簡単なhtmlメールの内容の例を書いておきます。
$body = '<html><body bgcolor="#aabbff"><h1>HTMLメールテスト</h1><b>太字</b><font color="red">文字色を変えてみます。</font><p>Send by Qdmail</p><div><a href="mailto:address@example.com">メールはこちらへ</a></div></body></html>';
$mail -> easyHtml(
      array('address@example.com' , '宛先(日本語OK)') ,
      'タイトル(日本語OK)' ,
      $body,
      array('from@example.com' ,'配信元(日本語OK)')
 );
このHTMLは古い書き方ですが、わかりやすいのであえて、古い方法で書きました。

*1 : PHP5では、"&"は必要ありません。