求一个发邮件的例子

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);
...全文
131 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