Delphi-有什么方法可以编辑SMTP电子邮件的格式和布局吗



我正在创建一个数据库系统,通过托管网站"one.com"上的网络邮件发送电子邮件。

在这个网站和其他人的帮助下,我成功地完成了这个电子邮件程序。然而,我不知道如何格式化这封电子邮件中的文本,以便可以自定义它的字体、字体大小和颜色等。

有没有一种方法可以用当前的代码做到这一点?如果没有,有没有办法将html编辑添加到电子邮件正文中。我曾尝试将html标记添加到消息文本中,但它们不能被识别为html标记。这是由于电子邮件通过delphi发送的方式,还是one.com的工作方式?

procedure SendExpiringEmail(MemName: string; ExpDate: string; MemEmail: string);
var
IdSMTP: TIdSMTP;
IdMessage: TIdMessage;
IdEmailAddressItem: TIdEmailAddressItem;
SSLHandler: TIdSSLIOHandlerSocketOpenSSL;
EETextFile: TextFile;
fileline: string;    
begin
IdSMTP := TIdSMTP.Create(nil);
try
IdSMTP.Host := 'send.one.com';
IdSMTP.Port := 465;
SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
idsmtp.IOHandler :=  SSLHandler;
IdSMTP.UseTLS := utUseImplicitTLS;
IdSMTP.AuthType := satDefault;
IdSMTP.Username := 'USERNAME';
IdSMTP.Password := 'PASSWORD';
IdSMTP.Connect;
AssignFile(EETextFile, 'C:MHExpEmailBody.txt');
Reset(EETextFile);
if IdSMTP.Authenticate then
begin
IdMessage := TIdMessage.Create(nil);
try
IdMessage.From.Name := 'NAME';
IdMessage.From.Address := 'ADDRESS';
IdMessage.Subject := 'It looks like your membership is about to expire!';
IdMessage.Body.Add(+MemName);
IdMessage.Body.Add('');
while not EOF(EETextFile) do
begin
ReadLn(EETextFile, fileline);
IdMessage.Body.Add(fileline)
end;
IdMessage.Body.Add('');
IdMessage.Body.Add('We look forward to seeing you. Take Care!');
IdEmailAddressItem := IdMessage.Recipients.Add;
IdEmailAddressItem.Address := MemEmail;
IdSMTP.Send(IdMessage);
finally
IdMessage.Free;
end;
end;
IdSMTP.Disconnect;
Close(EETextFile);
finally
IdSMTP.Free;
end;
end;

任何对事物如何运作的理解都将不胜感激,因为我仍在学习。谢谢
我只需要能够编辑邮件的格式,如果可能的话,还可以添加图片。

编辑:我只想补充一点,我更喜欢不提供第三方开源组件,因为我觉得它们很难实现。

将IdMessage.ContentType设置为'text/html'。然后用HTML标记格式化邮件正文。不过,一定要通过各种电子邮件客户端测试你的电子邮件。以HTML格式接收的电子邮件在不同的客户端中有细微差别。您通常使用过时和不推荐使用的方式来设计电子邮件内容的样式。

在"创建html电子邮件"上进行网络搜索,帮助您开始如何格式化html,以便邮件客户端能够正确准备。

或者从这里开始http://sixrevisions.com/web_design/creating-html-emails/

为了防止有人无意中发现这一点,之前建议的一个链接确实有所帮助。过了一会儿,我终于得出了结论,但我没有足够的代表点来发布答案。无论如何,感谢大家事后的帮助。

将IdText添加到use子句中。

然后使用以下代码片段:

with TIdText.Create(IdMessage1.MessageParts, nil) do begin
Body.Text := 'HTML goes here';
//Or use Body.Add('HTML goes here');
ContentType := 'text/html';
end;
IdMessage1.ContentType := 'multipart/alternative';

HTML标记将被自动识别。

最新更新