这段时间做邮箱报警(用tcp登录邮箱--中介邮箱,然后再发送正文和附件到另外一个邮箱),搞得头都大了,而如何获取邮箱ip地址也是一个小难题,呵呵,因为在百度上只能搜到163邮箱的ip,其他的比如139,qq邮箱的都没有,很无奈,在一个高手的指点下,脑袋开了点翘,总算完成了。其实,不难,但想不到就是难,呵呵。
main.c代码:
#include <netdb.h>
#include <sys/socket.h>
#include <stdio.h>
int main(void)
{
char *ptr = "smtp.qq.com";//smtp.163.com smtp.139.com
char **pptr;
struct hostent *hptr;
char str[32] = {0};
//获取网站信息
if(NULL == (hptr = gethostbyname(ptr)))
{
printf("gethostbyname error for host:%s\n", ptr);
return -1;
}
//获取网站名及其别名
printf("official hostname:%s\n", hptr->h_name);
for(pptr = hptr->h_aliases; NULL != *pptr; pptr++)
{
printf("alias:%s\n", *pptr);
}
//获取ip地址
switch(hptr->h_addrtype)
{
case AF_INET:
case AF_INET6:
{
pptr = hptr->h_addr_list;
for(; NULL != *pptr; pptr++)
{
printf("address:%s\n", inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str)));
}
printf("first address:%s\n", inet_ntop(hptr->h_addrtype, hptr->h_addr, str, sizeof(str)));
break;
}
default:
printf("unknow addr type!\n");
}
return 0;
}
163邮箱结果:
official hostname:smtp.163.gslb.netease.com
alias:smtp.163.com
address:220.181.12.12
address:220.181.12.11
address:220.181.12.15
address:220.181.12.18
address:220.181.12.14
address:220.181.12.13
address:220.181.12.16
address:220.181.12.17
first address:220.181.12.12
139邮箱ip地址:
official hostname:smtp.gslb.mail.10086.cn
alias:smtp.139.com
address:113.108.212.80
first address:113.108.212.80
qq邮箱ip地址:
official hostname:smtp.qq.com
address:119.147.74.45
address:183.60.55.48
first address:119.147.74.45