如何在 HTML 格式的电子邮件中发送附件?
我设法使用 stmp.gmail.com 以 HTML 格式发送电子邮件,但我的电子邮件有一个附件。附件被转换为字符串,但我需要它是原始文件格式。
代码:
with FIdSmtp do
begin
// Configure IdSMTP
end;
FIdMessage.Clear;
FIdMessage.MessageParts.Clear;
FIdMessage.From.Address := 'EmailRemetente';
FIdMessage.From.Name := 'Apelido';
FIdMessage.Subject := 'Assunto';
FIdMessage.Body.Text := 'Mensagem';
FIdMessage.Recipients.EMailAddresses := 'aEmailDestinatario'; //email destino
FIdMessage.BccList.EMailAddresses := StringReplace(Trim(BCCList.Text),#13#10,',',[rfReplaceAll]);
FIdMessage.ccList.EMailAddresses := StringReplace(Trim(CCList.Text),#13#10,',',[rfReplaceAll]);
FIdMessage.ContentType := 'text/html'; // set html format
_Anexo := TStringList.Create;
try
_Anexo.Text := aAnexos;
for i := 0 to _Anexo.Count - 1 do
TIdAttachmentFile.Create(FIdMessage.MessageParts,_Anexo.Strings[i]);
finally
_Anexo.Free
end;
FIdSmtp.Send(FIdMessage);
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗?
我试图使用system.filesize函数来获取delphi中的文件大小,它适用于文件<4GB但文件> 4GB失败.所以我实现了我自己的,打开所需的文件作为文件流,并获得完美的streamize.
这是一个片段
function GiveMeSize(PathtoFile : string): int64;
var
stream : TFileStream;
size : int64;
begin
try
stream := TFileStream.Create(PathtoFile, fmOpenReadWrite or fmShareDenyNone);
size := stream.size;
except
showmessage('Unable to get FileSize');
end
finally
stream.free;
end;
Run Code Online (Sandbox Code Playgroud)
但我上面的函数的问题是它打开文件,在处理大量文件时会产生一些开销.是否有任何功能可以获得文件大小> 4GB的文件而无需先打开文件?我已经尝试了一些在线功能,但他们倾向于报告大于4GB的文件的错误文件大小.
德尔福版:XE5
谢谢.