NMSMTPの添付ファイルについて教えてください


TAN  2003-07-09 00:58:40  No: 4050

はじめまして
どなたか、NMSMTPコンポーネントについて
詳しい方が見えましたら教えてください。m(__)m
今、NMSMTPコンポーネントを使ってメールを送信するPGを
作っています。
ノーマルなメールはうまくいくのですが、添付ファイルがある
メールの送信がうまくいきません。
原因は、FinalHeader の所の記述と、本文に挿入されたBundaryの内容が
異なっていることではないかと思うのですが、
本文に付いてしまう、Bundaryの値の取得方法がわからず悩んでいます。
具体的には、
SendStartイベントにて
  NMSMTP1.FinalHeader.Values['Content-Type']
          :='multipart/mixed;';
NMSMTP1.FinalHeader.Add('boundary="===================='+'kugirimoji'+'===="');
のように仮に区切り文字を設定して送信すると、

・・・
上部省略

Mime-Version: 1.0
Content-Type: multipart/mixed;
boundary="====================kugirimoji===="

--====================5453513:05:58====
Content-Type: text/plain;                        charset=us-ascii

テスト2−1

下部省略
・・・

と言った具合に、5453513:05:58と言う、タイムスタンプらしき
データが付いてしまい、結果して、本文と分離できなくなっていると
思うのですが、5453513:05:58  の値の取得方法がわかりません。
どなたか、ご存じの方が見えましたら、よろしくお願いいたします。
では


にしの  2003-07-09 01:16:25  No: 4051

そのまま、boundaryに指定された文字列で探せばOKです。
区切りは、
--boundaryに指定された文字列
となります。
最後だけ、
--boundaryに指定された文字列--
となります。
注意:複数の添付ファイルがある場合は、それぞれ違う文字列の場合もあります

詳しくは、RFC2049を参照してください。


TAN  2003-07-09 02:26:16  No: 4052

TANです。
にしのさん、RESをありがとうございます。m(__)m
boundaryびは、"===================='+'kugirimoji'+'===="  と指定
しているにもかかわらず、実際に送信すると、--====================5453513:05:58====のように変化してしまいます。
この部分は、どう探せばいいでしょう?
申し訳ありませんが、再度ご教授をよろしくお願いいたします。
では


にしの  2003-07-09 05:11:21  No: 4053

boundaryを指定しているのでなく、FinalHeaderを変更しているんですよね?
boundaryは、NMSMTPが自動でつけているので、ヘッダだけでなく本文中のboundaryも変更する必要があります。
こちらにNMSMTPの環境がないのでよくわかりませんが、次のどちらか簡単な方で実現できます。
その1.メッセージの本文中、区切り文字列を検索して置換。
その2.添付ファイルのエンコードを含めて、自前でメッセージを作成。

その1ができるのであれば、こちらの方が簡単だと思います。
メッセージ中の置換ができないのなら、その2になりますが、自前で作ったメッセージを、NMSMTPで送れるかどうかはわかりません。


TAN  2003-07-10 00:40:29  No: 4054

にしの様
TANです。
その後色々やってみまして、FinalHeaderプロパティーの
初期値として、multipart/mixedを指定すると、
boundaryが引き継がれることがわかりました。
これにより、添付ファイルは分離できるようになったのですが、
しかし、そうすると今度は  charasetの値が引き継がれず本文が化けてしまう結果になってしまいました。
本文のcharasetはUS-ASCIIになっており、
これを変更できないですねー
うーむ。NMSMTPコンポーネントはここまででしょうかー!?(涙)
こまりましたー。
そんな感じです。
ではでは


にしの  2003-07-10 00:56:23  No: 4055

http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=041418
ここに似たようなことが書いてありました。
boundaryを指定するには、本文にエンコードしたものをつけて、ヘッダを自前で書き直すだけのようです。

これでうまくいくでしょうか。
# それともこれでcharsetがうまくつかなかったのでしょうか


TAN  2003-07-10 08:12:59  No: 4056

ご指摘のMLは、私の方でも呼んでおりましたが、
MLにもありましたように、NMSMTPを使う意味が無いような
気が私もします。
一度別のコンポーネントなども試してみようかと思います。
ありがとうございました。m(__)m
なにか、このコンポーネントはいいですよというのがあったら、
教えてください。よろしくお願いいたします。
では


にしの  2003-07-10 08:33:23  No: 4057

icsかIndyでしょうね。
どちらも癖のあるコンポーネントですが、ソースがある分、FastNetコンポーネントより小回りがききます。
ただし、英語のコンポーネントなので、日本語関連の部分が弱いのは、FastNetと同じです。


TAN  2003-07-10 18:08:02  No: 4058

やっぱり、ICSかINDYですかー。
もろもろ、色々なMLを見ていて目にとまるのがそれですね。
一度ためしてみます。
ありがとうございました。m(__)m


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加