Indy 10とTIdAttachmentを使用してDelphiプログラムを使用して添付ファイル付きの電子メールを生成しています。ファイルの場所/名前は//server/files/attachments/MyAttachment.pdfというデータベーステーブルに格納されます。Delphi - TIdAttachment、添付ファイルのファイル名からパスを削除する
// Add each attachment in Attachments
for Attachment in Attachments do begin
// Make sure file name exists before trying to add
if FileExists(Attachment) then
TIdAttachmentFile.Create(MessageParts, Attachment);
end;
私は、添付ファイルが
'__server_files_attachments_MyAttachment.pdf'
受信者が電子メールを受信したときに添付ファイルが 'MyAttachment.pdf'と表示されるようにファイルパスを削除する方法はありますか?
私はExtractFileName()を使用しようとしましたが、運はありませんでした。パス&が1つの文字列としてデータベースから来ているので、私はそれが動作するとは思わない。
EDIT
私も次のようにファイル名自体を抽出しようとした:この戻り「MyAttachment.pdf」
function GetFileName(FullPath: string): string;
var
StrFound: TStringList;
begin
StrFound := TStringList.Create();
ExtractStrings(['/'], [' '], PChar(FullPath), StrFound);
result := StrFound[StrFound.Count - 1];
end;
が、これは上のプログラムフォルダ内に探しデルファイになり'// server/files/attachments'にないファイルに対して実行されています。 TIdAttachmentFile.Create()を呼び出した後に添付ファイルの名前を変更できない限り、ファイル名を変更することはできません。
EDIT - SOLUTION
レミーのコメントを使用してソリューションを表示(上からGetFileName()
を使用して):
// Add each attachment in Attachments
for Attachment in Attachments do begin
// Make sure file name exists before trying to add
if FileExists(Attachment) then begin
with TIdAttachmentFile.Create(MessageParts, Attachment) do begin
Filename := GetFileName(Attachment);
end;
end;
end;
「ExtractFileName」には何を渡しましたか? –
私はExtractFileName(添付ファイル)を呼び出しました。ここで「添付ファイル」は「//server/files/attachments/MyAttachment.pdf」 – BrianKE
Remyの答えの一番下に解決策を投稿する方が良いでしょう。質問はちょうど...質問です。他の誰かの投稿を自由に編集することができます。したがって、知識を共有する場所です;) – bluish