急急急!!!!NMSMTP邮件发送!!!快帮忙呀!!!!
哪位高手能告诉我详细的设置,我设的都是连接失败的。(但瑞星还是看到要发送,后来才显示失败}
我也搞个代码来解决验证问题,都帮我看看!!!
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------------
static const char Base64Table[64]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
int Base64Encod(char *buftoenc,int bufsize,char *encbuf);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
if(NMSMTP1->Connected)NMSMTP1->Disconnect();
NMSMTP1->Connect();
NMSMTP1->SendMail();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMSMTP1Connect(TObject *Sender)
{
char EncName[64],EncPsw[64];
memset(EncName,0,64);//注意,一定要清零。
memset(EncPsw,0,64);
Edit1->Text="c_aicai";
Edit1->Text="760120";
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);
}
}
//---------------------------------------------------------------------------
int Base64Encod(char *buftoenc,int bufsize,char *encbuf)
{
int i=0;
int b64byte[5];
unsigned char *buftemp;
//Allocate space for the temporary string
buftemp=(unsigned char *)malloc(bufsize+2);
strcpy(buftemp,buftoenc);
if (bufsize%3==1)
{
buftemp[bufsize]='\0';
buftemp[bufsize+1]='\0';
}
if (bufsize%3==2)buftemp[bufsize]='\0';
while (i<bufsize)
{
b64byte[0]=buftemp[i]>>2;
b64byte[1]=((buftemp[i]&3)<<4)|(buftemp[i+1]>>4);
b64byte[2]=((buftemp[i+1]&0x0F)<<2)|(buftemp[i+2]>>6);
b64byte[3]=buftemp[i+2]&0x3F;
encbuf[i+(i/3)]=Base64Table[b64byte[0]];
encbuf[i+(i/3)+1]=Base64Table[b64byte[1]];
encbuf[i+(i/3)+2]=Base64Table[b64byte[2]];
encbuf[i+(i/3)+3]=Base64Table[b64byte[3]];
i+=3;
}
free(buftemp);
if (bufsize%3==0)return bufsize*8/6;
if (bufsize%3==1)return((bufsize+2)*8/6)-2;
if (bufsize%3==2)return((bufsize+1)*8/6)-1;
return -1;
}
//Base64Decod
//Encode string
//Param: buftodec,input string to decode
// bufsize,input string length
// decbug, output string decoded
//Return value:Decoded string length??? if fail return -1???
int Base64Decod(char *buftodec,int bufsize,char *decbuf)
{
int i=0;
unsigned char binbyte[4];
int cpos[5];
unsigned char *buftemp;
//Allocate space for the temporary string
buftemp=(unsigned char *)malloc(bufsize);
strcpy(buftemp,buftodec);
if (bufsize%4==1)
{
buftemp[bufsize]='\0';
buftemp[bufsize+1]='\0';
buftemp[bufsize+2]='\0';
}
if (bufsize%4==2)
{
buftemp[bufsize]='\0';
buftemp[bufsize+1]='\0';
}
if (bufsize%4==3)buftemp[bufsize]='\0';
while (i<bufsize)
{
cpos[0]=strchr(Base64Table,buftemp[i])-Base64Table;
cpos[1]=strchr(Base64Table,buftemp[i+1])-Base64Table;
cpos[2]=strchr(Base64Table,buftemp[i+2])-Base64Table;
cpos[3]=strchr(Base64Table,buftemp[i+3])-Base64Table;
binbyte[0]=((cpos[0]<<2)|(cpos[1]>>4));
binbyte[1]=((cpos[1]<<4)|(cpos[2]>>2));
binbyte[2]=(((cpos[2]&0x03)<<6)|(cpos[3]&0x3f));
decbuf[i-(i/4)]=binbyte[0];
decbuf[i-(i/4)+1]=binbyte[1];
decbuf[i-(i/4)+2]=binbyte[2];
i+=4;
}
free(buftemp);
if (bufsize%4==0)return bufsize*6/8;
if (bufsize%4==1)return((bufsize+3)*6/8)-3;
if (bufsize%4==2)return((bufsize+2)*6/8)-2;
if (bufsize%4==3)return((bufsize+1)*6/8)-1;
return -1;
}
问题点数:0、回复次数:3Top
1 楼CCED136(夜林箭)回复于 2003-06-03 08:51:22 得分 0
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;
}
//---------------------------------------------------------------------------
Top
2 楼nightfallrove(过儿 明月装饰了你的窗 你装饰了我的梦)回复于 2003-06-05 14:04:03 得分 0
晕!!!!!!!!!!!
去看老侃的原文吧Top
3 楼ouyongke(只吃源代码的Mouse)回复于 2003-06-29 21:40:41 得分 0
是呀,看都看晕了Top




