23,120
社区成员
发帖
与我相关
我的任务
分享
//直接发送到目的地,
// 参数pHostAddr为"126.com"
int SendSmtpMailDirect(char* pHostAddr) //relay
{
struct hostent* pHost = NULL;
int nSockServer;
char szBuffer[ECHOMAX];
struct sockaddr_in SockAddr;
short sPort = 25;
char pServerAddr[128];
memset(pServerAddr, 0, sizeof(pServerAddr));
/*将查询到的SMTP地址信息保存到文件*/
sprintf(pServerAddr, "nslookup -type=mx %s >./mxAddr.dat", pHostAddr);
if( system(pServerAddr) == -1 )
{
perror("nslookup");
exit(1);
}
FILE* pFile = fopen("./mxAddr.dat", "r");
if(pFile)
{
char strTemp[8];
int bOK = 0;
while( fgets(szBuffer, ECHOMAX, pFile) )
{
strncpy(strTemp, szBuffer, 8);
strTemp[7] = '\0';
if(strcasecmp(strTemp, "Address") == 0)
{
int i = 8;
int nStart = 0;
/* 找到地址的开始位置 */
for(; i < ECHOMAX; i++)
{
if(szBuffer[i] >= '0' && szBuffer[i] <= '9')
{
nStart = i;
break;
}
}
i = 0;
/* 拷贝地址*/
for(; nStart < ECHOMAX; nStart++)
{
if( (szBuffer[nStart] >= '0' && szBuffer[nStart] <= '9') || szBuffer[nStart] == '.' )
{
pServerAddr[i++] = szBuffer[nStart];
}
else
{
pServerAddr[i] = '\0';
bOK = 1;
break;
}
}
}
if(bOK)
{
break;
}
}
}
/*if((pHost=gethostbyname(pHostAddr))==NULL) {
herror("gethostbyname出错!");
exit(1);
}*/
nSockServer = socket(AF_INET, SOCK_STREAM, 0);
if (nSockServer < 0)
{
perror("server socket");
close(nSockServer);
return 1;
}
memset(&SockAddr, 0, sizeof(SockAddr));
SockAddr.sin_family = AF_INET;
SockAddr.sin_port = htons(sPort);
SockAddr.sin_addr.s_addr = inet_addr(pServerAddr);
int err;
/* 这里连接被拒绝了 */
if (connect(nSockServer, (struct sockaddr *)&SockAddr, sizeof(SockAddr)))
{
perror("server connect");
close(nSockServer);
return 1;
}
}