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

10
2个回答

14

下面是一个完整的示例,演示如何发送电子邮件:

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;
.
.

我知道WITH语句不被推荐使用,但通常在像这样明确且没有歧义(或仅有微小的歧义)的情况下使用它。


22
哇——这段代码真是喊出来了。 我会把大部分转换成混合大小写或小写,以使它更加友好,适合大多数Delphi开发者的眼睛。 - Jeroen Wiert Pluimers

9

一个SMTP服务器组件不能发送邮件 - 它只能接收邮件。您需要一个SMTP客户端组件(TidSMTP)来发送邮件。当邮件服务器发送邮件时,它会像一个SMTP客户端。


1
进一步说,Indy有一个TIdSMTPRelay组件,旨在用于服务器端将接收到的电子邮件转发到其他服务器。 - Remy Lebeau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接