求一个发邮件的例子
下面是网友的一个例子,我测试了,结果是服务器能连上,发送邮件列表失败。
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("發送成功!");}//-----------