【问题标题】:How to send a mail message using Indy's smtp server component?如何使用 Indy 的 smtp 服务器组件发送邮件?
【发布时间】:2011-01-27 07:24:14
【问题描述】:

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

谁能教我怎么做或者给我一些更完整的例子?

【问题讨论】:

    标签: delphi indy


    【解决方案1】:

    这是一个关于如何发送电子邮件的完整示例:

    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 不受欢迎,但我通常在这样的情况下使用它,其中对正在发生的事情毫无疑问,并且没有(或只是极小)有歧义的机会)

    【讨论】:

    • 哇——这段代码尖叫起来。我会将其中的大部分转换为混合大小写或小写,以使其对大多数 Delphi 开发人员来说更友好。
    【解决方案2】:

    SMTP 服务器 组件不能发送邮件——它只能接收邮件。您需要一个 SMTP client 组件 (TidSMTP) 来发送邮件。邮件服务器在发送邮件时就像一个 SMTP 客户端。

    【讨论】:

    • 为了扩展它,Indy 有一个 TIdSMTPRelay 组件,用于在服务器端将收到的电子邮件转发到其他服务器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2015-06-22
    • 1970-01-01
    • 2012-06-10
    • 2016-09-07
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多