2010-11-21 26 views
16

Tôi đang cố gắng nhúng một loạt các hình ảnh nhỏ trong một bảng html mà tôi muốn gửi bằng cách sử dụng MFMailComposeViewController. Sau khi thực hiện một số tìm kiếm tôi đã tìm ra gần như tất cả mọi người đang đề xuất "NSData + Base64 bởi Matt Gallagher" lớp để mã hóa hình ảnh trong Base64encoding và nhúng nó vào html. Mặc dù có vẻ như hoạt động trên iPhone và với một số máy chủ email nhưng Gmail và Yahoo không hiển thị hình ảnh được nhúng theo cách này. Vấn đề này được đề cập là here.Làm thế nào để nhúng hình ảnh trong html trong MFMailComposeViewController cho iPhone

Tôi đã tự hỏi nếu có ai có giải pháp tốt hơn cho việc này. Tôi không muốn tải ảnh lên web và đặt liên kết trong mã html. Tôi muốn hình ảnh được đính kèm vào email và hiển thị dưới dạng hình ảnh nội tuyến trong văn bản html, bảng, ...

+0

tôi đăng một câu trả lời cho một câu hỏi mà có thể giúp đỡ. http://stackoverflow.com/questions/8836706/base64-html-embedded-images-not-showing-when-mailed/10481035#10481035 – fsaint

Trả lời

17

Rất tiếc, không thể thực hiện điều này theo cách bạn muốn. Hình ảnh nội tuyến trong email HTML sử dụng các phần MIME riêng biệt được tham chiếu qua id nội dung từ phần nội dung của thư. MFMailComposeViewController không cung cấp cho bạn quyền kiểm soát cấu trúc MIME của thư và không cho phép bạn thêm các phần nội dung được tham chiếu nội tuyến.

Nhúng dữ liệu hình ảnh vào các thẻ <img> vì base64 có thể hoạt động trên một số kết hợp-- một phần chức năng của ứng dụng email và một phần trình duyệt được sử dụng để hiển thị nó, nhưng như bạn đã nhận thấy, nó không thể di chuyển được.

+2

Dường như ngay cả ứng dụng thư (có vẻ như sử dụng MFMailComposeViewController) không thể nhúng ảnh trong văn bản và gửi chúng dưới dạng tệp đính kèm. Vì vậy, bạn có lẽ đúng nhất là điều đó là không thể. Xấu hổ làm sao! Dù sao cũng cảm ơn bạn. – Ali

7

Tôi không chắc chắn về việc thêm vào HTML, nhưng dưới đây là cách tôi thêm hình ảnh dưới dạng tệp đính kèm:

UIImage *image = [UIImage imageNamed:@"myImage.png"]; 
MFMailComposeViewController *composer = [[MFMailComposeViewController alloc] init]; 
composer.mailComposeDelegate = self; 

NSData *data = UIImagePNGRepresentation(image); 
[composer addAttachmentData:data mimeType:@"image/png" fileName:@"curse"]; 
[composer setMessageBody:@"" isHTML:NO]; 
[self presentModalViewController:composer animated:YES]; 
[composer release]; 

Bây giờ tất cả những gì bạn cần là thay đổi nội dung thành HTML và cách tham chiếu hình ảnh đính kèm từ HTML.

+3

Mặc dù đây là cách bạn thêm tệp đính kèm hình ảnh, câu hỏi đã được đặt ra trong thực tế cách tham chiếu các hình ảnh đính kèm trong HTML (không thực sự có thể). –

+0

@quixoto: câu hỏi nêu rõ: "Tôi muốn hình ảnh được đính kèm vào email", tôi đã trả lời phần đó. Tôi thậm chí còn nói: "Bây giờ tất cả những gì bạn cần là thay đổi cơ thể thành HTML và một cách để tham khảo hình ảnh đính kèm từ HTML." Một giải pháp từng phần luôn tốt hơn là không có giải pháp. – jbenet

+2

Đã hiểu. Đối với những gì này có giá trị: Tôi không chắc chắn rằng một phần giải pháp cho các vấn đề với câu trả lời rõ ràng có một vị trí quan trọng ở đây. Stack Overflow là một cộng đồng lớn, và hầu như luôn có những người biết câu trả lời. Để lại câu trả lời không đầy đủ thường chỉ thêm tiếng ồn. (Bạn luôn có thể để lại nhận xét về câu hỏi để làm rõ hoặc thêm một số thông tin mà không trả lời đầy đủ, v.v.) –

3

Tải hình ảnh lên một số trang web lưu trữ, sao chép liên kết và đưa đến

<img src='the link.png' /> html on your email message body. 
Các vấn đề liên quan