2012-06-06 4 views
5

В моем приложении я могу отправлять почту с помощью сервера smtp, для этого я ввел свой правильный идентификатор и пароль электронной почты. , но когда я ввожу данные своей учетной записи gmail или yahoo, я не могу отправить почту. как я установил свой relayHost = @ "smtp.gmail.com"; то также я не могу отправить почту.iphone для отправки электронной почты с помощью сервера smtp?

, пожалуйста, помогите мне это.

Ниже мой код:

-(void)sendEMAIL{ 

    SKPSMTPMessage *testMsg = [[SKPSMTPMessage alloc] init]; 

    testMsg.fromEmail = str_uname; 
    NSLog(@"str_Uname=%@",testMsg.fromEmail); 

    testMsg.toEmail = str_info; 

    NSLog(@"autoemail=%@",testMsg.toEmail); 

    testMsg.relayHost = @"smtp.gmail.com"; 

    testMsg.requiresAuth = YES; 

    testMsg.login = str_uname; 
    NSLog(@"autoelogin=%@",testMsg.login); 

    testMsg.pass = str_password; 
    NSLog(@"autopass=%@",testMsg.pass); 

    testMsg.subject = @"Schedule Sms And Email"; 

    testMsg.wantsSecure = YES; 

    NSString *sendmsg=[[NSString alloc]initWithFormat:@"%@",str_info2]; 
    NSLog(@"automsg=%@",sendmsg); 

    testMsg.delegate = self; 

    NSDictionary *plainPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain",kSKPSMTPPartContentTypeKey, 
          sendmsg, kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil]; 

    testMsg.parts = [NSArray arrayWithObjects:plainPart,nil]; 
    [testMsg send]; 
} 

-(void)messageSent:(SKPSMTPMessage *)message{ 
    [message release];  
} 

-(void)messageFailed:(SKPSMTPMessage *)message error:(NSError *)error{ 
    [message release]; 
} 
+0

проблема в том, что Gmail и Yahoo использует пользовательскую аутентификацию для своих Smtp услуг. – CarlJ

ответ

2

вы можете также исходный код от слышать https://github.com/kailoa/iphone-smtp Сво удивительный код, используя SMTP-сервер.

http://iphonesdksnippets.com/send-email-with-attachments-on-iphone.html использовать эту ссылку также хорошо .... Просто скачайте фрейм оттуда и используйте этот код. Его тоже приятно.

+0

sinh99 Эта библиотека работает на вас? –

-1

вы можете управлять реле хост для Yahoo, Gmail, Hotmail и т.д. в этом
ПУТЬ

NSArray *arr1 = [fromEmail componentsSeparatedByString:@"@"]; 
NSArray *arr2 = [[arr1 objectAtIndex:1] componentsSeparatedByString:@"."]; 

if ([arr2 containsObject:@"gmail"]) { 
    smtp_message.relayHost = @"smtp.gmail.com"; 
} 
else if ([arr2 containsObject:@"yahoo"]) { 
    smtp_message.relayHost = @"smtp.mail.yahoo.com"; 
} 
else if ([arr2 containsObject:@"hotmail"] || [arr2 containsObject:@"live"]) { 
    smtp_message.relayHost = @"smtp.live.com"; 
} 
else 
{ 
    NSString *smtpRelay = [[NSString alloc]init]; 
    smtpRelay = [NSString stringWithFormat:@"smtp.%@.com",[arr2 objectAtIndex:0]]; 
     smtp_message.relayHost = smtpRelay; 
} 
Смежные вопросы