2012-08-27 6 views
0

를 통해 메일을 보낼 때 personB 를 숨은 참조 : personC버그 숨은

모두 세 사람이 이메일을 받게됩니다. 수신 된 모든 전자 메일에는 수신 확인 필드에 personC가 표시됩니다. 우리가 알고있는 것처럼 숨은 참조 담당자 인 personC가 표시되어서는 안됩니다. 왜 이런 일이 일어날 수 있겠습니까? 나는 정확히 CTCoreMessage을 to, cc 및 bcc로 설정했습니다. 이 프레임 워크는 MailCore의 버그입니까? 아니면 내가 놓친 게 있니?

미리 감사드립니다.

다음 프레임 워크가 숨은 참조 주소가 될 것이라고 아무것도 표시되지 않는 버그가 프레임 워크 자체처럼

- (IBAction)buttonSendPressed:(id)sender 
{ 
[self dismissViewControllerAnimated:YES completion:^{ 
    CTCoreMessage *testMsg = [[CTCoreMessage alloc] init]; 
    NSMutableArray *mutArrTos = [NSMutableArray array]; // personA 
    NSMutableArray *mutArrCcs = [NSMutableArray array]; // personB 
    NSMutableArray *mutArrBccs = [NSMutableArray array]; // personC 
    NSLog(@"toContactArr :%@",toContactArr); 

    if (toContactArr.count>0) { 
     for (NSDictionary *dict in toContactArr) { 
      [mutArrTos addObject:[CTCoreAddress addressWithName:[dict valueForKey:@"name"] email:[dict valueForKey:@"email"]]]; 
     } 
     NSLog(@"mutArrRecipients : %@", mutArrTos); 
     [testMsg setTo:[NSSet setWithArray:mutArrTos]]; 
    } 

    if (ccContactArr.count>0) { 
     for (NSDictionary *dict in ccContactArr) { 
      [mutArrCcs addObject:[CTCoreAddress addressWithName:[dict valueForKey:@"name"] email:[dict valueForKey:@"email"]]]; 
     } 
     NSLog(@"mutArrRecipients : %@", mutArrCcs); 
     [testMsg setCc:[NSSet setWithArray:mutArrCcs]]; 
    } 


    if (bccContactArr.count>0) { 
     for (NSDictionary *dict in bccContactArr) { 
      [mutArrBccs addObject:[CTCoreAddress addressWithName:[dict valueForKey:@"name"] email:[dict valueForKey:@"email"]]]; 
     } 
     NSLog(@"mutArrRecipients : %@", mutArrBccs); 
     [testMsg setBcc:[NSSet setWithArray:mutArrBccs]]; 
    } 

    [testMsg setFrom:[NSSet setWithObject:[CTCoreAddress addressWithName:@"222222" email:@"[email protected]"]]]; 
    [testMsg setBody:self.textView.text]; 
    [testMsg setSubject:self.textField.text]; 

    DbManager *dbManager = [[DbManager sharedManager] switchDBWithFileName:DBNAME]; 
    User *user = [dbManager getAccount]; 
    NSString *account = user.account; 
    NSString *pwd = user.password; 
    NSString *emailType = user.email_type; 
    NSLog(@"user: %@", user); 

    NSLog(@"account: %@", account); 
    NSLog(@"pwd: %@", pwd); 
    NSLog(@"emailType: %@", emailType); 


    NSError *error; 
    BOOL success = [CTSMTPConnection sendMessage:testMsg server:@"smtp.gmail.com" username:@"[email protected]" password:@"222222" port:25 useTLS:YES useAuth:YES error:&error]; 
    if (!success) { 
     // Present the error 
     NSLog(@"error: %@", error); 
    }else{ 
     NSLog(@"CTSMTPConnection success"); 
    } 

}]; 
} 

답변

4

발견했다. CTCoreMessage.m을 수정하여 다음과 같이 헤더에서 숨은 참조 주소를 제거하십시오. 그러면 숨은 참조 주소가 수신자에게 인쇄되지 않습니다.

CTCoreMessage.m

- (NSString *)render { 
CTMIME *msgPart = myParsedMIME; 

if ([myParsedMIME isKindOfClass:[CTMIME_MessagePart class]]) { 
    /* It's a message part, so let's set it's fields */ 
    struct mailimf_fields *fields; 
    struct mailimf_mailbox *sender = (myFields->fld_sender != NULL) ? (myFields->fld_sender->snd_mb) : NULL; 
    struct mailimf_mailbox_list *from = (myFields->fld_from != NULL) ? (myFields->fld_from->frm_mb_list) : NULL; 
    struct mailimf_address_list *replyTo = (myFields->fld_reply_to != NULL) ? (myFields->fld_reply_to->rt_addr_list) : NULL; 
    struct mailimf_address_list *to = (myFields->fld_to != NULL) ? (myFields->fld_to->to_addr_list) : NULL; 
    struct mailimf_address_list *cc = (myFields->fld_cc != NULL) ? (myFields->fld_cc->cc_addr_list) : NULL; 
// struct mailimf_address_list *bcc = (myFields->fld_bcc != NULL) ? (myFields->fld_bcc->bcc_addr_list) : NULL; 
    clist *inReplyTo = (myFields->fld_in_reply_to != NULL) ? (myFields->fld_in_reply_to->mid_list) : NULL; 
    clist *references = (myFields->fld_references != NULL) ? (myFields->fld_references->mid_list) : NULL; 
    char *subject = (myFields->fld_subject != NULL) ? (myFields->fld_subject->sbj_value) : NULL; 

    //TODO uh oh, when this get freed it frees stuff in the CTCoreMessage 
    //TODO Need to make sure that fields gets freed somewhere 
// fields = mailimf_fields_new_with_data(from, sender, replyTo, to, cc, bcc, inReplyTo, references, subject); 
    fields = mailimf_fields_new_with_data(from, sender, replyTo, to, cc, NULL, inReplyTo, references, subject); 


    [(CTMIME_MessagePart *)msgPart setIMFFields:fields]; 
} 
return [myParsedMIME render]; 
} 
2

enter image description here

이 보이는 참조 용 관련 코드 숨김

단지 메시지가 bcc, cc 및 to로 설정 될 수 있음을 보여줍니다.

내가 2 피트 프레임 워크를 팠지만, SMTP 프로토콜을 읽은 후 숨은 그것이 수신 측에서 숨겨집니다 보여주는에 대해 아무것도 ...

+0

우리 중국 자주 PLZ 내 대답을 확인, 버그를 수정 ........... –

+0

lolz에 대한 발굴. – Charan

+0

3피트 XD –

관련 문제