ようこそゲストさん

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

Qdsmtpのログ設定と同期を取る

QdmailとQdsmtpを併用している場合、Qdmailのログのレベルを以下のメソッドで、Qdsmtpに渡して、同レベルのログをとるよう、Qdsmtpに指示することができます。
$mail -> smtpLoglevelLink( true );

# 改行コードを挿入したい 『■Qdmailのバージョン 1.2.6b メール送信時に本文に動的に改行を入れたいのですが、 \n、\r\nを入れても改行されま...』 (2009/03/15 20:03)

# fivestar 『バグ報告なのですが、sfQdmail::addBcc()メソッドがbccではなくccに追加するようになっています。修正をお願いい...』 (2010/03/09 24:25)

# mkt 『Qdmail.phpと、Qdsmtp.phpをインクルードパス配下に置き、 下記の記述をしましたが(★は該当の値に変更)、 「5...』 (2012/10/30 16:10)

サポート過去ログ3

# ひじり 2008年10月09日(木) 午前9時42分

いつもお世話になっております。
テンプレート機能を使い、一斉送信用のSMTPサーバにて送ろうと思ったのですが、

QdSmtp error: Unkown Error :status502 message:502 Command not implemented on EHLO [サーバ名]
line -> 538

というエラーが出てしまいます。
対象SMTPサーバがEHLOに対応していないということだと思いますが、
サーバを検討する以外に、HELOで送るようにするなどの回避策はありますでしょうか?
ご教示よろしくお願いします。

# spok 2008年10月09日(木) 深夜0時23分

EHLOでエラーの場合は、HELOコマンドに切り替えるようにしたつもりですが、バグがあるようです。

緊急避難措置ですが、以下のようにすればHELOで通信するはずです。

function sayHello()
を探していただき、その数行下の、

array( 'EHLO' , $this->smtp_param['HOST'] ),

をコメント//で機能しないようにしてみてください。

次回更新時にはきちんと直したいと思います。


# ひじり 2008年10月10日(金) 午前9時25分

コメントアウトしたところ、問題なく送信されました。
サーバの方が対応できなかったので、助かります。
お忙しいところ、ご返信ありがとうございました。


# spok 2008年10月11日(土) 午前11時52分


qdsmtp.0.1.9aにバージョンアップしました。たぶん、これで大丈夫だと思いますが、Heloしか通じないSMTPサーバーという環境が手元にないため、万が一だめだったら、同じようにコメントアウトしてください。


# ひじり 2008年10月14日(火) 午後4時48分

ありがとうございました。
HELOに切り替わったようですが、別のところでエラーが発生してしまいました。
たびたび申し訳ありません・・・。

QdSmtp error: Failure :status553 message:553 Reject relay on RCPT TO:<宛先>
line -> 545
QdSmtp error: Error RCPT setting line -> 491
QdSmtp error: Error :status503 message:503 Bad sequence of commands on DATA
line -> 548
QdSmtp error: Error Data sending line -> 504
Qdmail error: Qdmail Version 1.0.7b ,PHP Version 4.3.9
Qdmail error: No send . Because SMTP mail method replied error line -> 1786
Qdmail error: Error 'TO' Separate mode in Sendbase function , the Address is -> 宛先 line -> 1714
Qdmail error: Send Error line -> 1731

RCPTはEHLOが使える環境でしか有効にならない?のが原因なのでしょうか。

# spok 2008年10月14日(火) 午後7時58分

ひじりさん

>RCPTはEHLOが使える環境でしか有効にならない?のが原因なのでしょうか。

違うと思います。
Heloコマンドということは、SMTP AUTHは使えないはずなので、POP BEFORE SMTPをたぶんお使いと想像しています。たぶんPOP BEFORE SMTPの時間切れではないかと想像(あくまで想像)しているのですが。。。


以下の情報をお寄せ下さい。
(わかる範囲で)

■Qdmailバージョン
■QdSmtpバージョン
■PHPのバージョン
■OS名称 & バージョン
■お使いのソースコード(公開されて支障がある部分は適当に変更してください。)


# ひじり 2008年10月15日(水) 午後2時24分

ありがとうございます。
今回使用しているサーバは外部に委託して作ってもらったものなので、
POP BEFORE SMTPのあたりも聞いてみたいと思います。

サーバと同じネットワークにあるメールアドレスだと問題なく送れるので、
これで踏み台にされないような制限かかっているのかもしれません。

■Qdmailバージョン → 1.0.7b
■QdSmtpバージョン → 0.1.9a
■PHPのバージョン → 4.3.9
■OS名称 & バージョン → red hat linux ver3
■お使いのソースコード
$smtp = array(
'host' => '鯖名', 'port' => ポート番号, 'protocol'=>'SMTP',
);
$option = array(
'type' => 'text',
'smtp' => $smtp,
'option' => array(
'simpleReplace' => true,
),
);
$from = array(DEF_ADMINMAIL, DEF_ADMINNAME);
return qd_send_mail($option, $data, $subject, $body, $from, $attach, 0);

FROMに送れるメールアドレスを設定して、
REPLY-TOに問題のあるメールアドレスを入れれば送れるかな?とも思ったのですが、やっぱりだめでしたorz

委託先に詳しい環境を問い合わせてみますが、
テンプレートメールの簡単なフローを教えていただくことは可能ですか?

# spok 2008年10月15日(水) 午後9時16分


ひじりさん

>サーバと同じネットワークにあるメールアドレスだと問題なく送れるので、
たぶん、第三者中継を制限しているサーバーかと思いますが、最近はそのような設定が当然です。
(参考)http://hal456.net/qdmail/smtp_method

で、ソースをみると、'protocol'=>'SMTP',なので、そのサーバー管理以外のメールアドレスに送信できないのは当然です。

EHLOコマンドが使えないサーバーで、第三者中継(そのサーバーが管理しているメールアドレス以外への配送)をしようと思えば、現状ではPOP BRFORE SMTPしかありえません(通常は)。

イマドキ、EHLOが使えないサーバーを新たに構築するとは思えないのですが、現状がそうなっていて、かつ、POP BEFORE SMTPも、使用不可能とすると、そのサーバーは、第三者中継をすべて拒否する、という設定なので、自分が管理するメールアドレス以外は、拒否するはずです。

そのサーバーでは、通常のメールソフト(例えばOutlookExpress)で、その送信サーバーを指定しても、たぶん、送信できないかと思いますのでお試し下さい。つまり、どんなメーラでも、全くの第三者への送信は、そのサーバーではできないと思います。

しかし、いくらなんでも外部に提供する送信サーバーであれば(かつSMTP AUTHをサポートしてない)、POP BEFORE SMTPはサポートしているはずです。

ともかく、EHLOが使えないなら、POP BEFORE SMTPなので、当該設定を送信サーバー管理者から聞き出して、Qdmail,QdStmpもPOP BEFORE SMTPを設定すれば送信できると思います。

または、SMTP AUTHぐらい使えるように(つまりEHLOコマンドが使えるように)、サーバー管理者に頼むのがセキュリティ上も、運用の楽さからいっても、一番よい解決方法かと思います。

# spok 2008年10月15日(水) 午後9時20分

なので、

>テンプレートメールの簡単なフローを教えていただくことは可能ですか?

という問題点ではないかと思います。あくまでもSMTPサーバーが要求する設定とQdmailの設定がずれている、ということかと思います。

# ひじり 2008年10月16日(木) 午前9時57分

色々とありがとうございます。勉強になります。
サーバ自体のEHLOは有効なのですが、中に入っている送信用ソフトがEHLOに対応していない(又聞きの情報なので曖昧です…)らしく、構築時、使用するためのドメインも聞かれたということなので、まさに第三者中継をすべて拒否する、ということになっているのかもしれません。
どうにも埒が明かないので、直接委託先に問い合わせてみます。
こちらの環境の問題でお手間をとらせてしまって恐縮です。

せっかくの素晴らしいライブラリなので、これからも積極的に使わせていただきたいと思います。
ありがとうございました。

# kt 2008年10月18日(土) 午後10時32分

いつもご利用させていただいております。

OE6の本文に
「send-by MailFunction
Date: Sat, 18 Oct 2008 22:24:47 +0900 (JST)」
というメッセージが付くようになりました。

送信方法はqd_send_mailで、text形式で送信しています。
バージョンは最新の物を使っています。

ただ、送信先のメールアドレスによって付いたり付かなかったりするので、
メールサーバの問題かも知れませんが、、mb_send_mailで送信した時は付きませんでした。

原因の切り分けが出来ていないので、Qdmailが原因か否かわかりかねますが、、
念のため質問させていただきます。

# spok 2008年10月18日(土) 午後10時59分

おそらく送信サーバーが、CRLFをCRCRLFに変換してしまっている可能性があります。
>送信先のメールアドレスによって付いたり付かなかったりするので
という点がよくわかりませんが、場合によっては受信サーバーで改行コードがなんらかの原因で変換されている可能性もあるかと思います。
たぶん改行コードをLFのみにすれば、とりあえず現象はおさまると思いますので、
http://hal456.net/qdmail/trouble_4
を参考に改行コードをLFのみにしてみてください。
(あまり根本的な対応ではないのですけれど)

それでも、症状が改善しない場合は、別の原因を考える必要がありますので、お手数ですが、再度ご連絡ください。
その際は、
■Qdmailバージョン
■QdSmtpバージョン
■PHPのバージョン
■OS名称 & バージョン
■MTAの種類(sendmailかPostfixかqmailか)
■お使いのソースコード(公開されて支障がある部分は適当に変更してください。)
■ソースコードの文字コード、改行コード
■デバッグモード http://hal456.net/qdmail/debug での出力内容
をお知らせ下さい。



# kt 2008年10月18日(土) 午後11時47分

おっしゃる箇所が原因でした。¥nのみしたら、上記の現象は発生しませんでした。
ずっと悩んでいたのですが、助かりました。ありがとうございます。

ちなみに自分はqdmailのソースを直接変更したのですが、
「ユーザーのソースコード内での改行コードの変更」の例はオブジェクト形式だったので
簡易送信の場合はどうしたらいいのかな?と悩みました。
(もし読み違えていたらご指摘下さい)

# spok 2008年10月19日(日) 午前8時41分

とりあえず、症状がおさまってよかったです。
qd_send_mail形式の場合のLFのみのやり方もマニュアルに追加しておきました。
なお、qd_send_mail形式で、$mail->method( $param );
の場合は、どのメソッドであっても、$option にて指定することができます。
http://hal456.net/qdmail/qd_send_mail_option
をご参照下さい。


# spok 2008年10月19日(日) 午前9時45分

ひじりさん

他にも、その送信サーバーを呼び出すホスト名(やIPアドレス)を登録してもらって、第三者中継ができるようにしてもらえば、SMTP AUTHやPOP BEFORE SMTPを利用しなくても、送信できるようになるかと思います。

たぶん、その送信サーバーはqmailですね。
Qdmailと1文字違いですが、あまり推奨できないMTAです(独断と偏見)。

# okd 2008年10月20日(月) 午後6時51分

spok 様
はじめまして。
いつも利用させて頂いております。okd と申します。
デコメテンプレートの相互変換 ( dmt <-> khm <-> hmt) について教えてください。

