下面是创建“电子邮件发件人”的说明,其中包括直接从Delphi应用程序发送电子邮件和附件的选项。在我们开始之前,考虑另一种选择…
假设您有一个处理某些数据库数据和其他任务的应用程序。用户需要从应用程序中导出数据,并通过电子邮件发送数据(如错误报告)。如果没有下面概述的方法,您必须将数据导出到外部文件,然后使用电子邮件客户端发送数据。
有许多方法可以直接从Delphi发送电子邮件,但最简单的方法是使用ShellExecuteAPI。这将使用计算机上安装的默认电子邮件客户端发送电子邮件。虽然这种方法是可以接受的,但您无法以这种方式发送附件。
另一种技术是使用Microsoft Outlook和OLE发送电子邮件,这一次使用附件支持,但随后需要使用MS Outlook。
另一个选择是使用Delphi对Windows Simple Mail API的内置支持。这仅在用户安装了符合MAPI的电子邮件程序时有效。
我们在这里讨论的技术使用Indy(internetdirect)组件——一个伟大的互联网组件套件,由流行的用Delphi编写的互联网协议组成,基于阻塞套接字。
使用Indy组件(Delphi 6+附带)发送(或检索)电子邮件,只需在表单上放置一两个组件、设置一些属性和“单击按钮”即可
要使用Indy从Delphi发送带有附件的电子邮件,我们需要两个组件。首先,TIdSMTOP用于连接SMTP服务器并与之通信(发送邮件)。其次,TIdMessage处理消息的存储和编码。
构建邮件时(当TIdMessage“填充”数据时),将使用TIDMtp将电子邮件发送到SMTP服务器。
我创建了一个简单的邮件发送者项目,我将在下面进行解释。您可以在这里下载完整的源代码。
注意:该链接直接下载到项目的ZIP文件。您应该能够毫无问题地打开它,但如果无法打开,请使用7-Zip打开归档文件,以便提取项目文件(存储在名为SendMail的文件夹中)。
从设计时屏幕截图中可以看到,要使用TIdSMTP组件发送电子邮件,至少需要指定SMTP邮件服务器(主机)。邮件本身需要填写常规的电子邮件部分,如发件人、收件人、主题等。
以下是处理发送一封带有附件的电子邮件的代码:
procedure TMailerForm.btnSendMailClick(Sender: TObject) ; begin StatusMemo.Clear; //setup SMTP SMTP.Host := ledHost.Text; SMTP.Port := 25; //setup mail message MailMessage.From.Address := ledFrom.Text; MailMessage.Recipients.EMailAddresses := ledTo.Text + ',' + ledCC.Text; MailMessage.Subject := ledSubject.Text; MailMessage.Body.Text := Body.Text; if FileExists(ledAttachment.Text) then TIdAttachment.Create(MailMessage.MessageParts, ledAttachment.Text) ; //send mail try try SMTP.Connect(1000) ; SMTP.Send(MailMessage) ; except on E:Exception do StatusMemo.Lines.Insert(0, 'ERROR: ' + E.Message) ; end; finally if SMTP.Connected then SMTP.Disconnect; end; end; (* btnSendMail Click *)注意:在源代码中,您将发现两个额外的过程,用于使用INI文件存储主机、起始和编辑框的值。
...击和多余的自动邮件。一旦达到限制,您将无法接收任**电子邮件。所有传入的邮件都会反弹回发件人。 ...
许多电子邮件服务器拒绝接受超过一定大小的电子邮件附件。虽然附件的大小没有跟上时代的步伐,但还有其他简单的方法可以通过电子邮件向某人发送大文件。 即使您使用的是现代的在线电子邮件客户端,邮件大小也是有限...
在Mac OS X Yosemite上,你可以在Mac上的Apple Mail中标记电子邮件附件,包括PDF文件和图像文件,使Mail成为一个强大的生产力应用程序。现在,iOS邮件应用程序中也提供了这一功能。 这意味着你可以在一个文件中添加你的签名,在一...
当您必须通过电子邮件向某人发送一个大的图像文件时,最好在发送之前调整图像文件的大小,使其变小。Outlook简化了这一过程,并允许您在发送图像文件时调整其大小。 一些公司和电子邮件服务仍然有很小的附件限制。因此...
...照片,在那里你可能需要用老式的方式发送东西——作为电子邮件附件。如果你在工作中发电子邮件,它可能是你电子邮件的一部分。 关于附件,有一种关于发送它们的不成文的代码。例如,虽然您可以在电子邮件中发送一个...
我们都匆匆地发了一封电子邮件,只是片刻之后才想起,我们忘了把我们说的附在电子邮件上的文件附上。遗忘附件探测器是一个伟大的,免费的插件,为Microsoft Outlook,可以帮助您避免这种尴尬的情况。 遗忘附件检测器是Office...
...工作非常简单。脚本会自动创建一个标记和文件夹;标记电子邮件后,文档需要几分钟才能显示在驱动器中。 正如tl80所指出的,您可以通过设置一个包含有:附件“搜索字符串并相应地应用标签。Agarwal也在这里发布了源代码,...
转发电子邮件是一种让多方参与重要对话的简单方法,但过去在Gmail中一次只能转发一条消息。如果你的朋友和爱人喜欢用恼人的连环信息来攻击你,那么现在一切都在变好变坏,因为Gmail现在允许你将多封电子邮件作为电子邮...
电子邮件的基本用途之一是与朋友、家人或同事共享照片和其他文件。但是对电子邮件不熟悉的人可能还不知道如何在电子邮件中附加和发送文件。这里有一些初学者的指导,你可以分享。这一版本的简易电子邮件技术支持指南...
在发送电子邮件附件时,礼节和惯例通常要求您在发送大文件或大量文件时压缩附件。但是当你只发送一些小文件时,帮收件人一个忙:跳过ZIP。前几天,我收到一封电子邮件附件,里面有两个非常小的图像文件,我有点尴尬,...