不知道为什么,今天一直不能成功的打开indy的邮箱,难道5.19网络大瘫痪到今天还没有解决?抑或是indy的主页被封了?有这种猜测的原因是因为之前接触过一些网站,内容基本上都是介绍控件,产品之类的,并没有谈论国是,竟然上不去,非得动一些歪脑筋,不知道为什么被封。我记得奥运前,有一次上nodepad++的网站,主页上赫然写着奥运之地,人家地狱之类的标语,真是令人震惊和气氛。一个小小的免费开源工具的网站竟然行为不端,然则并没有并没有被封掉,真的是奇怪。
扯远了,言归正传。因为工作的需要,今天试了一下indy的发邮件的功能。安装网络上的示例及零散的资料,写了个demo,先后遇到如下问题:
1. ssl的问题。gmail使用了ssl,看协议就知道了(https)。解决方式是使用TIdSSLIOHandlerSocketOpenSSL这个控件,配合TIdSMTP使用。另外,需要到openssl的网站上下载最新的openssl-0.9.8k-i386-win32.zip,否则会提示无法找到正确的openssl library。
2. 连接不上gmail。标准smtp协议使用端口25,一开始死活连接不上gmail服务器。上网查询才知道使用的是587
3. 发送邮件时提示 RCPT first错误,这个错误着实让我费了半天劲。经过近一个小时的摸索,终于发现少了一句话,加上即可:
IdMessage->Recipients->EMailAddresses = "";
我一开始是在ReceiptRecipient属性中设置接收人的邮箱地址的,不知道为什么没有起作用。
4. 发送带中文的邮件时,邮件内容中文部分是乱码。原因是memo控件并不支持unicode。borland 直到最近的版本(2009)才开始支持提供unicode支持,相比之下,微软早在98/99年的vs 6.0中便已经支持unicode。所以不要说一个工具有多烂或者有多好,各有优缺点。公司财力,架构师和产品经理的意识等等原因导致。
这个简单的demo费了我大概两小时的时间,有空的话再把代码整理出来,如有需要,可直接mail给我索取。
阅读(2633) | 评论(2) | 转发(0) |