インライン画像を含んだ dmt ファイルから、インライン画像を含んだままで au 用テンプレートファイル ( khm ) 、 softbank 用テンプレートファイル ( hmt ) へ変換したいのですが、 Qdmail 、 QdmailReceiver で実現することは可能でしょうか?

確認のため、以下のことを行いました。
1. spok 様サンプルコード ( http://hal456.net/qdmail/deco_template_convert ) を動作確認環境にて実行。実行時、サンプルコード内の変数 $content には、インライン画像を含む dmt ファイルを指定。
2. サンプルコード同様 makeDecoTemplate('TPL_AU',$content) と実行し、結果を echo する。
3. 変換後のテンプレートファイルに、インライン画像の記述がないことを確認。

上記サンプルコード以外のページも確認し、 $mail -> inlineMode( true ); などともしてみたのですが、結果は変わらず。。。
もし可能であれば、手順など御助言頂きたく、何卒宜しくお願い致します。
okd


# spok 2008年10月20日(月) 午後8時36分


okdさん

以下の情報をお寄せ下さい。
■Qdmailバージョン
■QdReceiverバージョン
■PHPのバージョン
■OS名称 & バージョン
■お使いのソースコード(公開されて支障がある部分は適当に変更してください。)
■ソースコードの文字コード、改行コード
■当該dmtファイルの内容(支障がある場合は、非公開コメントにチェックしてお知らせ下さい。)

をお知らせ下さい。

# okd 2008年10月20日(月) 午後9時02分

spok 様

 早速の御返信、ありがとうございます。
以下に情報を記載させて頂きました。
不足があるようでしたら、教えてください。
何卒宜しくお願い致します。

■Qdmailバージョン
  • > 1.1.7b
■QdReceiverバージョン
  • > 0.1.4.alpha
■PHPのバージョン
  • > PHP 4.4.4
■OS名称 & バージョン
  • > Windows XP SP2
■お使いのソースコード(公開されて支障がある部分は適当に変更してください。)
  • > 以下
<?php
include('qdmail_receiver.php');
include('qdmail.php');

$file = 'templatefile.dmt';
$mail = & new Qdmail();
$content = file_get_contents($file);
$au_template = $mail -> makeDecoTemplate('TPL_AU',$content);

echo($au_template);
exit();

?>
■ソースコードの文字コード、改行コード
  • > EUC-JP、CR+LF
■当該dmtファイルの内容(支障がある場合は、非公開コメントにチェックしてお知らせ下さい。)
Decomail-Template
MIME-Version: 1.0
Content-Type: multipart/related;boundary="2000000000"
    • 2000000000
Content-Type: text/html; charset=Shift_JIS
Content-Transfer-Encoding: 8bit

<html>
<body bgcolor="#ccffff">
<div align="center">
<IMG SRC="cid:00">
</div>
<font color="#cc99ff">
<div align="center">ここに</div>
<div align="center">メッセージを</div>
<div align="center">書いてね☆</div>
</font>
<div align="center">
<IMG SRC="cid:01">
</div>
</body>
</html>
    • 2000000000
Content-Type: image/gif; name="CD301338_head.gif"
Content-Transfer-Encoding: base64
Content-ID: <00>

R0lGODlh8ABMALMIAMz//+XD//Dc/8wz////mZnM/wD//////////wAAAAAAAAAAAAAAAAAAAAAA
AAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFMgAIACwAAAAA8ABMAAAE/xDISau9OOvNu/9gKI5k
aZ5oqq5s675wLM90bd94ru98Ofy9oHBI/AUCQNyAyFz9ls3N4EiFRq9Yy9KapUyp1UrSxe3eyp/y
c8IdZ9ZsUvu5BYPdbhZakjcH5xeAUgB7JkZHT3Z3gz5xfF6Fj4F+jD5qdCBweJB0fXx2h4pIkYQn
UKcYpJOQjnIzqo2GkV+ggYq0okheu7yrWqWwqb+sWp1wwmStwWm+Ypm4i2K3udFsxrLLUte9hNBh
kq1pnryozubJxdfe317U7p7Zccbzpdbze7Cht+mYHlsc/0j12Rar3S19oO65o4aPE7hxfCB2yzUQ
4LtC8SIGO5ZqzgACIP8JSKwnZhvCKutQJlx4sNm/km+AdXw3TENKdudQbLmHadbHkCFH2pTG8J2o
mwc3CiUHziDDZZ0WtnHEUdCzbD+Aah0TTw3Loke/4nSiTAvLU3jo3JE6yGfMXy+1aZ2bkeonsXjz
6rpnk2BNW2xl3qX4VFvcpsiYkuw4l67Ht2b1Sla56CRGyw25IUWkcbBkeoZykrSCdk7jxlPrbp78
9AuQk5wjH824Gg1s1lZDgOb2iPTP01t9Y3yzmvXRbjsZaqyjXHRJtm2MU7RmCrI9a8BR61YoPa/X
1iiRki4pXLzt7vvIyvmdHehAfOuK40YyVnzY5pPQXoSHvlbfpbPI1V7/cMUA1t9XAiToFx8JNujg
gwkeEeFxHe0E4YPwdAOhdD5Vg9xSAg64lT8HUnHhie89ceKKLAqwUYsK2gRji/7JFg00HkGVlYgE
IuaUZDPCOEeQRDaYIRszqjIAhEu62GSQ+DRYS3yewWcMj451IJ+ERSZJWpdE9vMGlNoY2cmFKjpI
0JMO7vUgZ96Uh+WAAC7UJZtkEgLmnhx5kadhaKHIk5oMoqknk4dKidacWAqFy55q4plkoZDemcqk
4dgzD4pm/mAoIVzGSKmRiZK6I6Mi9qkFn552CuYplb4aZYsjtQqppKQul8eaXJ6C6pxirnprP7ji
qiCssVpazIqOJiuk/ynHsPdrqhClWaRttjpp7JfOhskPmgsi2S2zZEz76zjG0kpcEtY6ac21RvJZ
EovZDjQuvWRIay61wr4qQrDpMnvmtXjIKsa9+Lag7750qnFrCgHTW5rBpXrrJ8Lk6rEww9k5TLEp
lSIrb8VQEiurms+Gu9jKXnAM7MESswkiQBJnHHHCN6OZa7bH8mxmz7TiOXNTp7rcnscxq2pIzIL6
bHHO6lb8GrmvOR31UMQZTSfMCb9gtYskH5tsoLGWxy2KEQ3bGUDsbqw1SJdILIPTU+s8toZ3j4kv
1DYXYBtc9rxNVyDp1vVvsVuEbHO3AgX89dO7Ru6R4EH1xaThzwjMN/+GPmtS87MyCuxsZgP4zTbl
IikVbAw3bx6ppLp4Nlsi060edoyuf0p06RIVbbTSTOT+JkW3kXaW7OHRkhaFJNOte7QFRC+Q4MDz
0MmoLOLVU3ObGU98jaC2hJBaByXUyw/R+z1VRG9X/9/12ERaMXrRTYccfsW3NNFx8aXEF8ulk94B
MEK9TZTpcoYIALhKNIof+QczVYkPhW7CnJUwbyjoS98A8UG5oX0Nc9gTAJxKJBzuEc9Gxwsf//SC
lfQJcDx84JHvgMMuLV0NUHSQUmVwsSVEEKt7yBuLCr+inxV6B2vdcKHfNoicGDZshqjpStBsJ654
zU5XPWwgG1JIQRT/BmaIlWHhuvigxBc+5Il0OFpppEArQgViQlKJHVG8470rBlGLcwQF+GCTHLFE
ThllXOL6oJi6ydFQHmy81ocq6EfC3cd+YPRQJGPjxVHAjxOXJB/twBeRQARyAAOs0P/IE8Xr2ESB
YXqSD8UoyjV08Y5y3KL5HMlJSxTRh5nyZBlBuUZsuGcjnAgTHHHDm1TMRpYXxGKtLuk1KvImg+nj
5SlMpxNmSnFG9KFfMWmJkjwKkRLVVCJXdqWwNNCoP65RQ0cwqbRQDA2c4oBfZkYQIEZM4UIMtKTZ
/khP98Hzn91QJs2Gl896WgegCIWYOit0MRHm85u7A2FCJ5qJmNTvbZF09CE5icYyinpUPYSbw2wm
48xc+vOjKK0BPW5TmMSk9KXB09JF7iBRmNrUBqrjHzNvytMrdEVlPQ1qE3bjHKEa9Z9/O6pSPTqc
pToVqdR5qlQpga2pWvWqWM2qVrfK1a569atgDatYxxqCCAAAIfkEBTIACAAsAgAFAOwAQgAABP8Q
yUmrvTjrzfsMXiiOZGleQXqubOu+cCxjIDjfmnrbeI/zIyAixQPqLESKMLQsHWXNYdRH3Smbxmit
upp2ip9rjsb9sZ7S5Eb99JaHZ4lNG6wc3Wsq3rRH9vVKdhl0W05Idn95M2ByMViBb05EanxolZNC
iY2QIpRkcKCcYTCakYJ1mKkqpaOOqUyhg3Beli6spptyOkW0tSe3XySeg74fwK2quHVhS8Vbx6dW
LzWqmLE90MppnZvZZt1tYkHFXRze2ty5x8NmU84os8pz6KbnhXqr0bKn84to5/T46OtETlumaIzY
GQIYsGG9W8kGxmvhiaHDdHG4FDS374rFiwb/EX0E2QrdRpI+7qF01BHfSoMnx7ycSbOmTZojb7bU
ybOnz59AgwodSrToNaNIkypdyrSp06dQo0qdSrWq1atYs2pVenCr15U5v4rdObasqz0Kzar9AqDZ
obBrpw6bGzOuXX4G4N7NmiWv3r1VKQUwQPgvYKq8CPsVdbhxM8Uq6zVGSk2xASmTM+ewnDeU4aOa
eya2TG1b6L1sOBcG9TntaZJ3PqjubKRK5Ndgscy+je8zboyDdrOuOw2lb6eZBpPGPKQtoJrHESuH
zKsrKZtaonN9BRqYu08muRv7LW+OeOOKyJf5JxJkFu3qd/KOxKgR/PjwPDpsRhx/YP9G3QcgHlEC
DihUgQaKdh5jCX7lVoN20QGhWrxMuBZ/FpYVAQA7
    • 2000000000
Content-Type: image/gif; name="CD301338_foot.gif"
Content-Transfer-Encoding: base64
Content-ID: <01>

R0lGODlh8ABNAKIHAMz///Dc////mcwz/2b//+XD/5nM/////yH/C05FVFNDQVBFMi4wAwEAAAAh
  1. QQFMgAHACwAAAAA8ABNAAAD/wi63P4wykmrvTjrzbv/YCiOZGmeaKqubOu+cCzPdG3f5KDvOu7/
wAXvMWzwBsaAchnoBZ/Qlo6JFA6oVmazetVio+CwqKutAsjLHjo99ZYVx514Ho07z+4mPN929/N6
f0p3dIUwRYKDSGtYjIqATZCKjnqGllKNgIualIOSn5GacISXpR+MiVSdoaCtXqs7bGamtBKIfJCp
rru8j6+1wA5/sb3Fxsads8G0qavHz9CfysullLrR2Nlf1IZ3ztrg4ZNH3FBtauLp6qq/5T+o3+vy
vM3u737x8/qSydP2KnHw+NlHMNyUfy7gFVworwtCFtbyMZzY6+GKZBQzgpvgz/+irSMaQ8rzOAaV
SGmwTjLhSJJCM4kTr3lSqYRlS1s0d8mcSQ+mKyJCgt5MkjMXMVA7y/j8CfQMnKFEiho8ymldhEVO
oQqLKZVVuo8ds7ZcCi0pQ7JMndoJGNadnYVo15k1BlarkIENqbIJGffTVbV2+5blJ/jZXF4QuDyl
IKCxgGCFj307LA5ktqZi2wJw7JiB5ieRi/WLI9faV1sWOHMGFppeK8vRYOMNZ3OC6tWsW1f1yult
T9ma1IG4rdrKZx+kS/N8pbf36OTBT/+VQLz40+M3dCOlTBg683O6tC8xgn1zddxnSJkTz2+qk+aq
Jgv3jP387Uvs24NDFA9+mvn/EFS3gH3WCWMOV+7xoNM17Ak1IIEQdobZDP7kl4s6CvbSzyvQBBjh
h4kdCJdy6RzFnRcefggheeTI0FF+w1i4xTwZPpOiivaFWENYMHYh43IauhJZBDgSqOORqGFgxpLC
AGfYiaIZ9tplNxZ534TqWVBeVoolJt6PviAzJTbUWUlcBVl6WZuBWF2lIYME9TUAAf1RmV4DZp53
Cn0eyOEmH9YINBuNhtGJlJ3q5SlgB1sakd5aciy5Gz64xFmoofpd6Jdtip7pqIGeeaiBn4lNytyg
  1. sQ1JwGYauoqJPRN06mnWgb0YGNKAvanUpn+NyIyrLIqn6mAhKrMrIt+iqQC/1e6tBiPSgmKj3eW
ihassIdWuukosyCb7AWy3legg0x6SSpGJ0HZxLXYooSGfygS6S2toU7HQIRJgooTO2COqSG7ALS7
3TmtyDtvs/VegK+9G6yVE1mrAiywa6AkbN7B6GXmoMFGdvCYS13xhhS71ypgAMTR1VTlwaB2uXKO
  1. T4g4b5FnRgxyQSYvBS6KsuMMWptvgzzBuOS0u+CPt2Ms85BahtAmbPW2haOy976rXpHZytyLjgD
HPDOlI4H9bgrsglppFYvrCyeQ1/lZJxrSKT00l+/ScYUfVTNMb11caq2xWx3bK5GL43cdbAKtGp3
fE9PyNi3QIs19tB2OAAiEdZZn0qsH4cjXnc2d+s9+cyS1+vy6HyXHnjbkhKOzdwkJ64bGSwWQZ7l
CB9Z7ujMkr7x6nomnDmGnbMasOKxia0v5j777myT4WbM8L2CCx/yv10nPvFgyq/9qPcDMq930Gln
QGrZ3A7RB7zXw2788ZHV2PjyunKQptuN8mms1fw7/vb1ZSge8pDBCKmlQDONWoQySJUi0Q3PIIdT
F6rm97sQ5E8KuVrMVgC4HXZJcIIUtMsJHlgi+RGQCm4QIUA4mBFqdU+FJhDEB1kojYrBECAmpOFU
QJEAACH5BAUyAAcALAMAGABzADEAAAP/eLpa/DDKSau9OOvNu/+MA45k2YlmqqZou77wJs5xbVNO
fu/8UvwTVG+Yyf2OyONBSGx6lM5oSceUWouN7HV7cWlPXGI1TA6Wzz0o+jUGt9eyN0gN/wDr+HQe
O5Tv/HWAe2JJgmyDEYYximdygoxLPpKIkT6Qkxg0lZQPd11+b1QknmhCpBx0dpd6T0uFhZt7Y0yr
QaeqtTCvo5G5IbF9OCaavg23XMVfXpy/ZiptyWLSw03L0cyoWtcV21Kigd2jxywj4zxGr0jAc3+E
4Z3tejoru4v0EsT21CGwEOYa1nSRS4Qj3Kx/fKbg63SKkblZ6+YgxNcPUxZfExnmahgxESG3jK2E
AXSlkR28e2scYkoAADs=
    • 2000000000--

# spok 2008年10月20日(月) 午後10時08分


okdさん

バグでした。以前の1.1.0あたりで修正したのが、やぶへびになっていたようです。
1.2.3bをアップしましたので、使ってみて下さい。
もし、それでも同じ症状でしたら、ご連絡ください。

# spok 2008年10月20日(月) 午後10時15分


さらに修正いて1.2.4bになりました。最新バージョンをお使い下さい。

# okd 2008年10月20日(月) 午後10時23分

spok 様
 素早い御対応、大変恐縮です。
早速 1.2.4b をダウンロードさせて頂きました。
想定通りにデコメテンプレートの相互変換が出来ました!!
どうもありがとうございました!!

 あまりにも簡単に添付ファイルやら扱えてしまうので、
Qdmail が手放せなくなりそうです。
どうぞ今後とも宜しくお願い致します。

# okd 2008年10月21日(火) 午後0時54分

spok 様
 昨日はいろいろと御対応頂き、ありがとうございました。
早速御対応頂いた ver. の Qdmail を利用させて頂いているのですが、複数のインライン画像が入ったデコメテンプレート素材を softbank 形式へ変換しますと、最初の画像が繰り返し表示されてしまいます。。。変換後の素材ファイル内容を確認しましたところ、2つ目のインライン画像の cid に、1つ目の画像と同じものが指定されているようです。。。

 昨日提示させて頂きましたデコメテンプレート素材を softbank 形式へ変換したもの ( html 部のみ抜粋 ) を以下に掲載させて頂きます。
御確認頂けましたら幸いです。

<html><body bgcolor="#ccffff"><div align="center"><IMG SRC="cid:00@areme.jp"></div><font color="#cc99ff"><div align="center">ここに</div><div align="center">メッセージを</div><div align="center">書いてね☆</div></font><div align="center"><IMG SRC="cid:00@areme.jp"></div></body></html>


# spok 2008年10月21日(火) 午後6時06分


okdさん

ご指摘ありがとうございました。Content-idのリナンバーのロジックが間違っておりました。
1.2.5bを使ってみて下さい。それでもダメならお手数ですが、再度ご連絡ください。

# okd 2008年10月21日(火) 深夜4時49分

spok 様
 早速の御対応、ありがとうございます。
丁寧かつ迅速な御対応、恐縮です。。。
何か気づいた点などあれば、また投稿させて頂きます。
その際は、何卒宜しくお願い致します。

# donato 2008年10月22日(水) 午後6時40分

Qdmail使わせていただいてとても助かっています。

ちょっと解決できない症状があるので質問させてください。

環境
■Qdmailバージョン
1.2.0b
■MTA
sendmail
■PHPのバージョン
5.1.6
■OS名称 & バージョン
CentOS4.5
■ソースコードの文字コード、改行コード
UTF-8, CRLF

■症状とソースコード

Cakephp 1.2 rc3 で、Qdmailを呼び出すコンポーネントを作成してメールを送信しようとしています。
基本的に文字化けなどもなく送信できているのですが、
ある特定の件名の時だけ、件名の最後に「=?iso-2022-jp?B??=」という文字列が出現します。


具体例


・正常にいく件名
【テレマーケティング.com-テスト】問合せ通知
【テレマーケティング.com-テスト】お問合せがありました!

・問題の起こる件名
【テレマーケティング.com-テスト】お問合せありがとうございました!=?iso-2022-jp?B??=


コンポーネントのソースコードは以下のようなものです。

class MailTemplateComponent extends Object{
var $controller = true;
var $components = array('Qdmail');

function startup(&$controller){
mb_language('ja');
mb_internal_encoding('UTF-8');
$this->c =& $controller;
$this->c->loadModel('Mail');
$this->Mail =& $this->c->Mail;
// $this->Qdmail->lineFeed("\n");
// $this->Qdmail->debug = 2;
}

function send($to, $mail_id, $data=null){
if($mt = $this->Mail->read(null, $mail_id)){
$this->Qdmail->reset();
$this->Qdmail->to($to);
$this->Qdmail->from($mt['Mail']['from']);
$this->Qdmail->subject($mt['Mail']['mail_title']);
$this->Qdmail->text($mt['Mail']['text'].$mt['Mail']['signature']);
$this->Qdmail->send();
}
}

}

ちなみに、
mb_language('ja');
mb_internal_encoding('UTF-8');
$this->Qdmail->lineFeed("\n");
などの指定は試してみましたが症状は変わりません。


もし対処方などがありましたら、ご教授いただけると助かります。。
よろしくお願いします。


# spok 2008年10月22日(水) 深夜0時50分


donatoさん

こちらでも再現しました。バグです。
1.2.6b以降にバージョンアップしていただければ解決すると思います。
それでも解決しない場合は、お手数ですが、再度ご連絡下さい。

# donato 2008年10月23日(木) 午前6時33分

spokさま
直りました!ありがとうございます!
このサポートの素早さ手厚さは本当に素晴らしいと思います。
これからもQdmailどんどん使わせていただきます。
ありがとうございました。

# kt 2008年10月23日(木) 午後0時18分

いつもお世話になっております。
利用していてアイディアというか意見がありましたので、参考までに投稿させていただきます。(投稿する箇所が間違っていたらすみません…。)

○PC/携帯指定

一括配信の時に有効だと思いますし、PC用のメールを間違えて携帯に送った場合など
処理を入れておけば、被害が防げるかも知れません。
(携帯の場合、文字数の制限がありますから)

私はメールアドレスのドメインを検査して、携帯(docomo、softbank、ezweb)のドメインの場合、処理を分けるようにしています。

○連続送信防止・スリープ機能

お問い合わせフォームの用途に使用する時、連続アクセスすると回数分メールが表示されますが、それを防止する機能です。
通常はqdmailをincludeするPHP側でcookieを使い対処すると思いますが、
可能ならqdmail側でも何らかの対処が出来ればと思いました。

また「○件送信したら○秒sleep」というのも良いかもしれません。私は複数箇所に送信する時、指定しています。

○禁止・スパム文字の制御

件名が「未承諾広告」の場合は送信されないとか、****という文字に置き換わるとか、そういうスパム用途に対処出来ればいいと思います。

これも一般的にはincludeするファイル側で対処すると思いますが、「システムにするほどでもない」場合に有効かと思います。


もし、ご検討されていたら余計な意見でしたが…、私がqdmailと併せてよく使う方法を「利用者の意見」として書かせていただきました。

# spok 2008年10月23日(木) 午後0時58分


ktさん

ご意見ありがとうございました。今後の更新の参考にさせていただきます。

# ひじり 2008年10月24日(金) 午前11時57分

お世話になっております。
たびたび申し訳ありません。

関数型でメールを送信する際に、「髙」等の機種依存文字を送れるようにする必要が出てきました。(ホントは使いたくないのですが…。)

■Qdmailバージョン → 1.0.7b
■QdSmtpバージョン → 0.1.9a
■PHPのバージョン → 4.3.9
文字コードはUTF-8、改行コードはCRLFです。

$option = array('type' => 'text', 'smtp' => $smtp, 'charset' => array('UTF-8', 'base64'));
として
qd_send_mail($option, $mailto, $subject, $body, $header, $attach, 2);
とするのですが、
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
と表示されます。
デバッグモードをオフにすれば送信は問題なくできますが、件の文字は「?」に変換されてしまいます。
ちなみに、SMTPを使用せずに
$option = array('type' => 'text', 'charset' => array('UTF-8', 'base64'));
としてもやはり文字化け(?に変わる)してしまいました。

なんだかもう、アラ捜しをしているようですごく恐縮なんですが・・・よろしくお願いします。

# spok 2008年10月24日(金) 午後0時09分

option の指定方法がQdmailマニュアルに沿っていないからと思います。
$option = array('type' => 'text', 'smtp' => $smtp, 'option'=>array('charset' => array('UTF-8', 'base64')));
にしてみてください。
(参考)http://hal456.net/qdmail/qd_send_mail_option

# spok 2008年10月24日(金) 午後2時13分

なお、qdmailは最新バージョンを利用することをオススメします。

サポート過去ログ2

▼ コメント(88件)
# sion 2008年07月15日(火) 午後5時30分

こちらでははじめまして。
PHP^USERSのMLではありがとうございました。

早速なのですが、使い方についてです。
Qdsmtpでは日本語が扱えないとのことなので、こちらのQdmailを併用して
利用を考えているのですが、初期化とその後の流れてについて教えていただいても
よろしいでしょうか。

自分が試したのは、
1.require_once("qdmaill.php")でファイルをインクルード
2. new でqdmailオブジェクトを作成
3. qdmailの初期化&送信データ設定
4. qdsmtpの初期化&送信データ設定
5. send()メソッドで送信をしたのですが、エラーになってしまいます。

おそらく、初期化設定とその後のメソッドを使う部分が間違っているのだと
思うのですが・・

お忙しいところ申しわけないのですが、二つを組み合わせた使い方を
サンプルをご提示いただけないでしょうか。
よろしくお願いいたします。

# spok 2008年07月15日(火) 深夜0時12分

こんにちは。某所ではどうもです。ご利用ありがとうございます。

http://hal456.net/qdmail/smtp
に、SMTP送信のサンプルコードを付け足しておきました。ご参照ください。

もし、うまくいかないようだったら、こちらに以下の情報をお寄せください。
メールアドレス、SMTPID,パスワード部分は、差し支えのないように変更するか、
「非公開コメント」にチェックするか、などで対応してください。


■Qdmailバージョン
■QdSmtpバージョン
■お使いのソースコード
■お使いのOS & バージョン
■SMTPサーバーの種類&バージョン(sendmailかPostfixかqmailか。これはわからない場合もあるとは思います。)


# sion 2008年07月16日(水) 午後1時10分

こんにちわ、お忙しい中、サンプルありがとうございました。
早速、自分のサーバーでテストしてみたところ問題なく動きました。
似たようなものを作成して気づいたのが、Qdmailの柔軟性の高さです・・
これで思い通りのシステムが作れそうです。ありがとうございました!


# bombom 2008年08月19日(火) 午後0時14分

はじめまして。bombomと申します。

現在、携帯へ添付ファイルを送信しようとしておりますが、どうしても添付が認識されずに悩んでおります。

送信はqd_send_mailを使い、本文:utf8,base64、ヘッダ:iso-2022-jp,7bitで送信していますが、
PC宛へは問題無く届くものの携帯(au)へは、添付が削ぎ落とされてしまいます。文字化け等はありません。

恐らく、AUの特殊仕様?かと思い、さまざまヘッダの順番を変えたり、修正しておりますが、未だ実現に至ってはおりません。

なお、versionは1.0.4b、文字コード以外の設定は全てdefaultで、unix系サーバで動かしております。
念の為SMTPを変えてみましたが変わりません。

もし情報をお持ちでしたらご教授頂けませんでしょうか。
お忙しいかとは思いますが、何卒宜しくお願い致します。

# spok 2008年08月19日(火) 深夜1時43分

bombomさん
重要なご指摘ありがとうございます。
もっとも基本的な部分でタイポしておりました。

1.0.5b または 0.9.4.002 にバージョンアップしていただければ、問題は解消されるかと思います。
それでもダメな場合はお手数ですが、もう一度ご連絡ください。

その再は、PHP,Qdmailのバージョン及び差し支えない範囲でのソースコードをみせていただければ幸いです。

# bombom 2008年08月26日(火) 午後5時05分

ご連絡が遅くなり、申し訳ございませんでした。
1.0.5b にバージョンアップし、解決致しました。
今後共も利用させて頂きます。
この度は早々にご対応頂き、真にありがとうございました。

# ひじり 2008年08月27日(水) 午後2時31分

お世話になっております。
Qdmail+QdsmtpをPHP5の環境で動作させたところ、
QdSmtp error: Error RCPT setting line -> 473
というエラーが表示されてしまいました。
宛先(TO)には問題なく送信されるのですが、BCCへ送信されません。

qdsmtp.phpの該当箇所を見てはみたものの、解決できそうもないのでご助言いただければ幸いです。
よろしくお願いします。

# spok 2008年08月27日(水) 午後3時27分

ひじりさん
スポックです。ご不便をおかけして申し訳ありません。
たぶんqdsmtpではなくて、Qdmailでのアドレス指定の問題のような気がします。

下記の情報をお寄せ下さい。
■Qdmailのバージョン
■Qdsmtpのバージョン
■ソースコード
ソースコードについては、差し支えある部分については変更していただければよいのですが、メールアドレスそのものの問題があることもあるので、(例:RFCに準拠していないメールアドレスの場合など)、できましたらメール送信部分を「非公開コメントにチェック」の上、お見せいただければと思います。
もしくは、私の連絡先
http://hal456.net/qdmail/whois
からメールにてソースコード部分をお知らせ下さると、解決できる可能性が高くなります。

また、toとbccのアドレスを交換した場合、toに送信されるかどうかもお教えいただければ幸いです。

さらに、Qdmailを1.0.7b以降にバージョンアップした場合にエラーメッセージが変わるかどうか、お試し下さい。

# ひじり 2008年08月27日(水) 午後4時41分

さっそくのご返信ありがとうございます。
いつも対応の早さに感服いたします。

■Qdmail ver 1.0.1b
■Qdsmtp ver 0.1.4a

$option = array(
'type' => 'text',
'smtp' => $smtp,
);
$header['From'] = array(ADMIN_MAIL, ADMIN_NAME);
$header['Bcc'] = array(ADMIN_MAIL, ADMIN_NAME);
として
qd_send_mail($option, $mailto, $subject, $body, $header, $attach, 0);
で動かしていました。

アドレス交換でも同じ現象でしたし、
Qdmail1.0.7bでも同様でした。(エラーメッセージも変わっていません)

ただ、設定方法に問題があるのかと思い、$optionを使わず
qd_send_mail('text', $mailto, $subject, $body, $header, $attach, 0);
としたところ、問題なく送信できました。

Qdsmtpのバージョンが古いためでしょうか?

# spok 2008年08月27日(水) 午後7時02分


うーん。最新のQdmailでも、エラーが同じということは、Qdsmtpが原因かも知れません。
お手数をおかけしますが、ログをとってみていただけないでしょうか。

qdsmtp.php の32行目あたりに、
var $errorlog_level = 0;
var $log_level = 0;
という定義があるかと思います。これを
var $errorlog_level = 1;
var $log_level = 1;
にしていただき、環境に合わせて、そのすぐ下のログファイル名を、変更してください。

var $log_filename ='qdsmtp.log';
var $errorlog_filename ='qdsmtp_error.log';

ファイル名の指定の仕方は、http://hal456.net/qdsmtp/log
を参考にしていただければ幸いです。
その上で、送信動作を行い、通常のログファイル(qdsmtp.log)の方をみていただき、当該bccのメールアドレスをテキスト検索してみてください。
そこのステータスコードが250以外の例えば550とかになっている行があるはずです。その近辺のログを支障のある部分は変更してみせていただけると何かわかるかもしれません。
場合によっては、そのメールアドレスがログに現れてこない場合もあるかも知れません。その場合は別の原因を探ります。
例えば、私の環境で、無理矢理エラーを出してみた場合、
QdSmtp RCPT TO:<address_exmaple.com>
Server 550 5.1.1 <address_exmaple.com>... User unknown
という感じのログがでます。
250以外のものが怪しいです。
「550,551,552,553,450,451,452,500,501,503,421」あたりが出てくる可能性が高いです。

また、私のマニュアルの記載ミスなのですが、bccにおいては、日本語名(表示名)の指定が意味がありません。bccはメールアドレスのみの指定となります。現在のように日本語名(表示名)を指定していても無視されるはずなので、影響はないと思いますが、念のため、
$header['Bcc'] = array(ADMIN_MAIL);
としてみてください。

なお、お使いのQdsmtpが最新版ですので、そこはたぶん関係ないです。

# spok 2008年08月27日(水) 午後8時13分


ひじりさん

ひとつ前のログうんうんのコメントは忘れていただいて、以下のURLから最新のQdsmtp0.1.5aをダウンロードして、どんなエラーがでるかみていただけないでしょうか。
今、一つ前のコメントのログ内容が見られるように、急遽バージョンアップしました。

http://hal456.net/qdsmtp/download

# ひじり 2008年08月28日(木) 午前11時12分

ありがとうございました。
Qdsmtp0.1.5aで試してみたところ、下記のエラーが表示されました。
spokさんが最初に懸念していた通り、gmailが原因になっているっぽい感じですね。
(メールアドレスのアカウントのみ伏せてあります)

QdSmtp error: Failure :status553 message:553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1) on RCPT TO:<xxxxxx@gmail.com>
line -> 527
QdSmtp error: Error RCPT setting line -> 473

