NMSMTPでメール送信時に空白行か挿入

解決


ぼうや  2003-06-16 21:11:07  No: 3766

NMSMTPを使ってメールを送信するものを作ってるんですが
送信された本文を見ると空白行が一番上に挿入されています。
なにかNMSMTPの設定で変えられないんでしょうか?
ちなみに送信部分のコードは
NMSMTP1.PostMessage.FromAddress:= Edit1.Text;
NMSMTP1.PostMessage.FromName := Edit2.Text;
//件名
NMSMTP1.PostMessage.Subject := edtTitle.Text;
NMSMTP1.PostMessage.ToAddress.Add(cmbSendAddress.Text)
//本文
NMSMTP1.PostMessage.Body.Assign(memoBody.Lines);
NMSMTP1.SendMail;
です。Delphi5です。
よろしくお願いします。


にしの  2003-06-17 01:31:08  No: 3767

メールのヘッダと本文の間には、「必ず」空行が1行入りますが、それ以外に挿入されるということでしょうか。


ぼうや  2003-06-17 17:42:50  No: 3768

送ったメールをOutlookなどのメールソフトで見たときに
先頭行に半角空白文字が1つ入って改行されている状態です。
実際にメッセージのソースを見ると、ソースにも本文の前に
1行あります。OSはWindowsNTです。
よろしくお願いします。


にしの  2003-06-17 20:57:40  No: 3769

内容は単純な物なのですよね?
例えば、
From: test
Subject: Test

Test
というメッセージを送ったときに、
From: test
Subject: Test

Test
となるということでしょうか。
前にも書いたとおり、本文の前に空行があるのはRFCにて定義されている「正常な動作」です。
ヘッダと本文を切り分けるために必要な行です。
それ以外に入るのであれば、考えられるのは
・プログラム
・サーバ
・メーラ
のどれかです。
問題がなければ、受信したメッセージのソースを提示してみてください。
ヘッダ部分と本文部分を、メッセージ上のイメージのまま(ヘッダと本文を分けずに)提示していただければ、もしかしたらわかるかもしれません。

余談になりますが、NMSMTPは使いづらくありませんか?
日本語処理は自前で必要ですし、日本語OS環境では添付ファイルの処理にバグがあるようですし。


ぼうや  2003-06-19 00:33:57  No: 3770

受信したメールのソースです。
X-Apparently-To: ***********@yahoo.co.jp via web2205.mail.yahoo.co.jp; 18 Jun 2003 15:26:09 +0900 (JST)
X-Track: -40
Received: from ns.chin.ne.jp (***********)
  by mta14.mail.yahoo.co.jp with SMTP; 18 Jun 2003 15:26:06 +0900 (JST)
Received: (qmail 22406 invoked from network); 18 Jun 2003 15:25:57 +0900
Received: from ***********.bbtec.net (HELO ***********) (220.55.136.32)
  by ns.chin.ne.jp with SMTP; 18 Jun 2003 15:25:57 +0900
From: TestName<***********@chin.ne.jp>
To: ***********@yahoo.co.jp
Subject: Test
Mime-Version: 1.0
Content-Type: text/plain; charset=iso2022-jp

Test
以上です。正常だと本文のTestの前の空白行は1行だけです。
やはり、NMSMTPで送信すると1行余分についてしまいます。

ところで、NMSMTP以外で何かあるんでしょうか?


にしの  2003-06-19 00:43:50  No: 3771

Content-Type: text/plain; charset=iso2022-jp
の設定をするとき、改行コードをつけていませんか?
単純に、
NMSMTP1.FinalHeader.Values['Content-Type'] := 'text/plain; charset=iso-2022-jp';
としていますか?
# FinalHeader.Assignなどで設定していませんか?

NMSMTP以外では、icsや、Indyがあります。
どちらも英語圏ですが、NMSMTPよりは使い勝手がよろしいかと。
# 私見ですが


ぼうや  2003-06-19 17:44:59  No: 3772

早いレスありがとうございます。

Charsetはデザイン時にiso2022-jpに設定しています。
Content-Type: text/plain;というのがわかりません。
Subtypeはデザイン時にmtPlainにしてるんですが。
それとにしのさんが書かれてるとおり、
NMSMTP1.FinalHeader.Values['Content-Type'] := 'text/plain;
charset=iso-2022-jp';としたんですが変わりません。

NMSMTP1.PostMessage.Body.Assign(memoBody.Lines);がおかしいのかと思い
NMSMTP1.PostMessage.Bodyに一行ずつ追加してそのあとに
ListboxにNMSMTP1.PostMessage.Bodyの内容を表示させたんですが、
Listboxにはちゃんと空白行なしで表示されます。ということは、
NMSMTP1.PostMessage.Bodyの中には問題なく追加されていると思うんですが
「それが仕様だ」と言われればそれまでなんでしょうが、
何かこちらのおちどでそうなっているようで...


にしの  2003-06-19 18:11:28  No: 3773

Bodyの内容と言うよりも、Headerのほうが問題なのだと思います。

OnSendStartのとき、NMSMTP1.FinalHeaderの最後の行は空白行ではないですか?
もし空白行なら、(なぜ空白行が入るかはわかりませんが)その行をDeleteしてみてください。

StringListは、最後に改行をつけるという仕様がありますので注意です。
つまり、エディタなどで
ABC[改行]
DEF[改行]
G[EOF]  <---改行せず
として保存したものを、TStringList.LoadFromStringすると、
ABC[改行]
DEF[改行]
G[改行]
となってしまいます。


ぼうや  2003-06-19 22:08:21  No: 3774

FinalHeaderをMemoに書き出してみました。
********** 以下 Memo内容 ***********
From: TestMessenger<bouya@****.co.jp>
To: gorogoro@****.co.jp
Subject: Test
Mime-Version: 1.0
Content-Type: text/plain; charset=iso2022-jp
************************************
となっています。
FinalHeaderのCountも5ですから正常だと思うんですが、
OSがWindowsNTというのがネックになっているんでしょうか?


にしの  2003-06-19 23:55:33  No: 3775

http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=058305
このあたりがまさにそれだと思いますが、ここにある対処法でも無理でしょうか。


ぼうや  2003-06-20 00:54:39  No: 3776

Delphi-MLはまず最初にチェックしたんですが...
おかげで見事に1行目の空白行は取れました。
いまいち、理解に苦しむんですが、どちらが本当というのはないんでしょうが
先に様々な設定を済ましていざ送信っていうのが、
流れ的には正しいようなんですが、今回紹介いただいたものは
SendStartは実際送信の直前だからそうなんだと言われればそうなんですが
PostMessage.Bodyというプロパティがあるにもんですから
FinalHeaderで設定するというのが判りませんでした。
いろいろ勉強になりました。
どうも大変長い間お付き合いいただきありがとうございました。

それと、ICSをDLしてみようと思います。その件もありがとうございました。


にしの  2003-06-20 02:37:07  No: 3777

Delphi5であれば、Indyのほうがよろしいかと思います。

Indy9.00.13が最新です。
余談ですが、Indy10が出ているようです。まだベータ版ですが。

Indy
http://www.nevrona.com/Indy/

ICS
http://www.overbyte.be/


ぼうや  2003-06-20 19:24:32  No: 3778

にしのさん こんにちわ
Indy さっそくDLしてみました。バージョンは9.00.13です。
サンプルコードを見つけ、あっさりできました。
ただ、OEでいう送信者がメールアドレスで表示されるのがまだ
ヘルプをみてやってみようと思います。
Indyはあっちこっちで評判もいいみたいですね。
ありがとうございました。


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

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






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