はじめまして。初の投稿となります、おうかと申します。
早速質問なのですが、Delphiでメールに複数ファイルを添付して送信することはできますか?また、出来るのならばどのような方法を使えばよいのでしょうか?
今、IndyのIdSMTPをつかって添付ファイルつきメールを送るプログラムを作っています。
添付ファイルつきメールを送信するところまではこちら↓
http://oto.chu.jp/kujira/text/delphi/mail/sendmail.htm
のサンプルで出来ていたので、参考にさせていただきました。
しかし、「メールに複数のファイルを添付」の部分については、Indyのヘルプ、Google等で調べたのですが、探し方が悪いのか、分かりませんでした。
そして、現在はTIdAttachment.FileNameを使っているのですが、その部分のヘルプを見てみたところ、複数ファイルには対応していないように見えます。
…Indyで、もしくはDelphiでメールに複数ファイルを添付して送信することは出来ないのでしょうか?
ちなみに、現在の開発環境は、Delphi7,ProfessionalとOSはWindows2000です。
何か良い方法をご存知の方は、よろしくご指導お願いします。
ふたスジ: 「INDY、ダメコンポやな」
ひとスジ: 「そんなことない!」
ふたスジ: 「てんぷファイル一個しか送れんのやろ?」
ひとスジ: 「そんなことない!!」
ふたスジ: 「おまえ、アホないやろ」
ひとスジ: 「そんなことない!!!」
//添付ファイル1
aAttach := Edit1.Text;
if aAttach <> '' then begin
with TIdAttachment.Create(msg.MessageParts, aAttach) do begin
FileName := JConvert.ConvertJCode(ExtractFileName(aAttach), JIS_OUT);
end;
end;
//添付ファイル2
aAttach := Edit2.Text;
if aAttach <> '' then begin
with TIdAttachment.Create(msg.MessageParts, aAttach) do begin
FileName := JConvert.ConvertJCode(ExtractFileName(aAttach), JIS_OUT);
end;
end;
//添付ファイル3
aAttach := Edit3.Text;
if aAttach <> '' then begin
with TIdAttachment.Create(msg.MessageParts, aAttach) do begin
FileName := JConvert.ConvertJCode(ExtractFileName(aAttach), JIS_OUT);
end;
end;
複数添付の方法は、頑固ひとスジふたスジさんの書いた通りですが、1つだけ^^;
> ふたスジ: 「INDY、ダメコンポやな」
> ひとスジ: 「そんなことない!」
ダメコンポに1票。
長い日本語のSubjectだと化けます。
jconvertを使用すれば回避できると思いますが、複数行のMIMEにするときは、各行をJISで完結するようにエンコードしてください。
複数のMIME行を含む日本語は、次のような規則で連結する必要があります。
MIME MIME -> MIMEデコード結果 + MIMEデコード結果
半角文字列 MIME -> 半角文字列 + ' ' + MIMEデコード結果
MIME 半角文字列 -> MIMEデコード結果 + ' ' + 半角文字列
半角文字列 半角文字列 -> 半角文字列 + ' ' + 半角文字列
この辺は、実際に変換してみると解ると思いますが、念のため。
IndyのUnitの中で、Initializationで確保したメモリを、Finalizationで開放していない部分があります。
コメントには「解放しないこと」と書かれていますが、このままだとMemCheckでメモリリークしてると怒られます^^;
デバッグでMemCheckを使用しているのであれば、注意してください。
返信遅れてしまってすみません<(_ _)>
すごい!出来ました!
TIdAttachment.FileNameのヘルプ見て、出来ないと思い込んでいたんですが。少し変えるだけで出来たんですね(^^;)自分の勉強不足が恥ずかしいです…。
頑固ひとスジふたスジ様、にしの様、丁寧なご指導どうもありがとうございました。とても勉強になりました(^^)
ツイート | ![]() |