BCCの日本語名についてのアドバイスもありがとうございます。
特にエラーが変わることはありませんでしたので、大丈夫だと思います。

# spok 2008年08月28日(木) 午後1時06分


ひじりさん
このエラーがでるということは、SMTPサーバー認証に失敗している可能性があります。
他のメールアドレスに送信できたということは、そのアドレスというのは、そのSMTPサーバーが管轄するドメインではないでしょうか。たぶん、gmailのみならず、他のドメインにも送信できないのではないかと想像しています。。。
SMTPサーバーの第三者中継拒否のセキュリティにかかってしまっているように見えます(違うかも知れませんが)。

以下の情報をお知らせ下さいませ。
■$smtpの変数にて、SMTP AUTHまたはPOP Before SMTPの設定をしていますでしょうか?
 もしくは、認証のないサーバーとしての初期設定でやっていらっしゃいますか?

たぶん、認証設定が間違っているか、認証なし設定でやっていると、このエラーがでるかと想像しています。
(違うかも知れません。)
認証設定を行っている場合には、今一度、設定情報が正しいかどうか確認してみてください。
(参考URL)
http://hal456.net/qdsmtp/init
(注:このページのSMTP_AUTHの記載が間違っていた事に、今、気づいてしまいました。。。修正してあります。)

