关于NMSMTP的问题? 我做了一个利用TNMSMTP和TNMPOP3控件收发电子邮件的小程序,可是给NMSMTP.Host赋值老是出错。 如:设NMSMTP.Host:='163.com';()请教:错在哪呢?给NMSMTP.Host应该如何赋值呢?谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 NMSMTP.Host:='smtp.163.com';///这样就可以了但现在的服务器大多需要验证身份了,还要加点东西才能发送! 现在的服务器大多需要验证身份了,还要加点东西才能发送!!给你一段我C++的代码{Mcount和Mcode是SMTP要验证的用户名和密码 char EncName[64],EncPsw[64]; memset(EncName,0,64); memset(EncPsw,0,64); MailForm->Base64Encod(Mcount.c_str(),Mcount.Length(),EncName); MailForm->Base64Encod(Mcode.c_str(),Mcode.Length(),EncPsw); StatusBar1->Panels->Items[1]->Text = "连接中"; if(NMSMTP1->ReplyNumber==250) NMSMTP1->Transaction("auth login"); if(NMSMTP1->ReplyNumber==334) NMSMTP1->Transaction(EncName); if(NMSMTP1->ReplyNumber==334) NMSMTP1->Transaction(EncPsw); if(NMSMTP1->ReplyNumber==235) StatusBar1->Panels->Items[1]->Text = "与服务器连接成功";}int TMailForm::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;} static const char Base64Table[64]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; http://www.stgzs.myetang.com/Hack/DelphiTechV1.5.chm下载这个东东,里面好多你所想要的!!! 包括用NMSMTP发验证身份的邮件! timer控件事件里,刷新数据问题。 ListView delphi如何使用TCP/IP socket向服务端收发数据流 紧急求救,关于格式化数据。谢谢 二进制文件读取问题 :”ACTIVEX部件无法创建对象“是怎么回事? 如何得到一Dialog的窗口句柄? ADO+ACCESS数据库,怎样在数据库中设字“金额”的数据类型,为什么我输入的只有两位小数,而在DBGRID中显示小数有好多位,打开MS ACCESS 很郁闷一问题,几天没睡好觉,不解。请大家多指教。 2015年春节快乐,散分 事情紧急,请求帮助。谢谢!!!我愿出高分!!! 100分求源代码
给你一段我C++的代码{Mcount和Mcode是SMTP要验证的用户名和密码
char EncName[64],EncPsw[64];
memset(EncName,0,64);
memset(EncPsw,0,64); MailForm->Base64Encod(Mcount.c_str(),Mcount.Length(),EncName);
MailForm->Base64Encod(Mcode.c_str(),Mcode.Length(),EncPsw); StatusBar1->Panels->Items[1]->Text = "连接中"; if(NMSMTP1->ReplyNumber==250)
NMSMTP1->Transaction("auth login"); if(NMSMTP1->ReplyNumber==334)
NMSMTP1->Transaction(EncName); if(NMSMTP1->ReplyNumber==334)
NMSMTP1->Transaction(EncPsw); if(NMSMTP1->ReplyNumber==235)
StatusBar1->Panels->Items[1]->Text = "与服务器连接成功";
}
int TMailForm::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;
}
下载这个东东,里面好多你所想要的!!!