验证电子邮件域的更好方法?

验证电子邮件域的更好方法?

问题描述:

我有一小段C代码从提供的字符串中提取电子邮件域,然后在其上进行主机查找。这看起来相当简单,而且很有效。不过,这可以进一步简化,或者做得更好吗?感谢您的观看。验证电子邮件域的更好方法?

struct hostent *host; 
int at = 0, ei = 0; 
char email_host[MAX_HOSTNAME_LEN]; 
for (at = 0; at < strlen(argument); at++) 
{ 
    if (argument[at] == '@') 
    { 
     strcpy(&email_host[ei],&argument[at+1]); 
     ei++; 
    } 
} 
host = gethostbyname(email_host); 
if (!host ) 
    fail = TRUE; 
+0

你几乎重新实现什么'的strstr()'不,我会使用:HTTP:/ /www.cplusplus.com/reference/cstring/strstr/ –

+4

您需要查找MX记录,而不是域部分的常规A记录。许多域名不会使用该域名的根名称来建立主机,或者,如果它存在,它可能根本没有装备来处理SMTP。 – tripleee

+1

@Scotty:你的意思是'strchr',对吧? OP正在寻找单个角色的位置。 – usr2564301

这可以简化为:

if (argument[at] == '@') 
{ 
    strcpy(&email_host[ei],&argument[at+1]); 
    ei++; 
} 

简单:

if (argument[at] == '@') 
{ 
    strcpy(email_host,&argument[at+1]); 
}