プロが教えるわが家の防犯対策術!

実行時に下記エラーになってしまいます。
EFOpenError'ファイル xxxxxx は開けません'
xxxxxxはファイル名でJISに変換された後の文字列が表示されています。
よろしくお願いいたします。

msg := TIdMessage.Create(IdSmtp);
with msg do
begin // 以下JIS変換済
Subject := asubject;
Recipients.EMailAddresses := amailto;
From.Text := afrom;
Body.Text := abody;
CharSet := 'ISO-2022-JP';
ContentType := 'text/plain';
end;
IdSmtp.Host := ahost;
IdSmtp.UserId := edtUserName.Text ;
//添付ファイル
aattach := edt.Text ;
with TIdAttachment.Create(msg.MessageParts, aattach) do
begin
//次の1行をコメントにすると送信は出来るのですがファイル名が文字化けしてしまいます
FileName := jconvert.ConvertJCode(ExtractFileName(aattach), JIS_OUT);
end;
//送信
IdSmtp.Connect;
IdSmtp.Send(msg);
IdSmtp.Disconnect ;

A 回答 (1件)

>EFOpenError'ファイル xxxxxx は開けません'


>xxxxxxはファイル名でJISに変換された後の文字列が表示されています。
という事は添付ファイルaattachをmsgに追加するときにエンコードしたファイル名の文字列をそのまま渡しているのでエラーになってるという事ですよね。
Createした後にファイル名を指定して渡してるはずなのにファイル名ではなくエンコードしたものが渡されているならCreateしているステップの前の記述が余分?

この回答への補足

回答ありがとうございます。
>・・・エンコードしたファイル名の文字列をそのまま渡しているの・・・
結果を見るとそのようになっているようです。
この書き方を紹介しているHPでは「Create とした後に、再度、ファイル名を指定」とありましたが、Sampleでは上記書き方になっていました。
ということは、「再度、ファイル名を指定」しているつもりがCreateと同時にエンコードしているようですね。
とういことで、先ほどから「再度、ファイル名を指定」をやろうとしているのですが、まだうまくいきません。

補足日時:2004/12/13 10:45
    • good
    • 0
この回答へのお礼

やっぱりだめでした。
別の方法も探してみます。

お礼日時:2004/12/16 10:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!