HTML格式的邮件中的图片是怎么发送的?我只有这么多分了,全部相送…………!!!(36分)

  • 主题发起人 主题发起人 LearningAug
  • 开始时间 开始时间
L

LearningAug

Unregistered / Unconfirmed
GUEST, unregistred user!
我用 Indy10 来做邮件发送系统,使用SMTPClient控件,已经把ContentType设置为text/html 了,但是现在遇到一个问题,我需要发送带图片的HTML格式的邮件,在HTML中插入图片应该是这样的:<img src=&quot;C:/Picture&quot;> 。但是这样图片的路径是我本机上的,显然不行。请问各位大侠,我应该怎样做才能完成这个功能呢?谢谢了!!
 
编码成base64?
 
这个是我的添加HTML图片的代码,可以收到HTML格式的文字,但是看不到图片的。请大家帮我看下,谢谢了

var
sl:TStrings;
strCId:string;
//函数部分

IdSMTP1.Host := 'smtp.tom.com';
IdSMTP1.Username := 'XXX';
IdSMTP1.Password := 'XXX';
IdMessage1.Subject := 'XXX';
IdMessage1.From.Address := 'XXX';
IdMessage1.Recipients.EMailAddresses := 'XXX'

sl := TStringList.Create;
sl.Add(KSEditX1.DocumentHTML);//获取HTML源码,放到sl中
strCId := '585858555585@55858';//自己随便定义的一个cid号

TIdText.Create(IdMessage1.MessageParts, sl);

with TIdAttachmentFile.Create(IdMessage1.MessageParts,//添加HTML中的图片附件
'C://Documents and Settings//zyz//桌面//MM.jpg') do
begin
ExtraHeaders.Values['Content-ID'] := strCId;//设置附件头中的cid值和HTML源码中的cid值一样
end;

IdMessage1.MessageParts.Items[0].ContentType := 'text/html';

IdMessage1.ContentType := 'multipart/mixed';

IdMessage1.ContentTransferEncoding := 'Base64';

sl.Free;
 
没有有做过这方面的东西吗?
 
要编码与解码然后当作付件发送,
 
上面的兄弟能够说清楚一点吗,怎么样进行编码与解码呢?
 
IdHTML.Body.Add('<html>');
IdHTML.Body.Add(' <head>');
IdHTML.Body.Add(' <title>Hello</title>');
IdHTML.Body.Add(' </head>');
IdHTML.Body.Add(' <body title=&quot;' + AMessage.References + '&quot; background=&quot;cid:BackgroundStars&quot;>');
IdHTML.Body.Add(' Hello, friends.<br/>');
IdHTML.Body.Add(' <br/>');
IdHTML.Body.Add(' <img src=&quot;cid:PrettyPic&quot; alt=&quot;' + ExtractFileName(AFile) + '&quot; name=&quot;' + ExtractFileName(AFile) + '&quot; title=&quot;Just an image included.&quot;>');
IdHTML.Body.Add(' </body>');
IdHTML.Body.Add('</html>');


Attachment := TIdAttachment.Create(AMessage.MessageParts, AFile);
Attachment.ExtraHeaders.Values['Content-ID'] := '<PrettyPic>';
Attachment.ContentType := 'image/jpeg';
idStars := TIdAttachment.Create(AMessage.MessageParts, ExtractFilePath(ParamStr(0)) + sStars);
idStars.ExtraHeaders.Values['Content-ID'] := '<BackgroundStars>';
idStars.ContentType := 'image/jpeg';
 
上面的兄弟,我按照你的方式做了,可以发送附件,但是图片在邮件服务器端没有看到,也不是红色的 X号,显示的是HTML的源码,请问是怎么回事呢:

IdSMTP1.Host := 'XXX';
IdSMTP1.Username := 'XXX';
IdSMTP1.Password := 'XXX';
IdMessage1.Subject := 'XXX';

IdMessage1.Body.Add('<html>');
IdMessage1.Body.Add(' <head>');
IdMessage1.Body.Add(' <title>Hello</title>');
IdMessage1.Body.Add(' </head>');
IdMessage1.Body.Add(' <body title=&quot;' + 'Test Html&quot;');
IdMessage1.Body.Add(' Hello, friends.<br/>');
IdMessage1.Body.Add(' <br/>');
IdMessage1.Body.Add(' <img src=&quot;cid:PrettyPic&quot; name=&quot;MM.jpg&quot;>');
IdMessage1.Body.Add(' </body>');
IdMessage1.Body.Add('</html>');

IdMessage1.From.Address := 'XXX';
IdMessage1.Recipients.EMailAddresses := 'XXX';

{添加HTML图片}

attachment := TIdAttachmentFile.Create(IdMessage1.MessageParts,
'C://Documents and Settings//zyz//桌面//MM.jpg');
attachment.ExtraHeaders.Values['Content-ID'] := '<PrettyPic>';
attachment.ContentType := 'image/jpeg';
IdMessage1.MessageParts.Items[0].ContentType := 'text/html';
IdMessage1.ContentType := 'multipart/related';

try
IdSMTP1.Connect;
IdSMTP1.Send(IdMessage1);
ShowMessage('Send Complete!');
finally
IdSMTP1.Disconnect;
end;
 
接受答案了.
 
你那边发HTML格式的邮件时,再带个附件,发送出去,收邮件时收到的是正确的吗?我那时试了,不行,发HTML的加附近,收回时显示的是HTML源文件!
 
可以的,没有问题,图片和文字都可以正确的显示出来
 
能把部分粘贴出来不?
 
你的E_Mail是多少,我发给你吧
 
好呀,我的EMAIL是:18_2@163.com
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部