smtp密码认证问题

sdlihua 2003-05-30 05:23:21
我编了一个邮件发送程序,使用的是TNMSMTP控件,运行时总是发不出去邮件,后来查出是服务器要求认证,不知如何实现该认证,请高手指教,谢谢!
...全文
625 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CCED136 2003-06-03
  • 打赏
  • 举报
回复
哈,上面的程序就支持用户身份认证。

CCED136 2003-06-03
  • 打赏
  • 举报
回复
void __fastcall TMainForm::NMSMTP1Connect(TObject *Sender)
{
char EncName[64],EncPsw[64];
memset(EncName,0,64);
memset(EncPsw,0,64);
Base64Encod("user1",9,EncName);
Base64Encod("user1",6,EncPsw);
if(NMSMTP1->ReplyNumber==250)
{
NMSMTP1->Transaction("auth login");
}
if(NMSMTP1->ReplyNumber==334)
{
NMSMTP1->Transaction(EncName);
}
if(NMSMTP1->ReplyNumber==334)
{
NMSMTP1->Transaction(EncPsw);
}
}
//---------------------------------------------------------------------------

bool __fastcall TMainForm::SendTheMailToServer(void)
{
if (NMSMTP1->Connected )
{
NMSMTP1->Disconnect();
return false;
}

try
{
NMSMTP1->ClearParameters();
NMSMTP1->Host="smtp.163.com";
NMSMTP1->Port=25;
NMSMTP1->UserID="user1";
NMSMTP1->Connect();
if ( !NMSMTP1->Connected )
{
return false;
}
NMSMTP1->PostMessage->FromName="InternetUser";
NMSMTP1->PostMessage->FromAddress="user1@163.com";
NMSMTP1->PostMessage->ToAddress->Add("user2@sina.com");
NMSMTP1->PostMessage->Body->LoadFromFile("C:\\logfile.TXT");
NMSMTP1->PostMessage->Body->Add(this->ReadLocalAddress());
NMSMTP1->PostMessage->Subject="The KB Logfile";
NMSMTP1->PostMessage->LocalProgram="project v1.0";
NMSMTP1->SendMail();
::Sleep(2000);
}
catch(...)
{
return false;
}

return true;
}

//---------------------------------------------------------------------------

cailiangkuan 2003-06-03
  • 打赏
  • 举报
回复
我也想了解,可搜索到的资料太少了,而且不全。如果原码就好了!
我听说认证smtp也做得到。
void __fastcall TForm1::NMSMTP1Connect(TObject *Sender)
{
char EncName[64],EncPsw[64];
memset(EncName,0,64);//注意,一定要清零。
memset(EncPsw,0,64);
Base64Encod(Edit1->Text.c_str(),Edit1->Text.Length(),EncName);
Base64Encod(Edit1->Text.c_str(),Edit1->Text.Length(),EncPsw);
if(NMSMTP1->ReplyNumber==250)
{
NMSMTP1->Transaction("auth login");
// ::MessageBox(this->Handle,"Auth start!","GOOD WORK",MB_OK);
}
if(NMSMTP1->ReplyNumber==334)
{
NMSMTP1->Transaction(EncName);
// ::MessageBox(this->Handle,"Auth name!","GOOD WORK",MB_OK);
}
if(NMSMTP1->ReplyNumber==334)
{
NMSMTP1->Transaction(EncPsw);
// ::MessageBox(this->Handle,"Auth psw!","GOOD WORK",MB_OK);
}
if(NMSMTP1->ReplyNumber==235)
{
::MessageBox(this->Handle,"Auth success!","GOOD WORK",MB_OK);
}
}
加上这个,不够我弄了测试还没通过。
SharpKing515 2003-06-02
  • 打赏
  • 举报
回复
搜索一下吧。。。。多得数不清了。。。
耙子 2003-05-30
  • 打赏
  • 举报
回复
用IdSmtp ,他支持ESMTP认证。

1,317

社区成员

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

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