使用SKPSMTPMessage向多个收件人发送电子邮件?

使用SKPSMTPMessage向多个收件人发送电子邮件?

问题描述:

我需要在后台发送电子邮件,所以我必须使用名为SMTP的库。而我使用的主要类是:SKPSMTPMessage。问题是“ccEmail”,当我添加2个以上的收件人时,它不能发送电子邮件。 (花费很长时间去委托方法)。它适用于收件人< = 2.使用SKPSMTPMessage向多个收件人发送电子邮件?

smtpEmail.ccEmail = @"[email protected], [email protected], [email protected]"; 

任何人都知道这一点,请帮助我。非常感谢 !

+0

任何人都有这个解决方案,请帮助我。我必须用这种方式发送电子邮件:SMTP,但是当我添加许多cc收件人时,它不起作用。我想知道为什么它只是少于或等于2个收件人。 – abelhoang 2011-04-27 12:45:38

+0

嗨,它是否与2收件人一起工作?如果有,请让我知道。我不能发送电子邮件给更多的1收件人使用SKPSMTPMessage。请回复 – Mann 2011-08-13 20:34:45

还有就是我在parseBuffer功能的变化:

case kSKPSMTPWaitingFromReply: 
    { 
     if ([tmpLine hasPrefix:@"250 "]) { 

      if (!multipleRcptTo) { 
       NSMutableString *multipleRcptToString = [NSMutableString string]; 
       [multipleRcptToString appendString:[self formatAddresses:toEmail]]; 
       [multipleRcptToString appendString:[self formatAddresses:ccEmail]]; 
       [multipleRcptToString appendString:[self formatAddresses:bccEmail]]; 

       multipleRcptTo = [[multipleRcptToString componentsSeparatedByString:@"\r\n"] mutableCopy]; 
       [multipleRcptTo removeLastObject]; 
      } 
      if ([multipleRcptTo count] > 0) { 
       NSString *rcptTo = [NSString stringWithFormat:@"%@\r\n", [multipleRcptTo objectAtIndex:0]]; 
       [multipleRcptTo removeObjectAtIndex:0]; 

       //DEBUGLOG(@"C: %@", rcptTo); 
       if (CFWriteStreamWriteFully((CFWriteStreamRef)outputStream, (const uint8_t *)[rcptTo UTF8String], [rcptTo lengthOfBytesUsingEncoding:NSUTF8StringEncoding]) < 0) 
       { 
        error = [outputStream streamError]; 
        encounteredError = YES; 
       } 
       else 
       { 
        [self startShortWatchdog]; 
       } 
      } 
      if ([multipleRcptTo count] == 0) { 
       sendState = kSKPSMTPWaitingToReply; 

      } 
     } 
     break; 
    } 

并添加到报头这样的:

NSMutableArray *multipleRcptTo; 

EDIT:下面方法还改变为multipleRcptTo被用作的NSMutableString这是本地声明:

- (NSString *)formatAddresses:(NSString *)addresses { 
    NSCharacterSet *splitSet = [NSCharacterSet characterSetWithCharactersInString:@";,"]; 
    NSMutableString *multipleRcpt = [NSMutableString string]; 

    if ((addresses != nil) && (![addresses isEqualToString:@""])) { 
    if([addresses rangeOfString:@";"].location != NSNotFound || [addresses rangeOfString:@","].location != NSNotFound) { 
     NSArray *addressParts = [addresses componentsSeparatedByCharactersInSet:splitSet]; 

     for(NSString *address in addressParts) { 
      [multipleRcpt appendString:[self formatAnAddress:address]]; 
     } 
    } 
    else { 
     [multipleRcpt appendString:[self formatAnAddress:addresses]]; 
    }  
    } 

    return(multipleRcpt); 
} 

SKPSMTPMessage一次发送到SMTP地址,并且必须一一发送。

+0

什么是formatAddresses?我想你忘了添加该地址... – 2013-09-27 08:34:06

+0

这是SKPSMTPMessage类中的一个函数。 – Maxim 2013-09-27 13:18:19

+0

+1工作完美男人的伟大........ – 2013-10-04 11:50:05