验证电子邮件域的更好方法?
问题描述:
我有一小段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;
答
这可以简化为:
if (argument[at] == '@')
{
strcpy(&email_host[ei],&argument[at+1]);
ei++;
}
简单:
if (argument[at] == '@')
{
strcpy(email_host,&argument[at+1]);
}
你几乎重新实现什么'的strstr()'不,我会使用:HTTP:/ /www.cplusplus.com/reference/cstring/strstr/ –
您需要查找MX记录,而不是域部分的常规A记录。许多域名不会使用该域名的根名称来建立主机,或者,如果它存在,它可能根本没有装备来处理SMTP。 – tripleee
@Scotty:你的意思是'strchr',对吧? OP正在寻找单个角色的位置。 – usr2564301