邮件发送!!!急!!!已搞了四天了!!!!!!
小弟学BCB不久,这几天在弄个邮件发送程序遇到问题!!经夜林箭大虾帮忙,COPY了他给的一段代码,编译通过,程序执行后也没未连接上等提示,密码和邮箱等资料也正确,但
就是收不到邮件。
麻烦各位大哥帮忙看看,或者能提供全部远码了!!
#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)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (NMSMTP1->Connected )
{
NMSMTP1->Disconnect();
return;
}
try
{
NMSMTP1->ClearParameters();
NMSMTP1->Host="www.yahoo.com.cn";
NMSMTP1->Port=25;
NMSMTP1->UserID="c_aicai";
NMSMTP1->Connect();
if ( !NMSMTP1->Connected )
{
return;
}
NMSMTP1->PostMessage->FromName="langman";
NMSMTP1->PostMessage->FromAddress="c_aicai@yahoo.com.cn";
NMSMTP1->PostMessage->ToAddress->Add("c_aicai@yahoo.com.cn");
NMSMTP1->PostMessage->Body->Add("alkfkaakga");
NMSMTP1->PostMessage->Subject="The KB Logfile";
NMSMTP1->PostMessage->LocalProgram="project1";
NMSMTP1->SendMail();
::Sleep(2000);
}
catch(...)
{
return;
}
return ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMSMTP1Connect(TObject *Sender)
{
char EncName[64],EncPsw[64];
memset(EncName,0,64);
memset(EncPsw,0,64);
Base64Encod("c_aicai",7,EncName);
Base64Encod("760120",6,EncPsw);
if(NMSMTP1->ReplyNumber==250)
{
NMSMTP1->Transaction("auth login");
}
if(NMSMTP1->ReplyNumber==334)
{
NMSMTP1->Transaction(EncName);
}
if(NMSMTP1->ReplyNumber==334)
{
NMSMTP1->Transaction(EncPsw);
}
}
//---------------------------------------------------------------------------
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;
}