procedure TMainForm.Button1Click(Sender: TObject);
var
SendMailExchang: TMessageExchanger;
lMessage: TMessage;
lAccount, FAccount: TMailAccount;
MailSystem: TMailSystem;
lMailContent: TMemoryStream;
begin
SendMailExchang := TMessageExchanger.Create(nil);
lMessage := TMessage.Create(nil);
lAccount := TMailAccount.Create;
MailSystem := TMailSystem.Create;
try
SendMailExchang.MessageKind := TMessageKind.mkSend;
lAccount.SMTPHost := 'smtp.qq.com';
lAccount.SMTPPort := 25;
lAccount.POPHost := 'pop3.qq.com';
lAccount.POPPort := 110;
lAccount.MailAddress := 'XXX@qq.com';
lAccount.UserID := 'XXX';
lAccount.Password := '******';
lAccount.AccountID := 'XXX';
lMessage.From := 'XXX@qq.com'; //发件人
lMessage.SendTo := 'TTT@163.com'; //收件人
lMessage.Subject := '告警提示!'; //mail tatil
lMessage.Body.Text := '邮件测试,多多打扰请见谅!';
lMessage.ContentFormatType := TContentFormatType.ftHTML; // 设置正文内容格式
if lAccount <> nil then
begin
lMailContent := TMemoryStream.Create; //用于存放邮件的正文
lMailContent.Clear;
lMessage.SaveToStream(lMailContent);
lMailContent.Position := 0; //移动流的指针
try
if lAccount.Verify then
begin
if lAccount.DifferPOP then
SendMailExchang.SMTPMessages.Add(lAccount.VerifyAccount,
lAccount.VerifyPassword, lAccount.SMTPHost,
lMessage.From, lMessage.SendTo, lMailContent, lAccount.SMTPPort)
else
SendMailExchang.SMTPMessages.Add(lAccount.UserID, lAccount.Password,
lAccount.SMTPHost, lMessage.From, lMessage.SendTo, lMailContent,
lAccount.SMTPPort);
end
else
SendMailExchang.SMTPMessages.Add(lAccount.SMTPHost, lMessage.From,
lMessage.SendTo, lMailContent, lAccount.SMTPPort);
finally
lMailContent.Free;
lAccount.Free;
end;
SendMailExchang.Active := True; //发送邮件
dialogs.showmessage('邮件发送成功!');
end;
finally
lMessage.Free;
MailSystem.Free;
SendMailExchang.Free; // SendMailExchang对象一定要最后释放
end;
end; |