如何检查smtp服务器(如gmail.com / hotmail.fr)是否存在?

时间:2012-11-02 09:04:21

标签: objective-c http nsurlrequest http-status-code-200

你好我正在使用Objective-c为iOS制作一个程序,我想只检查s​​mtp服务器(在@之后)是否存在ping它或对它做一个HTTP请求并获得返回状态( 200)。

我正在做什么现在它正在获取UITextField.text,剪切它,在@之后获取子字符串并执行此操作......但它无效...

        NSError *error = nil;
        NSURL *url = [NSURL URLWithString:@"gmail.com"];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];;
        NSURLResponse *response = nil;
        NSData *data=[[NSData alloc] initWithData:[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]];
        NSString* retVal = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        // you can use retVal , ignore if you don't need.
        NSInteger httpStatus = [((NSHTTPURLResponse *)response) statusCode];
        NSLog(@"responsecode: %d", httpStatus);
        // there will be various HTTP response code (status)
        // you might concern with 404
        if(httpStatus == 200)
        {
            NSLog(@"FEELIX CONTENT");
            // do your job
        }
        else
        {
            NSLog(@"FOCK!");
        }

2 个答案:

答案 0 :(得分:0)

如果您有域,则该域的邮件服务器由MX DNS记录指定。例如:

$ host -t MX gmail.com
gmail.com mail is handled by 5 gmail-smtp-in.l.google.com.
gmail.com mail is handled by 30 alt3.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 10 alt1.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 40 alt4.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 20 alt2.gmail-smtp-in.l.google.com.

该号码是优先指示。要检查服务器,请检查是否可以连接到该服务器的端口25。

答案 1 :(得分:0)

我不确定你在这里要做什么。但也许你错过了一些东西:

@符号后面的部分不一定是SMTP服务器。 通过查询DNS以获取返回SMTP服务器的MX记录(邮件交换)来确定SMTP服务器。

在Windows上你可以在命令行上执行:

nslookup -type=mx gmail.com

获取SMTP服务器。

有关详细信息,请参阅http://en.wikipedia.org/wiki/MX_record