首页 > 解决方案 > TSendMail.Execute 返回 True 而不发送

问题描述

如果我理解正确,TSendMail 应该使用我安装的电子邮件客户端。如果我在我的虚拟机上执行它,它会返回“true”并给出我需要安装电子邮件程序的预期消息。

但是,如果我在我的常规机器(安装了 Thunderbird)上运行程序,TSendMail.execute 返回“True”,但不会调用 Thunderbird。这是我的代码:

procedure TfSendEmail.btnSendClick(Sender: TObject);
var
  aNode: PVirtualNode;
  Data: PRecipients;
  i: integer;
begin
  aNode := vstRecipients.GetFirst;
  i := 0;
  while (aNode <> nil) do
  begin
    Data := vstRecipients.GetNodeData(aNode);
    Mail.Recipients.Add;
    Mail.Recipients[i].DisplayName := Data.Name;
    Mail.Recipients[i].Address := Data.Email;
    inc(i);
    aNode := vstRecipients.GetNext(aNode);
  end;

  Mail.Attachments.Assign(lbAttachments.Items);

  Mail.Subject := edtSubject.Text;

  Mail.Text.Assign(mmoMsgText.Lines);

  if Mail.Execute then
  begin
    ShowMessage('Succeeded');
    //ModalResult := mrOk;
  end
  else
    MessageDlg('Sorry!. Could not send email.', mtError, [mbOK], 0);
end;

在完全更新的 Win10 机器上使用 Delphi 10.2.3。也许我的收件人分配有问题。无论如何,我找不到任何完整的使用示例,只有 Embarcadero 的 wiki 附件中的不完整示例。

标签: delphidelphi-10.2-tokyo

解决方案


推荐阅读