Indy(10.0.52版本)IdSmtp控件发送邮件,
如果附件为中文名,如 我的电脑.zip,该邮件发送成功后,
接收邮件时发现,原来附件名会改变成_ _ _.zip,
怎么能保证文件名不会改变?
另外,我查看了IdMessage控件的属性,好像没有附件名称这类的
如果附件为中文名,如 我的电脑.zip,该邮件发送成功后,
接收邮件时发现,原来附件名会改变成_ _ _.zip,
怎么能保证文件名不会改变?
另外,我查看了IdMessage控件的属性,好像没有附件名称这类的
解决方案 »
- 请问我为什么不能向数据库插入数据??
- 除了PASSWORD CHAR属性还有什么办法让密码框显示星号呢?
- 为什么这段代码 能将DLL 插入到普通的EXE文件里面 而不能插入到系统DLL里面
- 这句源码错在哪里了?
- 如何得到本程序执行文件的路径位置
- 老板压下来的任务,帮一下吧!。。。。。
- 程序打包问题:连接远程mysql的odbc已通,为什么程序中连不上呢
- 怎样使TOpenPictureDialog支持jpg啊?我搜索到两个帖子,却看不了。
- 新手——考研哪还是跳槽?请大家给些建议
- 新手应该怎样学Delphi?
- 一个错误代码is not a valid integer value?什么意思`?
- 我用Lookup 字段,为什么编辑时不会更新,要保存才能更新.要如何解决?
不知道是怎么回事???晕。同是天涯伦落人。
9.0.18版的,我连续发多个邮件可以。indy也做的不够好
================================================================================
常用邮件编码及乱码的解决--------------------------------------------------------------------------------
http://tech.sina.com.cn 2001/02/28 15:04 中国电脑教育报 徐济仁、陈家松
E-mail是Internet上使用的一项服务,它通过数字化的方式进行信件的传送。E-mail的实现方式为:发送方将邮件发至对方主机(或就近主机),然后由主机经过一定的传送路径转发至指定的接收方主机上存储,再由接收方收取阅读,是一种非交互式的存储转发技术。该过程中使用了多种技术协议,才保证邮件的正确无误地传递,如果使用中双方基于不同的邮件协议,就可能会造成邮件中出现乱码的情况。 SMTP(Simple Message Transfer Protocol)简单邮件传输协议,是基于TCP/IP网络的协议,描述了一个邮件报文的格式及当它们传输时如何处理这些报文,是一种利用网络交换文字信息的非交互式技术,用于主机之间的电子邮件交换。利用SMTP,Internet的主机就可收发由普通西文字符组成的文本邮件。 为了传送声音、图像等多媒体二进制数据,还必须将这些数据经过特殊的非字符编码,于是,就出现了MIME(Multipurpose Internet Mail Extension protocol)多用途的网际邮件扩充协议,该系统可以处理常规的报文(普通西文文本)和声像等二进制数据。MIME有Base64和QP(Quote-Printable)两种编码方式。Base64是一种通用的方法:把3个Byte的数据用4个Byte表示,这样,这4个Byte中,实际用到的都只有前面6个bit,这样就不存在只能传输7个bit的字符问题了;QP方式:把一个8bit的字符用两个16进制数值表示,然后在前面加“K”。所以我们有时在收到的邮件中会看到经过QP编码后的文件内容为:KB3KC2KBFKA1KC7KE5KA3KACKC4KFAKBAKC3KA3KA1等。 最早处理二进制数据的编码为Uuencode,是Unix系统的UU编码方式,其解码为Undecode,它们作为Unix系统主机之间的拷贝协议UUCP的一部分开发出来。 我们知道,ASCII编码为7位有效码,而非ASCII的如汉字则采用双字节表达一个汉字,通过字节最高位b7置1来实现。但由于历史形成的原因,Internet上电子邮件主要处理7bit文本,而且一些服务器或网关可能限制8bit传输,这对ASCII字符不会影响;其它非ASCII数据,则必须使用7bit将邮件编码后再发送,否则邮件在传送过程中,如果其最高位被过滤掉,则必然为乱码,而且该邮件的接收方也是无法还原的。由于祖国大陆和港台地区对汉字编码的不统一,祖国大陆使用GB码,港台使用Big5码,这样就造成使用对方交换信息时出现乱码,只有通过将对方内码转换后,才能正确显示。 我们在上网使用Outlook Express收发电子邮件时,经常需使用到各种编码的文字,主要有简体中文的GB2312码和HZ码(使用频率比较高的两种编码),以及通用字符UTF-7和UTF-8、西欧字符等,如果电子邮件软件中没有内置BIG5编码,那收到BIG5编码的电子邮件时就会出现乱码,在电子邮件传输过程中,可能会发生误码或出现乱码,电子邮件传送的内容我们就无法认识。现在有很多软件可以解决这个问题,其中乱码察看器就是其中功能比较强的一个。 乱码察看器支持MIME/Base64、Quoted-Printable、HZ和UUCode四种形式的编码和解码,有改进的混合乱码识别算法(多种乱码混合在一起时可以正确识别不同乱码),单键解码功能:只要选中需要查看的乱码文本(如果不选中任何内容,则会自动全选),然后按下预先设定的热键(默认为F7),配合改进的识别算法,就可以较好地将这些乱码转换成正常的文本内容,自动识别BIG5码(将BIG5码转成GB码)繁体中文和简体中文相互转换(Windows2000下使用更方便)、实时监视剪贴板自动解码、智能弹出等,此外,还可以更改背景颜色及默认字体及其他一些新增功能:V2.60版中新增了某些HTML对中文进行编码所形成乱码的识别和支持;修正了程序运行时Windows无法关机的问题;修正了一些小Bug。 乱码察看器V2.60的下载地址: go5.163.com-------------------------------------
-----------------------------------------------------------------------------------------------------------------------
E-mail编码主要有:
1.UU编码
在早期传送非 ASCII码的文件时,最常用的便是这种UU(Unix-to-Unix encoding)编码方式。
Uuencode和Uudecode分别是Unix系统中使用的UU编码和解码程序,后来被改写成为在DOS中亦可执行
的程序。
2.MIME编码
UU编码解决了E-mail传送非ASCII文件的问题,但这种方式并不方便。因而又发展出一种新的编
码标准MIME(Multipurpose Internet Mail Extentions),一般译作“多媒体邮件传送模式”。顾名
思义,它可以传送多媒体文件,在一封电子邮件中附加各种格式文件一起送出。
MIME定义两种编码方式:Base64与QP(Quote-Printable)。QP的规则是对于资料中的7位无须重复
编码,仅将8位的数据转成7位。
QP编码适用于非ASCII码的文字内容,例如我们的中文文件。而Base64的编码规则,是将整个文
件重新编码成7位,通常用于传送二进制文件。编码的方式不同会影响编码之后的文件大小。而具有
MIME功能的E-mail软件大都能自动判别你的邮件是采用何种编码,然后自动选择用QP或Base64
来解码。
MIME标准现已成为Internet电子邮件的主流。现在最常使用的电子邮件软件Eudora、FoxMail、
Netscape Mail、Outlook Express和Internet Mail等都支持MIME编码标准。
3.Binhex编码
Binhex的编码方式常用于Mac机器。一般PC上的电子邮件软件,亦多数支持MIME的规格,很少有支
持Binhex格式的。在常用的电子邮件软件中,只有Eudora具有这种功能,可直接解读Binhex的编码。
修改indy(10.0.52)的程序,
function TIdMessageDecoderMIME.RemoveInvalidCharsFromFilename(const AFilename: string): string;
注释掉函数里的
for LN := 1 to Length(Result) do begin
if Pos(Result[LN], ValidWindowsFilenameChars) = 0 then begin
Result[LN] := '_'; //do not localize
end;
end;就可以显示中文附件了,
郁闷,中文成了非法字符
二楼的,你的SMTP服务器限制了只能发两封。我用的是163.com.免费的。我用其他的试试。谢谢你啊。听我的好消息。