用Indy如何发送正文为html格式的邮件?(200分)

B

bjaman

Unregistered / Unconfirmed
GUEST, unregistred user!
用Indy控件写一个邮箱发送程序,Txt格式的正文可以发送,现请教如何发送html格式正文?
看到现在大多数公用邮箱(比如163邮箱,QQ邮箱)的邮件正文的编写,都支持贴图、贴网页,可以直接发送,接收端打开邮件也可以直接在正文里看到效果。这个技术如何实现呢?请教了!
 
S

szhcracker

Unregistered / Unconfirmed
GUEST, unregistred user!
你到Google或baidu上搜一下,我记得有人写过一篇发送html格式邮件的文章
 
B

bjaman

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi园地里有一个Demo:
http://www.delphifans.com/SoftView/SoftView_2618.html
已下载,谢谢大家捧场!
 
B

bjaman

Unregistered / Unconfirmed
GUEST, unregistred user!
另外搜索到一段代码,贴到下面,供大家参考:
利用Indy组件发送HTML格式的多信息邮件
uses
idMessage;

procedure TForm1.Button1Click(Sender: TObject);
var
html: TStrings;
htmpart, txtpart: TIdText;
bmppart: TIdAttachment;
email: TIdMessage;
filename: string;
begin

filename := ExtractFilePath(Application.ExeName) + 'YouImg.jpg';
html := TStringList.Create();
html.Add('<html>');
html.Add('<head>');
html.Add('</head>');
html.Add('<body><h1>Hello</h1>');
html.Add('<img src="cid:YouImg.jpg" />');
html.Add('This is a picture!</body>');
html.Add('</html>');

email := TIdMessage.Create(nil);
email.From.Text := 'you@from.com';
email.Recipients.EMailAddresses := 'my@mail.com';
email.Subject := 'Hello';
email.ContentType := 'multipart/mixed';
email.Body.Assign(html);

txtpart := TIdText.Create(email.MessageParts);
txtpart.ContentType := 'text/plain';
txtpart.Body.Text := '';

htmpart := TIdText.Create(email.MessageParts, html);
htmpart.ContentType := 'text/html';

bmppart := TIdAttachment.Create(email.MessageParts, filename);
bmppart.ContentType := 'image/jpeg';
bmppart.FileIsTempFile := true;
bmppart.ContentDisposition := 'inline';
bmppart.ExtraHeaders.Values['content-id'] := 'YouImg.jpg';
bmppart.DisplayName := 'YouImg.jpg';

try
idSMTP.Connect();
try
idSMTP.Send(email);
ShowMessage('Sent');
except
on E: Exceptiondo

ShowMessage('Failed: ' + E.Message);
end;

finally
idSMTP.Disconnect();
email.Free();
html.Free();
end;

end;
 
S

szhcracker

Unregistered / Unconfirmed
GUEST, unregistred user!
恭喜,混分。[:)]
 
顶部