求一个发邮件的例子

cankoo 2011-09-09 08:00:40
下面是网友的一个例子,我测试了,结果是服务器能连上,发送邮件列表失败。

2010自带的 IdSmtp 控件发邮件, 英文正常。 中文报 RangeCheck error ,据说是idsmtp的问题。
不知道2011的 有没有问题。。 。 哪位大侠用过啊 。

代码也贴出来吧。 谁有2011和2010的 可以试试,对比下, 呵呵。

(DM是个Data Module,上面放了一个IdSMTP和IdMessage控件)

DM->IdSMTP1->Host = "smtp.163.com";
DM->IdSMTP1->Port = 25;
DM->IdSMTP1->IOHandler = DM->m_IdSSLIOHandlerSocketOpenSSL;
DM->IdSMTP1->UseTLS = utNoTLSSupport;


DM->IdSMTP1->Username = L"name@163.com";
DM->IdSMTP1->Password = L"passwd" ;
DM->IdSMTP1->AuthType = satDefault;
DM->IdSMTP1->Authenticate();


DM->IdMessage1->ContentType = "text/html";
DM->IdMessage1->Subject = "TEST"; // 邮件标题,只要是汉字, 就会报错 RangeCheck error,英没问题. C++ BUILDER 2010自带的indy

DM->IdMessage1->ReceiptRecipient->Address = L"xxxxx@163.com";
if (!DM->IdSMTP1->Connected()) {
try {
DM->IdSMTP1->Connect();
}catch(...){
Application->MessageBox(L"连接邮件服务器失败!", L"提示", MB_OK + MB_ICONINFORMATION);
return;
}
}
if (DM->IdSMTP1->Connected()) {
try{
DM->IdSMTP1->Send(DM->IdMessage1);
}catch(...){
Application->MessageBox(L"发送邮件失败!", L"提示", MB_OK + MB_ICONWARNING);
return;
}
}

Application->MessageBox(L"邮件发送成功!", L"提示", MB_OK + MB_ICONINFORMATION);
...全文
80 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
txxxxxxzzzzzz 2011-11-07
[Quote=引用 1 楼 zzbinfo 的回复:]
C/C++ code
void __fastcall TForm1::Button1Click(TObject *Sender)
{
IdSMTP1->Username ="zz";
IdSMTP1->Password ="****";
IdSMTP1->Host ="smtp.163.com";
IdSMTP1->Port =25;

IdMessage1->Body->Cl……
[/Quote]
明显有问题,我用你的代码测试了下,提示range error,就是中文的问题,英文的可以
回复
cankoo 2011-09-09
我的也是2010,马上测。
弄了一个晚上,还搞了半天C#,用jmail的,后来现在有DELPHI版,DEMO的例子竟然是灾难性错误!
希望C++builder的IdSMTP能行。
回复
zzbinfo 2011-09-09
void __fastcall TForm1::Button1Click(TObject *Sender)
{
IdSMTP1->Username ="zz";
IdSMTP1->Password ="****";
IdSMTP1->Host ="smtp.163.com";
IdSMTP1->Port =25;

IdMessage1->Body->Clear();
IdMessage1->Subject="测试";
IdMessage1->Body->Text ="This is a text!!!";
IdMessage1->From->Text="zzbinfo@163.com";
IdMessage1->Recipients->EMailAddresses="*****@qq.com";
try{
IdSMTP1->Connect();
IdSMTP1->Authenticate();
IdSMTP1->Send(IdMessage1);
}

catch(...)
{
ShowMessage("發送失敗!");
return;
}
ShowMessage("發送成功!");
}
//-----------
简单测试了一下,没有任何问题,我的是2010
回复
相关推荐
发帖
网络及通讯开发
创建于2007-08-02

1299

社区成员

C++ Builder 网络及通讯开发
申请成为版主
帖子事件
创建了帖子
2011-09-09 08:00
社区公告
暂无公告