2011-03-09 1 views

답변

1

MFMailComposeViewController를 사용하여 이미지를 첨부 할 때 메시지 아래쪽 (텍스트 아래 있지만 서명 위)에 항상이 표시되며 현재 버전의 프레임 워크에서는 변경할 수 없습니다.

그러나 이미지 데이터를 base64로 인코딩하고이를 앱의 HTML 본문에 직접 배치 할 수는 있습니다. 여기에 코드를 포함하지 않을 것입니다 (쉽게 Google로 변환 할 수 있습니다). 왜냐하면 모든 독자가 이것을 올바르게 해석하지는 않으므로 까다롭고 문제가 많기 때문입니다.

모든 이메일에 대해 동일한 헤더 이미지가 있으면 서버에 저장할 수 있으며이 파일을 참조하는 HTML 이메일 본문에 <img> 태그를 포함 할 수 있습니다.

동적 이미지 인 경우 앱에서 여러 이미지 호스팅 사이트 중 하나로 이미지를 업로드하고 URL을 검색 한 다음 다시 <img> 태그의 src으로 HTML 이메일 본문에 포함시킬 수 있습니다.

+0

고마워, 그게 내가 한거야. – Vikings

2
// Action for submenu Email Button 
- (IBAction)emailButtonPressed { 
[delegate playSound:@"Click_16"]; 

if (connectionStatus == YES) 
{ 

    if (maxCounter) 
    { 
     NSString *filename = (NSString *)[self currentImageObject:kSerialKey AtIndex:imageCounter]; 

     NSString* documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 

      // set up image data for email 
     NSString *imageFile = [documentsDirectory stringByAppendingPathComponent:filename]; 
     NSData *imageData = [NSData dataWithContentsOfFile:imageFile]; 

      // set up mail view controller for message 
     MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init]; 
     if (controller != nil) 
     { 
      controller.mailComposeDelegate = self; 
      [controller setSubject:@"Email Subject"]; 
      [controller setMessageBody:@"Check out this picture" isHTML:NO]; 
      [controller addAttachmentData:imageData mimeType:@"image/png" fileName:filename]; 
      [self presentModalViewController:controller animated:YES]; 

     } 

     [controller release]; 

    } 

    else 
     [self genericAlert:@"There are no pictures to email."]; 

} 

else 
    [self genericAlert:@"You are not connected to the internet. Please connect and try again."]; 

} 

// email delegate method to dismiss window 
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { 
    [self becomeFirstResponder]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 
+0

코드의 documentsDirectory는 무엇입니까? – Vikings

+0

죄송합니다. 코드를 업데이트했습니다. documentsDirectory 변수는 응용 프로그램의 문서 디렉토리입니다.'[NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex : 0]; ' – FreeAsInBeer

+0

이 코드는 여전히 메시지 아래의 이미지와 서명 위에 이미지를 배치합니다. – theChrisKent

0

당신은 MFMailComposeViewController 클래스에서 - (void)addAttachmentData:(NSData*)attachment mimeType:(NSString*)mimeType fileName:(NSString*)filename 방법을 사용해야합니다.

카메라에서 이미지를 가져온 후 이메일 메시지를 보내는 모습을 보여주는 great example of this입니다.

+0

첨부 파일로 보내지 않고 일부 텍스트 위에 표시하고 싶습니다. – Vikings

+2

이미지의 하단과 사용자의 서명 위에 이미지가 표시됩니다. 이 프레임 워크를 사용하여 이것을 사용자 정의 할 수 없습니다. –