那种html的邮件要怎么收发啊.急啊.谢谢了.

sum008 2005-01-25 12:33:30
那种html的邮件要怎么收发啊.
html格式的邮件要用什么来显示出来啊.
还有怎么写html格式的邮件啊.
就像foxmail那样可以在里面发图片和背景表格啊.
...全文
99 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sum008 2005-01-27
  • 打赏
  • 举报
回复
为什么我把IdMessage1保存为文件后.已后IdMessage1.在读有的会出错有的不会啊.
部份错误提示:EidException with message clUneven size in Decode ToStream'
还有怎么指明标识啊.
僵哥 2005-01-25
  • 打赏
  • 举报
回复
上面的代码参考一下吧,这是用Socket发送带附件mail的代码片段,里面同时也传送了,HTML正文。
顺便提一下,HTML邮件当中的图片等非文本信息都是以Base64代码段保存的,并且给这段代码一个类型名称的标识,而在HTML正文当中只需要指明这个代码段的标识即能显示出来。
僵哥 2005-01-25
  • 打赏
  • 举报
回复
{
TMemoryStream *memstr;
ppp++;
memstr=new TMemoryStream();
try
{
AnsiString sendtext=AnsiString("Message-ID: <000e01c26603$6f0e7a30$0a00a8c0@yj01>")+
"\r\nFrom: \""+Edit1->Text.Trim()+"\" <"+FROM->Text.Trim()+">\r\n"+
"To: <"+TO->Text.Trim()+">\r\n";
if(TOCC->Text.Trim()!="")
sendtext+=AnsiString("Cc: <"+TOCC->Text.Trim()+">\r\n");
SYSTEMTIME t;
GetLocalTime(&t);
AnsiString tday[7]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"},
tmon[12]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
if(SUBJECT->Text.Trim().Length()>0)
sendtext+="Subject: =?gb2312?B?"+EncodeBase64(SUBJECT->Text.Trim())+"?=\r\n";
else
sendtext+="Subject:\r\n";
sendtext+="Date: "+tday[t.wDayOfWeek]+Now().FormatString(", dd ")+tmon[t.wMonth-1]+Now().FormatString(" yyyy hh:mm:ss +0800")+"\r\n"+
"MIME-Version: 1.0\r\n"
"Content-Type: multipart/mixed;\r\n"
" boundary=\"----=_NextPart_000_000A_01C26646.7D0E7AC0\"\r\n"+
"X-Priority: 3\r\n"+
"X-MSMail-Priority: Normal\r\n"+
"X-Mailer: Morncolorsoft E_Mail Sender 1.00.0000.0000\r\n"+
"X-Mime: Morncolorsoft Mailer Inside V1.00.0000.0000\r\n\r\n"+
"This is a multi-part message in MIME format.\r\n\r\n"+
"------=_NextPart_000_000A_01C26646.7D0E7AC0\r\n"+
"Content-Type: multipart/alternative;\r\n"+
" boundary=\"----=_NextPart_001_000B_01C26646.7D0E7AC0\"\r\n\r\n\r\n"+
"------=_NextPart_001_000B_01C26646.7D0E7AC0\r\n"+
"Content-Type: text/plain;\r\n"+
" charset=\"gb2312\"\r\n"+
"Content-Transfer-Encoding: base64\r\n\r\n"+
EncodeBase64(Body->Text)+"\r\n\r\n"+
"------=_NextPart_001_000B_01C26646.7D0E7AC0\r\n"+
"Content-Type: text/html;\r\n"+
" charset=\"gb2312\"\r\n"+
"Content-Transfer-Encoding: base64\r\n\r\n"+
EncodeBase64(AnsiString("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\r\n")+
"<HTML><HEAD>\r\n"+
"<META http-equiv=Content-Type content=\"text/html; charset=gb2312\">\r\n"+
"<META content=\"MSHTML 6.00.2600.0\" name=GENERATOR>\r\n"+
"<STYLE></STYLE>\r\n"+
"</HEAD>\r\n"+
"<BODY bgColor=#ffffff>\r\n"+
"<DIV><FONT size=2><PRE>"+Body->Text+"</PRE></FONT></DIV></BODY></HTML>")+
"\r\n------=_NextPart_001_000B_01C26646.7D0E7AC0--\r\n";
if(Attach->Count>0)
{
memstr->WriteBuffer(sendtext.c_str(),sendtext.Length());
for(int kk=0;kk<Attach->Count;kk++)
if(FileExists(Attach->Items->Strings[kk]))
{
AnsiString sendtextt=AnsiString("\r\n------=_NextPart_000_000A_01C26646.7D0E7AC0\r\n")+
"Content-Type: application/octet-stream;\r\n"+
" name=\""+ExtractFileName(Attach->Items->Strings[kk])+"\"\r\n"+
"Content-Transfer-Encoding: base64\r\n"+
"Content-Disposition: attachment;\r\n"+
" filename=\""+ExtractFileName(Attach->Items->Strings[kk])+"\"\r\n\r\n";
memstr->Seek(0,soFromEnd);
memstr->WriteBuffer(sendtextt.c_str(),sendtextt.Length());
EncodeBase64File(Attach->Items->Strings[kk],memstr);
memstr->Seek(0,soFromEnd);
AnsiString ttt="\r\n";
memstr->WriteBuffer(ttt.c_str(),ttt.Length());
}
AnsiString sendtexttt="\r\n------=_NextPart_000_000A_01C26646.7D0E7AC0--\r\n\r\n.\r\n";
memstr->Seek(0,soFromEnd);
memstr->WriteBuffer(sendtexttt.c_str(),sendtexttt.Length());
memstr->Seek(0,soFromBeginning);
//Mess->Lines->LoadFromStream(memstr);
Socket->SendStream(memstr);
}
else
Socket->SendText(sendtext+"\r\n.\r\n");
}
catch(...)
{
memstr->Free();
}
break;
}
jackie168 2005-01-25
  • 打赏
  • 举报
