【问题标题】:Send email with attachment in Delphi在 Delphi 中发送带附件的电子邮件
【发布时间】:2014-04-24 03:58:08
【问题描述】:

如何在 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);

有人可以帮我吗?

【问题讨论】:

    标签: html delphi smtp email-attachments


    【解决方案1】:

    阅读我在 Indy 网站上的博客,我详细讨论了这个主题:

    HTML Messages

    New HTML Message Builder class

    考虑到这一点,试试这个:

    FIdMessage.Clear;
    FIdMessage.From.Address := 'EmailRemetente';
    FIdMessage.From.Name    := 'Apelido';
    FIdMessage.Subject      := 'Assunto';
    FIdMessage.Recipients.EMailAddresses := 'aEmailDestinatario';
    FIdMessage.BccList.EMailAddresses := StringReplace(Trim(BCCList.Text),sLineBreak,',',[rfReplaceAll]);  
    FIdMessage.ccList.EMailAddresses := StringReplace(Trim(CCList.Text),sLineBreak,',',[rfReplaceAll]);
    FIdMessage.ContentType := 'multipart/mixed';
    
    with TIdText.Create(FIdMessage.MessageParts, nil) do
    begin
      ContentType := 'text/html';
      Body.Text := 'Mensagem';
    end;
    
    _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;    
    

    或者这个:

    FIdMessage.Clear;
    
    with TIdMessageBuilderHtml.Create do
    try
      Subject := 'Assunto';
      Html.Text := 'Mensagem';
    
      _Anexo := TStringList.Create;
      try
        _Anexo.Text := aAnexos;
        for i := 0 to _Anexo.Count - 1 do
          Attachments.Add(_Anexo.Strings[i]);
      finally
        _Anexo.Free
      end;
      FillMessage(FIdMessage);
    finally
      Free;
    end;
    
    FIdMessage.From.Address := 'EmailRemetente';
    FIdMessage.From.Name    := 'Apelido';
    FIdMessage.Recipients.EMailAddresses := 'aEmailDestinatario'; 
    FIdMessage.BccList.EMailAddresses := StringReplace(Trim(BCCList.Text),sLineBreak,',',[rfReplaceAll]);  
    FIdMessage.ccList.EMailAddresses := StringReplace(Trim(CCList.Text),sLineBreak,',',[rfReplaceAll]);
    

    【讨论】:

      猜你喜欢
      • 2015-08-28
      • 2011-01-28
      • 1970-01-01
      • 2014-04-23
      • 2019-03-09
      • 2015-09-09
      • 1970-01-01
      相关资源
      最近更新 更多