認証なし設定でやっている場合は、そのSMTPサーバーの管理者等に問い合わせるなどして、SMTP AUTHの設定情報を聞いてみて下さい。
POP Before SMTP よりは SMTP AUTH の方をオススメします。

また、2つ前のコメントにあるようなログを取ると、認証に成功しているか失敗しているかわかりますので、ログをとってみて最初のほうの認証している部分でエラーがでているかどうか、を確認するのも有効な手段かと思います。

■そのメールアドレスの左半分は、特殊な形式ではないですよね?
 ドットが2つ以上続いていたり、記号が使われていたりして、RFCに従っていない可能性はないですか?

もし、SMTP認証も成功しているにもかかわらず、このエラーがでる場合があるのかどうか、ちょっとわからないのですが、今一度、やってみていただければ幸いです。

# ひじり 2008年08月29日(金) 午後1時30分

たびたびありがとうございます。
認証なしで使用しているので、
> SMTPサーバーの第三者中継拒否のセキュリティにかかってしまっているように見えます
これが一番の原因である可能性が高そうです。
もう一度設定の部分から洗い出すことにします。
迅速で親身な対応、本当にありがとうございました。

# spok 2008年08月29日(金) 深夜0時30分


SMTPサーバー送信は、実装としては2種類あるかと思います。ひじりさんはご存じかと思いますが、他の方のために書いておきます。