回复
啊.我晕啊.发错没关系,发点对的就可以了.谢谢了
================================================================
html是文本,用WebBrowser1来显示就行了... 随便YY2句,呵
sum008 2005-01-25
  • 打赏
  • 举报
回复
啊.我晕啊.发错没关系,发点对的就可以了.谢谢了.
jackie168 2005-01-25
  • 打赏
  • 举报
回复
楼主不好意思,偶发错贴了,呵
jackie168 2005-01-25
  • 打赏
  • 举报
回复
编号: 21 发送者 c1234567812345678 发送时间 2005-1-25 13:03:18 删除 回复
内容 ALT+TAB

这个能不能也屏蔽掉,要不然也会使鼠标限制失效.
----------------------------------------------------------------

var KHK: HHook;
tmp: integer;
function HookProc(ICode: integer;WP:WParam;LP:LParam):LResult;
begin
Result:=CallNextHookEx(KHK,0,0,0);
end;

使用下列语句开始锁定:
KHK:=SetWindowsHookex(WH_JOURNALPLAYBACK,@HookProc,HInstance,0);

使用下列语句结束锁定:
UnHookWindowsHookEx(KHK);

这时候不能屏蔽Windows的系统键Ctrl-Alt-Tab,Ctrl-Esc,Alt-Tab等

你就可以使用:

SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @tmp, 0);//锁起来

SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, @tmp, 0);//打开吧

PS:记住多给点分。 ^_^




sum008 2005-01-25
  • 打赏
  • 举报
回复
不明白,那怎么像foxmail那样看了.
北光 2005-01-25
  • 打赏
  • 举报
回复
html不也是文本吗?
可以保存在邮件正文中的。
里面的图片等有些是www上的,有些可以放在附件中或者将html保存成mht。
僵哥 2005-01-25
  • 打赏
  • 举报
回复
导一份.EML文件用文本编辑器查看一下就知道了。

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