如何使用Indy的smtp服务器组件发送邮件?

eKe*_*ek0 9 delphi indy

由于http://www.indyproject.org/Sockets/Demos/index.EN.aspx中给出的演示只将接收的流保存到文件中,因此我不知道如何有效地将该流作为邮件发送.

谁能教我如何做到这一点或指出一些更完整的例子?

Hea*_*are 13

以下是有关如何发送电子邮件的完整示例:

VAR SMTP : TIdSMTP;
VAR MSG : TIdMSG;
.
.
  MSG:=TIdMSG.Create(NIL);
  TRY
    WITH MSG.Recipients.Add DO BEGIN
      Name:='<Name of recipient>';
      Address:='<Email address of recipient>'
    END;
    MSG.BccList.Add.Address:='<Email address of Blind Copy recipient>';
    MSG.From.Name:='<Name of sender>';
    MSG.From.Address:='<Email address of sender>';
    MSG.Body.Text:='<Message Body>';
    MSG.Subject:='<Subject of message>';
    SMTP:=TIdSMTP.Create(NIL);
    TRY
      SMTP.Host:='x.x.x.x'; // IP Address of SMTP server
      SMTP.Port:=25; // Port address of SMTP service (usually 25)
      SMTP.Connect;
      TRY
        SMTP.Send(MSG)
      FINALLY
        SMTP.Disconnect
      END
    FINALLY
      SMTP.Free
    END
  FINALLY
    MSG.Free
  END;
.
.
Run Code Online (Sandbox Code Playgroud)

(我知道WITH是不受欢迎的,但我通常在这样的情况下使用它,毫无疑问是什么,以及没有(或只是无限小)模糊的机会)

  • 哇 - 这段代码尖叫.我将其大部分转换为混合大小写或小写,以使其对大多数Delphi开发人员的眼睛更友好. (21认同)

小智 9

SMTP 服务器组件无法发送邮件 - 它只能接收邮件.您需要SMTP 客户端组件(TidSMTP)来发送邮件.邮件服务器在发送邮件时就像SMTP客户端一样.