その1
認証ありで第三者中継を許すサーバーにで接続し、各到達地点のSMTPサーバーに中継してもらう。(これが、QdSmtpの実装です。)
この方法の利点は、到達地点のSMTPサーバーになんらかの理由で接続できなかった場合でも、最初のSMTPサーバーが、メールを留保し、後で、送り直しをしてくれるため、到達確立が安心できるレベルにあるということです。その代わりに、そのSMTPサーバーに自分がアカウントを持っていなければなりません。例えば、私はレンタルサーバーのSMTPサーバーやso-netのアカウントも持っていますので、たまにso-netのSMTPサーバーに認証ありで、中継してもらっています。

その2
送り先のメールアドレスに合わせて、その都度異なる(当該メールを管理する)SMTPサーバーに認証なしで接続して送信する。認証なしサーバーは第三者中継は行わないものの、そのSMTPサーバーが管理するドメイン(サブドメイン)のメールボックス宛であれば、認証なしで受け入れます。到達地点のSMTPサーバーに直接接続する方法です。
この方法の利点は、直接接続なのでより高速&どこにも認証がいらない、という点です。一方で、送り先のメールアドレスから、IPアドレスなり、SMTPサーバーなりを逆引きしなければならず、また、接続エラーの場合の処理を自前で実装しなければならない、という点が欠点です。特にエラー処理は、PHPだけでは完結が難しく、必ず、サーバーの設定等も必要になることが多いので、可搬性のよくない(万人向けではない)ソフトになってしまうということです。

いずれは、Qdsmtpも、その2 の方法もサポートしたいとは思いますが、現状では、その1の方法だけなので、いろんな所にメールを送りたければ、サーバー認証またはPOP Before SMTPにて、対処しないといけないと思います。

# spok 2008年08月30日(土) 午前11時17分

解説もどきを掲載しておきました。

http://hal456.net/qdmail/smtp_method

# ぺいん 2008年09月03日(水) 午後2時04分

失礼いたします。qdmailを拝見しました。
日本語に対して安定しているので本当に素晴らしいと思います。
重要度の設定もでき、問題なく動作しました。
受信確認や配送確認を設定したいと考えておりますが、
どのようにしたらよろしいでしょうか?

# spok 2008年09月03日(水) 午後10時03分

ぺいんさん

以下をご参照下さい。
http://hal456.net/qdmail/notification

# ぺいん 2008年09月04日(木) 午前7時50分

よくわかりました。
ありがとうございました。<(_ _)>


# 添付ファイル削除 2008年09月04日(木) 午後1時35分

■動作環境
qdmail.1.0.8b
CencOS 5
Apache 2.0
PHP 5.1
Postfix 2.2.10

■症状
以下のようにデコメを送信すると、ドコモだけ失敗します。
携帯で受信したメールが、
[添付ファイル削除]
        • END----
となってしまいます。AU、SoftBank端末には期待通り送信できます。
ドコモ端末:N902iX,P705i,P905i他

添付画像なしのデコメも、全く同じ症状になります。
原因はQdmailへの設定不足でしょうか。



■ソースコード

$body = '<html><body bgcolor="#aabbff">
<div>画像はこのように</div>
<img src="cid:ng.jpg">
<div>置くことができます。</div>
</body></html>';



$mail = & new Qdmail();
$mail->inlineMode( true );
$mail->autoDecoJudge( true );
$mail->toSeparate( true );
$mail->charsetBody( 'utf-8' , 'base64' );
$mail->kana( true );

$mail->attach('ng.jpg');

$mail->to(array('********@docomo.ne.jp', '*******さん'), null, true);

$mail->subject('デコメのテスト');
$mail->from('from@******');

$mail->html($body);

$mail->send();


# spok 2008年09月04日(木) 午後9時48分

添付ファイル削除さん

スポックです。ご不便おかけして申し訳ありません。
私の環境では問題ありませんでした。(端末はP905i)。
まず、以下をご確認ください。
http://otoiawase.nttdocomo.co.jp/PC/qa/?qa=113060&;c1=13&c2=7
それでもダメな場合、以下をお試し下さい。

$mail -> debug(2);

を加えてみて、表示されるデータを、このコメント欄に「非公開コメント」にチェックを入れて送信するか、
私宛のメールに当該データを添付ファイルにして送ってみて下さい。当方にメールを送る場合にはsubjectに必ず、「qdmail」の言葉を入れて下さい。

$mail -> debug(2);はデバッグモードであり、実際にはメールは送信されません。

また、添付ファイルなしの通常のテキストメールの場合は、内容がちゃんと送信できますでしょうか?

なお、PHP5では、newの後の & は必要ありません。

# 添付ファイル削除 2008年09月04日(木) 午後10時37分

早速のご回答、ありがとうございます。
デバッグモードで出力されたデータを、先刻「非公開コメント」でお送りしました。宜しくお願いします。

また、「添付ファイルなしの通常のテキストメール」は、まだ試していません。手元に環境がないので、明朝試してみます。
(「添付ファイルなしのデコメール」は、既述のとおり失敗しました。)


# spok 2008年09月04日(木) 午後11時49分

Qdmail側の原因はまだ不明ですが、いただいたデータをみると、やはり変なところに改行が入っていますね。

    • __Next-3-TYUWRtYWlsIEFHUEx2Mw==UmA=__
Content-Type: text/html; charset="iso-2022-jp"
(改行)
Content-Transfer-Encoding: quoted-printable

ここは通常改行が入らないところなので、
http://hal456.net/qdmail/trouble
をご参照のうえ、改行コードをLFのみにしてみてください。
(PostFixなので、この件は関係ないかも知れません。)

こちらでも、どのような場合に、htmlパートに改行が入り込むか調べますが、こちらで再現しないので、ちょっとやっかいかも知れません。しばらくお時間いただきます。

できればSMTP送信もためしてみていただければ幸いです。
SMTP送信で無事送信できれば、環境の問題、同じ症状であれば、Qdmailの問題です。(たぶん)

# spok 2008年09月04日(木) 午後11時53分

あ、書いた後に気づきましたが、debug(2)でこの症状ということは、Qdmailの問題ですね。(たぶん)

# spok 2008年09月05日(金) 午前7時37分

また、関係ないところだとは思いますが、デコメの時は
$mail->charsetBody( 'utf-8' , 'base64' );
の指定は無効ですので、はずしてみてください。
国内キャリアの場合は、すべてiso-2022-jpの7bit or Quoted-Printableになります。
Qdmailのソースをちょこっといじれば、utf-8,base64もできるのですが、それだと文字化けする携帯端末がでてくるので、現状では対応していません。

# 添付ファイル削除 2008年09月05日(金) 午前10時37分

誠意ある調査ありがとうございます。
「htmlパートに改行が入り込む」
についてですが、先刻再度デバッグログをお送りしたとおり、改行は入っていないようです。

「text/plain」の部分に、文字化けした文章が出力されていましたので、この部分を適度に削り、文字化けのない状態にして、SMTP送信したらきちんと送信できました。

「text/plain」の出力内容に問題があるのではないでしょうか。


# spok 2008年09月05日(金) 午後0時05分

ログをありがとうございます。
念のための確認ですが、本文に半角カナ、または、ハシゴ高(髙)などのiso-2022-jpに入っていない文字は使用していないでしょうか?
参考:http://www003.upp.so-net.ne.jp/hat/imail/sec06.html
参考:http://homepage1.nifty.com/akshiba/pclec/mail/mailchar/mailchar.html

その上でまだ文字化けするようですと、以下を試してください。
(mb_detect_encodingが正しく文字コードを判定できていない可能性があるため)
$body で、貴殿がQdmailに渡す文字列の文字コードを明示的に指定することができます。


$body_content = '<html><body bgcolor="#aabbff">
<div>画像はこのように</div>
<img src="cid:*****.jpg">
<div>置くことができます。</div>
</body></html>';

$body= array('content'=>$body_content,'_ORG_CHARSET'=>'UTF-8');

SentOSであればたぶんUTF-8なので、上記の例はそうしましたが、異なる場合は、UTF-8の代わりに、正しい文字コードを指定してください。
_ORG_CHARSETの最初のアンダーバーを忘れないようにしてください。

それでも文字化けする場合、「Qdmailに渡した文字列&文字コード情報」「$mail -> debug(2);での text/plainパートを非公開コメントでいただければ幸いです。


# 添付ファイル削除 2008年09月05日(金) 午後2時26分

ご指摘どおり、
$body= array('content'=>$body_content,'_ORG_CHARSET'=>'UTF-8');
で実行しましたが、まったく同じ結果でした。

$body の内容と、実行結果の「text/plain」部分のセットを、幾つかお伝えします。


■$body = '<html><body bgcolor="#aabbff">
<marquee behavior="alternate">あらマーキー</marquee>
</body></html>';

■結果
    • __Next-3-FEUWRtYWlsIEFHUEx2Mw==Zz4=__
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit

