• 締切済み

Delphi6でメール送信プログラム

実行時に下記エラーになってしまいます。 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 ;

みんなの回答

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

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

NAGA-P
質問者

お礼

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

NAGA-P
質問者

補足

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

関連するQ&A