2010-02-16 153 views
4

我想使用MessageUI框架將圖像和PDF附加到電子郵件。我遵循Apple文檔中的MailComposer示例。iPhone MessageUI電子郵件附件沒有被髮送到接收器

在iPhone上,它看起來很完美,圖像和PDF都在預期發送郵件窗口的主體中顯示。

但是,當我在我的MacBook上收到電子郵件時,存在兩個問題。

1)myImage.png顯示爲一個附件,是正確的尺寸,而是可以完全空白

2)myPDF.pdf不顯示爲在所有

附件但是,當我收到我的iPhone上的郵件,myImage.png顯示正常。 myPDF.pdf仍然不會在我的iPhone上顯示在郵件中。

希望有人可以對可能發生的事情有所瞭解。

下面是相關代碼:相反,保存和檢索我的形象和PDF我mainBundle我用NSDocumentsDirectory和一切工作的罰款

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
picker.mailComposeDelegate = self; 

[picker setSubject:@"Test Email"]; 

// Attach an image to the email 
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"myImage" ofType:@"png"]; 
NSData *imageData = [NSData dataWithContentsOfFile:imagePath]; 
[picker addAttachmentData:imageData mimeType:@"image/png" fileName:@"myImage"]; 


// Attach a PDF file to the email 
NSString *pdfPath = [[NSBundle mainBundle] pathForResource:@"myPDF" ofType:@"pdf"]; 
NSData *pdfData = [NSData dataWithContentsOfFile:pdfPath]; 
[picker addAttachmentData:pdfData mimeType:@"application/pdf" fileName:@"myPDF"]; 


// Fill out the email body text 
NSString *emailBody = @"This is a test."; 
[picker setMessageBody:emailBody isHTML:NO]; 

[self presentModalViewController:picker animated:YES]; 
[picker release]; 

編輯

回答

0

我不知道它是否確實會導致你的問題,但大多數人似乎包括對文件名參數addAttachmentData文件擴展名,即

[picker addAttachmentData:imageData mimeType:@"image/png" fileName:@"myImage.png"]; 
+0

實際上這並不是必需的,因爲文件類型已經在pathForResource中指定:ofType:但是,無論如何,我確實嘗試過,並沒有區別。 – jj0b 2010-02-18 16:16:58

+0

pathForResourceOfType是關於*加載*的數據,而fileName參數可能已經影響了電子郵件客戶端如何解釋*數據....您可以發佈電子郵件轉儲,因爲您在Mac上收到它? – 2010-02-19 04:11:32

0

我有同樣的問題,我確定所述MFMailComposeViewController被包裝MIMEPDF文件與7位傳輸編碼,而不是引號的可打印或基-64編碼。顯然你不能使用7位編碼向二進制文件發送電子郵件。因此,無論是我丟失的MFMailComposeViewController還是傳輸編碼設置,或者此對象都有嚴重的缺陷。

1

我對圖像附件有同樣的問題。使用這個,我能夠發送並實際接收附加的圖像:

//attachment 
UIImage *image = [UIImage imageNamed:@"image.png"]; 
NSData *imageData = UIImagePNGRepresentation(image); 

[picker addAttachmentData:imageData mimeType:@"image/png" fileName:@"theImage"]; 

我沒有嘗試pdf發送,對不起。

只是我的兩分錢,

問候。

0

試試這個,這個爲我工作。

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
picker.mailComposeDelegate = self; 

[picker setSubject:@"Test Email"]; 

// Attach an image to the email 
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"myImage" ofType:@"png"]; 
NSData *imageData = [NSData dataWithContentsOfFile:imagePath]; 
[picker addAttachmentData:imageData mimeType:@"image/png" fileName:@"myImage"]; 


// Attach a PDF file to the email 
//NSString *pdfPath = [[NSBundle mainBundle] pathForResource:@"myPDF" ofType:@"pdf"]; 
//NSData *pdfData = [NSData dataWithContentsOfFile:pdfPath]; 

[picker addAttachmentData:pdfData mimeType:@"application/pdf" fileName:@"myPDF.pdf"]; 


// Fill out the email body text 
NSString *emailBody = @"This is a test."; 
[picker setMessageBody:emailBody isHTML:NO]; 

    // [self presentModalViewController:picker animated:YES]; 

    [picker release]; 
0

我碰到這個際,我也有同樣的問題...有點老了,但萬一有人遇到這種這裏就是幫助我....

我可以加我的附件像往常一樣(使用各種類型的6個附件)...他們會出現在電子郵件正文中...但接收器永遠不會得到所有的附件....只有一個。

我將文件拖入我的編輯器(拖放到你的m或h文件中)並顯示文件路徑。事實證明,我忽視了將第一個文件複製到我的項目中,所以應用程序從我的本地驅動器中拉出,然後停止,因爲我嘗試附加的其他文件不在同一個文件夾中。一旦我從同一個位置拉出所有附件,它們都會完好無損。

希望能幫助別人。