う髟阡擦薀沺��キ・踉�(B
    • __Next-3-FEUWRtYWlsIEFHUEx2Mw==Zz4=__
■$body = '<html><body bgcolor="#aabbff">
<div>画像はこのように</div>
<img src="cid:dufy01.jpg">
<div>置くことができます。</div>
</body></html>';

■結果
    • __Next-3-MIUWRtYWlsIEFHUEx2Mw==els=__
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit

画像はこのよう瘢雹に
置くことができます。
    • __Next-3-MIUWRtYWlsIEFHUEx2Mw==els=__
■$body = '<html><body bgcolor="#aabbff">
半角カナや特殊文字は、文字化けします。
</body></html>';

■結果
    • __Next-3-JFUWRtYWlsIEFHUEx2Mw==a2A=__
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit

筈苳山僖�覆籠脱踉詞文字は・髟阡司源擎修韻靴泙后�(B
    • __Next-3-JFUWRtYWlsIEFHUEx2Mw==a2A=__

# とおりすがり 2008年09月05日(金) 午後2時26分

前は
$attach[] =array('a.jpg','b.jpg');
<img src="cid:b.jpg">

でa.jpgをb.jpgに変更して送信できていたと思うのですが、

1.0.8bでは
・ファイル名は変更されて送られる
・送信メールにcidがそのまま付いてきてしまい表示できない

ようになっているみたいです。

# spok 2008年09月05日(金) 午後6時45分

添付ファイル削除さん

ようやく一部分ですが、こちらでも再現しました。
おそらく、php.ini で mbstring.language が設定されていないからではないでしょうか。
以下を試してみてください。

mb_language('ja');

これでもダメなら、以下にしてみてください。(祈る気持ち)

mb_language('ja');
mb_internal_encoding('UTF-8');

できれば、php.ini のmbstring.languageを、ja または Japanese に設定するのが一番よいと思います。

たぶん、これで治ると思いますが。。。。
今後のバージョンアップ時には、この設定・非設定を検出して、自動で設定するようにしたいと思います(ただ、そうすると多言語対応が。。。)

# spok 2008年09月05日(金) 午後6時46分

あ、でもauには大丈夫なんですよね。。。。??もしかしたら、違うかも。

# spok 2008年09月05日(金) 午後6時47分

さらに付記ですが、mb_language('ja');は、スクリプトのなるべく最初の方に配置するのを推奨します。

# spok 2008年09月05日(金) 午後6時50分

とおりすがりさん

いろいろ理由があって、その指定方法は、バージョン1系では使用できません。
参考
http://hal456.net/qdmail/oopattach

申し訳ありませんが、
$attach[] =array(array('a.jpg'),array('b.jpg'));
としていただければ幸いです。
コードが整理できれば、いずれまた、その指定方法も復活させたいとは思うのですが。。。

# 添付ファイル削除 2008年09月05日(金) 午後10時37分

ざ、残念ながら、php.ini の設定は万全です。
祈る気持ちで
mb_language('ja');
mb_internal_encoding('UTF-8');
をファイル冒頭に書いてみましたが、やはり変わらずです。

ちなみに私の使用しているサーバは、携帯サイトが正常に動作している(携帯宛メールが正常に送れている)専用サーバなので、基本的な設定は大丈夫(のはず)です。

DoCoMoの時だけ、text/plain 部分をブランクにして送信できないものでしょうか。。。

# spok 2008年09月05日(金) 午後11時38分

何度もお手を煩わせ申し訳ありません。

何度も確認してすいませんが、実は、デバッグモードだけの文字化けが発生する可能性があることがわかりました。(htmlspacialcharsが、お行儀よろしくないことがわかった。)
つまり、デバッグモードで文字化けしていても、実際の送信はOKの場合があり得るというこです。
(これじゃデバッグにならないですね。。。)

大変申し訳ありませんが、
mb_language('ja');
mb_internal_encoding('UTF-8');//または euc-jp
を設定した上で、「実際にドコモにデコメを送信した結果」はどうであったかお教え願えますでしょうか?

また、
$mail->whichTextHtml( 'html' );
とすると、text/plain 部分は作成しませんが、代替テキストがない状態となりますので、デコメ非対応機種で何も表示されなくなります。(あまりオススメはしたくないのですが。。。。)

# spok 2008年09月05日(金) 深夜0時05分

あ、mb_languageといっしょにこれも置いておくといいかも知れません。
mb_detect_order('ASCII,JIS,UTF-8,EUC-JP,SJIS');


# spok 2008年09月05日(金) 深夜0時18分

ついでですが、1.0.9b を試してみる、という手もいいかも知れません。
http://hal456.net/qdmail/downloads

# 添付ファイル削除 2008年09月05日(金) 深夜1時14分

mb_language('ja');
mb_internal_encoding('UTF-8');//または euc-jp
を設定した上で、「実際にドコモにデコメを送信した結果」は

NGでした。まったく変わらずです。。。



# 添付ファイル削除 2008年09月05日(金) 深夜1時17分

なんと、
$mail->whichTextHtml( 'html' );
でも駄目でした。全く同じ結果になります。

# spok 2008年09月06日(土) 午前7時21分

ご利用いただいているのに、うまくいかなくて、本当に心苦しいです。
ただ、$mail->whichTextHtml( 'html' );でも同じということは、text/plainが原因ではない可能性が高いです。

元に戻ってしまいますが、以下をお願いすることはできますでしょうか?

$mail ->deco_def_default=1;

(メソッドではなく、プロパティを直接いじっていますのでご留意ください。)
を付け加えて、以下のメールアドレスに当該メールをお送りいただくことは大丈夫でしょうか。
spokdecotest アットマーク yahoo ドット co ドット jp

これでPCアドレスであっても、DOCOMOのマルチパート構成にて送信することとなります。
これで原因がわからなければ、正直なところ手詰まりかもしれないです。。。。
こちらで再現すればいいのですが。。。。。

# spok 2008年09月06日(土) 午前7時43分

あ、SMTP送信もできるのであれば、通常送信とSMTP送信の両方をいただければ幸いです。。。

# spok 2008年09月06日(土) 午後10時23分

とおりすがりさん

私も気になっていた部分ですので、$attach = array( filename , filename , ..... );式も限定付きで復活させました。Qdmail 1.1.0b以降を利用してみてください。

参考 http://hal456.net/qdmail/oopattach

# 添付ファイル削除 2008年09月07日(日) 午後5時13分

長々とお付き合い頂き、恐縮の極みです。
先程、ご指定どおりのメールをお送りしました。ご確認下さい。
私のPC宛にも送ってみましたが、文字化けせずに受信できました。原因はささやかなものなのでしょうね。。
ちなみに、この設定でドコモ宛に送ると、今までと変わらない結果になっています。

# spok 2008年09月07日(日) 午後10時16分


添付ファイル削除さん

メール確かに受け取りました。きれいな画像ですね。
さて、このメールアドレスから私の携帯(Docomo P905i)にQdmailReceverを用いてそのまま転送しました。
その結果、
きれいに受信できています。特に異常はありませんでした。

秀丸メールの「そのまま転送」機能を利用して、そのまま転送しました。
その結果、
きれいに受信できています。特に異常はありませんでした。

念のため、PCで受けたメールログ(秀丸メール)及びQdmailRecever及び目視にて、受けたメールのマルチパートを解析しました。

その結果。
特に異常はありませんでした。

以前の貴社コメントでSMTP送信した場合には、添付ファイルも受け取っているとのことです(よね)ので、クライアント側の設定の問題でもないようです。

正直なところ原因不明です。

希ですが、お使いのメールサーバーとDOCOMOのサーバーの相性が悪いということも考えられます。貴社からドコモへ大量にメールを送信している場合には起こりえることですが、この場合は全く受信できなくなってしまうはずなので、添付ファイルだけ削除ということは考えにくいです。
http://www.nttdocomo.co.jp/service/mail/imode_mail/notice/mass_send/


なお、当方に送っていただいたのは、PHPのmail関数を使ったタイプかと思います。
これを QdSmtp を使用して、SMTP送信しての結果は如何でしょうか?
その際、自社でなく、「一般のプロバイダのSMTPサーバー」にて試してみて下さい。
また、
$mail ->deco_def_default=1;
のままPCに送信し、そのPCアドレスの転送設定で、ドコモ携帯に転送し、正しく受信できるかどうか、というテストも意義があります。(しかし、SMTP送信は絶対に試すべきです)。


これで正しく受信できていれば、貴社サーバーとドコモサーバーの相性または経路の問題。
正しく受信できなければ、原因不明です。(なぜなら、同じメールを私のドコモ携帯に送信した場合に正常に表示されるため)。確か貴社もP905iへ送信異常があったと思いますが、私の端末も同じものです。

ただし、貴社でお使いの N902iX は、メール受信サイズが10kbを超えた場合、若干特殊な挙動をするようです。いただいたメールのサイズは約84kbですので、テストの際は、念のため、もう少し小さい画像(5kb程度)で実施することをオススメします。905シリーズは100KBまで大丈夫のようですね。

また、貴社からいただいたmailtoに私の携帯のメルアドも送信しました。よろしければ、同じものをご送付いただいても結構です。

Qdmailが作成したヘッダーを含むメール本体には異常がみられない&当方の端末では問題なく表示できる、という点から、後はサーバー間の通信異常を疑うほかないのですが。。。。もう少し考えますが、若干、手詰まり感があります。



# spok 2008年09月08日(月) 深夜1時11分


添付ファイル削除さん

当方へのテストデコメ(mail関数版)ありがとうございました。
その結果、
デコメは表示されず、「添付ファイル削除」
となりました。そちらの症状と同じです。

まだSMTP送信のものについてはいただいていませんが、たいへん悩ましい結果になっています。
一般のプロバイダの送信サーバーを使用したSMTP送信の結果がわかれば幸いです。

ヘッダーを含む本文がQdmailで適切に作成されているようなので、
原因としては、
1 貴社環境とQdmailの相性
2 貴社サーバーとドコモサーバーの相性
のどちらかと思いますが、auには届いてという点から、2の可能性が高いように推察しています。
しかし、具体的に何が原因か、と言われるとわかりません。

こちらで、貴社と同じコードを試行しても、正常に送受信されるので、症状を再現することができず、原因究明の手段が限られています。。。。
ただ、「添付ファイル削除」というのは、大きいファイルサイズのものを受信した時にでるようなので、何らかの原因で、SMTPのコネクションが終了できていない可能性があるかと思います。(終了できなから、受信最大サイズを超えたと判断されてしまう。)
PostFixのログをみれる環境であれば、おそらく異常終了しているのではないかと思うですが。。。。。
ネットで検索するといくつか、PostFixとドコモサーバーの相性問題ができています。。

なお、私は前回のコメントで重大な誤りをしておりました。
$mail ->deco_def_default=1;
ではなく
$mail ->deco_def_default=2;
の誤りです。

ただし、今回の場合は、おそらく結果はかわらないと思います。


# 添付ファイル削除 2008年09月09日(火) 午後9時33分

長らくの対応、ありがとうございました。
結果から申し上げると、
・Qdmail の出力結果をSTMPプロトコルに従い「data」として送るとOK
・Qdmail のmail関数で送信する方法ではNG
・Qdmail とQdsmtp の組み合わせで送信するとOK
という結果になりました。
絵文字はどうやって送ればいいのか、そこだけまだ分かっていませんが、調べてみます。
ありがとうございました。今後も有意義に使わせて頂きます。

# spok 2008年09月09日(火) 午後11時18分


添付ファイル削除さん

ご連絡ありがとうございます。
想像の域を出ませんが、やはり、貴社SMTPサーバーとドコモSMTPサーバーのコネクションがうまく終了できていないことが原因かと思います。理由はPostFixの設定か、mail関数の不具合、mail関数とPostFixの相性等が考えられるかと思います。
ともあれ、制限つきながら正常に送信できてよかったです。

また、絵文字については、デコメのbodyの中に

など、http://mcap.symmetric.jp/glyph/index.htmlを参考にして、数値エンティティの形にすれば送信することができます。

ただし、Qdmailではこれをキャリア毎に変換する機能は現時点(0.1.0b)では持っていませんので、送るキャリアごとに内容を変える必要があります。
時間があるときに絵文字については今後考えてみます。

# とおりすがり 2008年09月10日(水) 午前10時33分

一つのインスタンス$mail = & new Qdmail();で、
一旦htmlやattach使いまくって$mail->sendした後、
$mail->easyTextを使用するとhtmメールが送られてしまいます。

まあ$mail->resetすればいいだけなのですが
これってautoDecoJudgeやcharsetBodyあたりもリセットされてしまうので微妙に使いづらい。


# とおりすがり 2008年09月10日(水) 午前10時34分

↑バージョン書き忘れ

PHP Version 4.3.2
Qdmail ver 1.0.8b


# spok 2008年09月10日(水) 深夜1時03分

とおりすがりさん
これって、気になっていたのでこの期に修正した。
http://hal456.net/qdmail/reset (参考)
1.1.1bからは、$mail -> reset(); を使わなくても、easy~メソッドは、自分で実行前に、resetBody(),resetBody()に呼ぶようにした。

# 絵文字 2008年09月11日(木) 午後6時42分

絵文字ですが、docomoには「数値エンティティの形にすれば」送信できますが、キャリア変換はできないのでしょうか。
一斉配信するような場合、キャリアごとにメール本文を作り直してQdmailに渡す必要があるのでしょうか。

# spok 2008年09月11日(木) 午後9時43分


絵文字さん

絵文字については、現在のところ(1.1.2b)キャリア変換機能はありません。
キャリアごとに本文を作り直していただく必要があります。

そんなに難しいロジックではないので、時間がある時に対応したいとは思いますが。。。変換テーブルを持たせるとそれなりの容量となるので、別ファイルにすべきか、Qdシリーズの特徴のとおり、1ファイル構成にするか悩ましいところです。。。。
絵文字変換の要望が多ければ考えマスです。

# ひでき 2008年10月01日(水) 午後8時03分

素晴らしいコンポーネントの配布ありがとうございます。
バグ発見しましたのでご連絡です。

■バージョン
最新の 1バージョン。

■状況
cakephp1.2 で cakeText を使い送信時のバグ
・送信後の文字コードが 強制的に UTF-8 になってしまう。
これにより、サンダーバードで受信後に見るとアルファベットが斜体になり見づらくなる。

■解決策
qdmail0.系の最終バージョンを使ったら一発で直りました。

よろしくお願いします。


# spok 2008年10月01日(水) 午後9時46分


ひできさん

ご連絡ありがとうございました。
修正してありますので、 1.1.7b 以降にてお試し下さい。
それでも不具合ある場合には、お手数ですが、再度ご連絡ください。


# ひでき 2008年10月02日(木) 午後7時51分

最新の 1.1.7b でバグ直ってました!ありがとうございます。
お礼の意味をこめて使い方をブログに書いてみました!
http://www.hideblog.net/admin/nikkis/show/91

# spok 2008年10月02日(木) 深夜0時26分

ひできさん

ご丁寧な使い方の記事ありがとうございます。
http://www.hideblog.net/nikkis/show/91
今後ともご愛用いただければ幸いです。

サポート過去ログ1

▼ コメント(41件)
# 通りすがり 2008年05月07日(水) 午後8時06分

ヘッダ部分の改行コードが”¥r¥n”のため
WARNING: bad headers - Improper use of control character
というエラーがでました。
”¥n”にすれば問題ないようです。

# 通りすがり 2008年05月07日(水) 午後9時35分

Qdmailを利用してメール送信のテストを行っています。
Cakephp 1.1.19.6305にて$this->Qdmail->easyText();方式
で試した所、ファイル自体は添付されるのですが、添付された時のファイル名が付きません。



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

通りすがりさん

スポックです。コメントありがとうございます。

添付ファイル名の不具合について、バージョンアップしましたので、利用してみてください。(0.8.0a)
最近のバージョンアップで別の部分をいじったときに、添付ファイルの処理がおかしくなっていました。

改行コードについて
調べてみると、改行コードを無理矢理LF->CRLFに修正するMTAがあるようです。想像ですが、おそらく通りすがりさんのお使いの環境がそうであるような気がします。(違うかもしれません。)
今度、時間があるときに、「使い方」のほうで、改行コードを変更して使う使い方をアップしておきたいと思います。
別件ですが、mail関数に渡す本文はLFであることが要求されていることに、今般気が付きましたので、その修正もいれてあります(これは、通りすがりさんの不具合とは関係ないと思います。)


ありがとうございました。


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

ちなみにですが、インターネットを流れるメールのヘッダーの改行コードは、RFC28222で CRLF と定められており、ほとんどのメーラーはこれに従っているかと思います。
しかし、一般的なunix,linuxのテキストの改行コードは、LFのみのため、これに合わせて、MTAがある意味親切に、別の意味では場当たり的に、改行コードを無理矢理 LF → CRLF に変更するMTAがあるようです。
これにより、 CRLF -> CRCRLR となり、変なヘッダー改行コードと認識されてしまうこともあるようです。

# 通りすがり 2008年05月08日(木) 午後1時41分

対応ありがとうございます。
添付ファイル名も正常につきました。
MTAまわりの仕様についてはこちらでも調査し
分かり次第またこちらにてフィードバックさせてもらいます。

詳細な情報と対応ありがとうございました。

# Ron 2008年05月10日(土) 午前11時03分

Qdmailを利用してメール送信のテストをしていました。
なぜがメールが2通送信されてしまうのですが、でもこんなこと言っているのは私だけですので再度、チェックしてみます。

# spok 2008年05月12日(月) 午後0時17分

Ronさん
スポックです。ご利用ありがとうございます。
差し支えない範囲で、環境とコードをお教えいただければ、何かわかるかもしれません。

# Qdmail愛用者 2008年05月14日(水) 午後2時07分

Qdmail、利用させてもらってます。
メールを送信すると、題名が18、19文字目あたりから文字化けをしてしまうのですが、こちらの環境の問題でしょうか?
(その他は問題ありません)

文字コード、エンコード指定ともに、デフォルト状態です。

何か解決策などありましたら、お教えいただければと思います。
よろしくお願いします。



# spok 2008年05月14日(水) 午後7時46分

Qdmail愛用者さん。

ご利用ありがとうございます。
Qdmailは、どんな環境でも文字化けしないことを目指しています。ご迷惑をおかけして申し訳ありません。

当該メールを spo kd eco test 以下、@ヤフーのアドレスに送りつけてみて下さい。上記のIDの空白は抜いてください。(@yahoo.co.jp)

また、別のメールで、以下の情報をお教え願えれば幸いです。

■Qdmailバージョン
■OS名&バージョン
■PHPソースコードの文字コード、改行コード
■できれば、Qdmailを利用している部分のソースコード
■文字化け前の題名
■echo mb_detect_order();の結果。

上記の情報は今後のために個人情報等を抜いた差し支えない範囲で公開することがあります。

たぶん、mimeエンコードの問題か、元の文字コードを誤って判定している可能性があるかもしれません。
半角スペースや全角&半角文字混じりの場合などが、やばいかもしれません。

# spok 2008年05月14日(水) 午後7時57分

追加です。
■echo mb_internal_encoding();
の結果も、できればお願いいたします。


# spok 2008年05月15日(木) 深夜0時08分

Qdmail愛用者さん。
重要な不具合の報告ありがとうございました。
MIMEに厳密なメーラだと文字化けする現象をこちらでも確認しました。
修正版をアップしてみましたので、お試し下さい。

# spok 2008年05月23日(金) 午後7時26分

Qdmail愛用者さんからメールをいただき、無事文字化けが直ったとの連絡がありました。よかったです。

原因は、mimeエンコードした際に、マルチバイトの区切りではないところで、改行が入ったのが原因でした。親切なメーラーでは、問題なく表示させるのですが、rfcに愚直に従っている、becky,gmailでは、場合によっては件名が文字化けしていました。

バージョン0.8.1aで、修正済みです。
マルチバイトで区切りのよい場所で区切ってから、baseエンコード(mimeエンコード)するようにしました。

# Kuma 2008年05月25日(日) 午後10時34分


機種依存文字を利用したくテストしています。
iso-2022-jpですと機種依存文字が?になってしまい。
utf-8 base64に変更してテストしてみました。
所が、utf-8 base64を指定した際に Qdmail0.75以上だと
easyTextで送信したメールがHTMLメールになります。

こちらは、意図的なものでしょうか。

お忙しいとは思いますが、ご確認よろしくお願い致します。

# spok 2008年05月27日(火) 午後8時24分

Kumaさん

重要な不具合のご報告ありがとうございます。
こちらでも再現しました。
修正版をアップロードしましたので、よかったら試してみて下さい。
0.8.2aです。

# nnnnnn 2008年06月13日(金) 午後4時07分

DoCoMo SH903iにデコメを送ってみましたが、
[添付ファイル削除]になりました。

画像を取り除いて、HTMLメールで送っても、
まったく同じ結果になりました。

# kei 2008年06月14日(土) 午後5時05分

Qdmailをお問い合わせフォームに利用させていただいています。

以下のようなタイトルで、かつある一定の長さ以上になると、Yahoo!メールの受信箱(一覧表示)にて表示が崩れます。

【お問い合わせ】080614-001:テストテストテスト 様
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
【お問い合わせ】080614-001:テストテストテスト =?iso-20

メールを開くと問題なく表示されますし、Gmailでも問題はありませんでした。
Yahoo!の中の問題のような気もしますが、Qdmail以外で送信したものには問題が起こりませんでした。

■Qdmail ver 0.8.4a
■WindowsXP Professional(ver2002) SP3
■PHPソースコードの文字コード、改行コード:UTF-8N、LF

# spok 2008年06月15日(日) 午後10時12分

nnnnnnさん

お手数をおかけします~。下記の情報をお教え下さい。

■Qdmailバージョン
■OS名&バージョン
■PHPソースコードの文字コード、改行コード
■できれば、Qdmailを利用している部分のソースコード
■添付ファイルの容量
■他のソフトから同じメールを送信できるかどうか

一番怪しいのは、添付ファイルの容量ですが、10KBを超えていませんか?docomoの制限で10KB以上は受け取れません。


keiさん

せっかく使っていただいているのに、すいませんね~。
yahooメールはテストしていませんでした。。。
現象は再現できましたが、原因究明中です。今しばらくお待ち下さい~。
mimeエンコーディング周りであることは間違いないのですけれども。


# nnnnnn 2008年06月16日(月) 午前9時58分

Qdmailバージョン:0.8.4a
OS:Fedora
文字コード:mb_convert_encodingでutf8にして渡しています。

ソースコード:
$mail = & new Qdmail();


$to[] = array('XXXXXXXX@docomo.ne.jp','docomo terminal');


$body = '<html><body bgcolor="#aabbff"><h1>HTMLメールテスト</h1><b>太字</b><font color="red">文字色を変えてみます。</font><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>';
$body = mb_convert_encoding($body, 'UTF-8', 'EUC-JP');

$title = mb_convert_encoding('デコメテスト', 'UTF-8', 'EUC-JP');
$fromname = mb_convert_encoding('デコメテスト者', 'UTF-8', 'EUC-JP');

$mail -> easyHtml(
$to ,
null ,
$title ,
$body,
'demo@example.com' ,
$fromname,
);

exit();

他のソフトから同じメールを送信できるかどうか:
jphpmailerではできました。

# nnnnnn 2008年06月16日(月) 午前10時01分

ソースコード一部修正します。

カンマを取り除く

$mail -> easyHtml(
$to ,
null ,
$title ,
$body,
'demo@example.com' ,
$fromname
);

# spok 2008年06月16日(月) 午前11時00分

nnnnnnさん

情報ありがとうございます~。
DoCoMo SH903iの実機がないので、完全な再現はできないのですが、P905iの当方では再現しませんでした。。。。
しかし、jphpmailerさんでは、OKとのことですので、qdmailの原因かと思いますが。。。。。

というわけで、私宛に上記のhtmlメールをよろしければ送ってもらえませんか?
当該メールを spo kd eco test 以下、@ヤフーのアドレスに送りつけてみて下さい。上記のIDの空白は抜いてください。(@yahoo.co.jp)

直接送るのが抵抗あるのであれば、
送信直前に
$mail -> debug(2);
としておくと、実際にはメールが送信されませんが、その送るべきデータが、画面に表示されるはずです。それをコピペして、添付ファイルでお送りしただくか、ここのコメント欄に貼り付けて下さい。
ただし、このデータにはメールアドレスなどの情報がそのまんま入っていますので、ここに貼り付ける場合は、必ず「非公開コメント」にチェックマークを入れて下さい。


次は念のための確認です。
■携帯端末の設定で、添付ファイルは受信するようになっていますか?(他のメーラーさんで大丈夫なのだから、そうなっているとは思いますが。でも、jphpmailerさんってデコメ送れましたっけ?)
■デコメを送信するときには、easyDecoを使用していますか?(easyHtmlではなく)

さらにちなみにですが、
qdmailではmb_convert_encodingでわざわざutf-8に変換する必要はないです。そのままeuc-jpで渡しても、文字コードを自動判別するようになっています~。もちろん、今のままutf-8に変換していただいても大丈夫ですけど、どちらかというと内部エンコーディングのまま渡していただいたほうがトラブルは少ないかも知れません。
(もっとも、今回のトラブルとは関係ないと思います。)


# nnnnnn 2008年06月16日(月) 午前11時48分

記述が分かりづらいかもしれないので説明させていただきます。

easyHtmlで画像添付なし送信結果
[添付ファイル削除]のエラー

easyDecoで画像添付送信結果(画像は2つ、両方とも1kb以下のjpg)
[添付ファイル削除]のエラー

jphpmailerでは画像なしのhtmlメールを試した結果です。

# spok 2008年06月16日(月) 午後6時22分

keiさん
情報ありがとうございました。修正版をアップしましたのでお試し下さい。0.8.5a
原因は、
http://www.cpa-lab.com/tech/092
でした。これにyahooメールの一覧画面はうまくデコードできなかったようです。keiさんの情報がなければ気づかなかったところでした。ありがとうございました。

# spok 2008年06月16日(月) 午後6時30分

nnnnnnさん
メール&非公開コメント情報ありがとうございました。
そのメールを、P905iに転送したところ、不具合なく、表示されました。(html,デコメとも)。
SH903iの何かメールデコードに特有のものがあるように思いますが、jphpMailerさんがきちんと表示できるということなので、実機を友人から借りようと思います。ただし若干の時間がかかるかも知れません。この機種なのか、シリーズの問題なのかも今の時点ではわかりません。。。。
ちなみに、「添付ファイル削除」とだけ表示されるのは、ヘッダーのcontent-type(boundary以下)がうまくデコードできない時のようです。ですのでなんとなく、何かしらboundaryの制約があるのではないかと睨んでいます。

もし、他の機種でOK,NGなど情報ありましたら、教えていただけるととてもうれしいです。

# nnnnnn 2008年06月17日(火) 午前11時59分

debug(2)のデバック関数を使って、
easyHtmlとeasyDecoの関数で出力した結果の、
メール部分をJISに変換したファイルを、
qmailから直接qmail-injectでテスト送信したら、
問題なく表示されました。

phpの送信部分に問題があるのかもしれません。
ちなみにqdsmtpは使っていません。
phpのバージョンは5.2.5です。

# spok 2008年06月17日(火) 午後1時46分

おおお、重要な情報ありがとうございます。
SH903iの端末の問題ではなさそうですね。
こちらもPHPのmail関数に渡す部分を再検証してみます。

qmailについては、改行コードに若干の問題があるようです。(私も知りませんでした。)
参考URL)
http://d.hatena.ne.jp/hirose31/20060301/1141194913
http://ya.maya.st/mail/qmail-violations.html

ヘッダもLFのほうがよさげなので、qdmailの350行目付近に「var  $LFC」の定義があります。これをCDLFではなくLFに変更してみてください。(”¥n”のみに変更(半角で))

# nnnnnn 2008年06月17日(火) 午後2時22分

var $LFC = "\n";
に変更してうまくいきました。


ありがとうございました。

# spok 2008年06月17日(火) 午後4時13分

nnnnnnさん
重要な情報をありがとうございました。qmailがこんなに特殊とは思ってもみませんでした。今後のバージョンアップ時には、qmailの自動判別機能を検討したいと思います。

# kei 2008年06月17日(火) 午後5時04分

spokさん

おかげさまで問題は解決しました。素早い対応ありがとうございます!
また一つ文字化けに関する問題(?)を発見しました。
(再現実験をしていないので、どのあたりに問題があるのかわからないです。申し訳ありません)
ロシア語であろう本文テキストを持つメールが当該フォームから送られていたのですが、その際に一部日本語項目(「AAAについて」というようなセレクト項目)が文字化けしておりました。
送信フォームで送る際の問題のような気がするので、完全な対応というものは不可能かもしれませんが、ご報告までに。

ありがとうございます。

# spok 2008年06月17日(火) 午後9時46分

keiさん
問題解決なによりです。こちらも助かりました。
ロシア語については、たぶんiso-2022-jpでは対応しきれないような気がしますが、再現するようであれば、お手すきの時にご連絡いただければ幸いです。(ロシア語の一般的な文字コードは、koi8_rというものだそうです。)

多言語対応するには、UTF-8 の Base64エンコーディング が最も文字化けしにくいとは思います。。。。。

# spok 2008年06月18日(水) 午後2時42分

nnnnnnさんの情報をもとに、0.8.6aをアップしました。
qmailの自動判別機能を備えましたが、私の環境でqmailを試すのが面倒なので、qmail環境のどなたか人柱になっていただけると幸いです。
http://hal456.net/qdmail/trouble
をご参照ください。

# kei 2008年06月23日(月) 午後2時39分

spokさん

お調べいただきありがとうございます。フォームの性質上、ロシア語でメールを受け取る必要性が低いので、iso-2022-jpのままで行くことにしました。

さて、新たな文字化けが発現しましたので報告いたします。
↓↓↓↓
スペック
↑↑↑↑
(半角カタカナで「スペック」と書いてあります)

全てを調べたわけではないのですが、文字列中に半角カタカナが混じっていると、半角部分が文字化けを起こすようです。
入力チェックの際に変換することで対応する方がよいでしょうか?

■Qdmail ver 0.8.5a
■WindowsXP Professional(ver2002) SP3
■PHPソースコードの文字コード、改行コード:UTF-8N、LF

# spok 2008年06月23日(月) 午後8時35分

keiさん
いつも情報ありがとうございます。
半角カナは非常に悩ましい問題で、今までほったらかしにしておりました。
http://hal456.net/qdmail/kana
のコンテンツを加えましたので、ご参照下さい。

一番いいのは、ヘッダーはiso-2022-jpのままで半角カナは使わせない(または全角カナに変換する)。本文は、UTF-8 + BASE64にして半角カナを使わせる方法です。UTF-8Nでうまくいくのかどうかはテストしていないので、わかりません。
ヘッダーもUTF-8でもいいのですが、一部のau携帯がヘッダーのUTF-8のmimeデコードができない機種があるので。。。。。

http://hal456.net/qdmail/kanaのどれもが完全な解決策ではありませんが、工夫してみていただければ幸いです。

文字化け完全制覇を目指すQdmailとしては、中途半端で心苦しいのですが。。。中期的に対応策を考えたいと思います。

# kei 2008年06月23日(月) 深夜1時22分

spokさん

いつもすばやい対応ありがとうございます。入力チェックの際に変換することで対応することにします。

「半角カナの送信」を拝読しました。
>ただし、mb_convert_kanaは、濁点も一文字として数えますので、
これは、mb_convert_kanaのオプション「V(濁点付きの文字を一文字に変換します。"K", "H" と共に使用します)」を使用すれば解決できそうな気がします。(また試してみることにします)

文字化け完全制覇、応援しております!

# spok 2008年06月24日(火) 午前7時19分

keiさん
Vオプションをすっかり見落としておりました。
ご指摘ありがとうございます。次回更新時に反映させたいと思います。m(__)m

# ひじり 2008年06月25日(水) 午後4時03分

qdsmtpと合わせてqdmailを愛用させていただいております。

同じ宛先に、本文を変えてメールを2通送りたいのですが、
$bodyを変更して、$ml->easyTextを2回実行しただけでは、内容が変わりませんでした。

newでもう一度生成するのは処理が遅くなるので、
一旦クローズする(メモリを解放する?デストラクタ?)ことができれば大丈夫なのかなと思いますが、
方法があれば教えていただけると幸いです。

# spok 2008年06月25日(水) 午後8時01分

ひじりさん
重要な情報ありがとうございます。バグです。
0.8.8aにて修正しておりますので、ご利用ください。
もし、現行バージョンでしのぐのであれば

easyTextで1回目を送った後に、

$ml -> reset();

としていただければ、たぶんいけると思います。


# ライト 2008年06月28日(土) 深夜1時53分

はじめまして、
素晴らしいライブラリをありがとうございます。

ひとつ質問させていただきたいのですが、
エラーメッセージをphpで受け取ることは可能でしょうか?

if($mail = & new Qdmail()) エラー内容 ;
のような方法が利用できれば便利だと思いました^^

# spok 2008年06月29日(日) 午後10時30分

ライトさん

if($mail = & new Qdmail()) エラー内容 ;
という方法は少々難しいかも知れません。

参考:http://www.php.net/manual/ja/language.oop5.basic.php#language.oop5.basic.new

かわりに、Qdmailのエラー処理の方法をアップしておきました。
いつかはアップしなくては、と思ってサボっておりましたが、ライトさんの後押しでアップロードすることができました。
http://hal456.net/qdmail/error_display
http://hal456.net/qdmail/error_base
あたりをご参照下さい。

# ライト 2008年06月29日(日) 午後11時29分

spok様

早急なご対応ありがとうございます。
やりたいことができるようになり、感謝の気持ちでいっぱいです^^

今後のご発展を心よりお祈りいたします。

# ひじり 2008年06月30日(月) 午前9時05分

早速のご返信とご対応、ありがとうございました。
ライブラリの素晴らしさはもちろん、対応の素早さに感服です。
今後も愛用させていただきます。

# spok 2008年06月30日(月) 午後1時07分

ご利用の皆様
トップページのコメント欄が多くなってきてしまいましたので、今後は、
http://hal456.net/qdmail/support
でお受けいたします。
皆さんの情報のおかげで、Qdmailはかなり安定してきていると思います。コメントしていただいた方、ありがとうございました。
こちらのコメント欄は、新規書き込みについては閉じさせていただきます。

2008/10/22(水) 2008-10-22

Qdmaiのダウンロードページはこちら
  • 2008-10-23
    • 1.2.6b
mimeエンコードが特定の文字数だと、最後に空白のエンコードをしてしまうバグ修正
(mimeEncodeメソッド)