由於在http://www.indyproject.org/Sockets/Demos/index.EN.aspx中給出的演示只將接收到的流保存到一個文件中,我不知道如何有效地將該流作爲郵件發送。如何使用Indy的smtp服務器組件發送郵件消息?
任何人都可以教我如何做到這一點或指向我一些更完整的例子嗎?
由於在http://www.indyproject.org/Sockets/Demos/index.EN.aspx中給出的演示只將接收到的流保存到一個文件中,我不知道如何有效地將該流作爲郵件發送。如何使用Indy的smtp服務器組件發送郵件消息?
任何人都可以教我如何做到這一點或指向我一些更完整的例子嗎?
A SMTP 服務器組件不能發送郵件 - 它只能接收郵件。您需要一個SMTP 客戶端組件(TidSMTP)發送郵件。發送郵件時的郵件服務器就像SMTP客戶端一樣。
下面是關於如何發送電子郵件的完整例子:
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;
.
.
(我知道,與是令人難以接受的,但我一般用它在情況是這樣那裏是毫無疑問的是怎麼回事,並且沒有(或者只是無窮小的)模糊性的機會)
哇 - 這段代碼尖叫。我會將其大部分轉換爲混合大小寫或小寫形式,以使大多數Delphi開發人員的眼睛更友好。 – 2010-03-14 09:51:26
爲了擴大這一點,Indy有一個TIdSMTPRelay組件,意圖在服務器端用於將收到的電子郵件轉發到其他服務器。 – 2010-03-15 22:13:49