1,317
社区成员




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);
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