Question:
I have to send a text report (with formatting) that I put in an RTF file inside my project.
When I'm going to define the email body using the method below, the formatting of the RTF file is not recognized by MFMailComposeViewController.
Here's the code I'm using and the NSString returned from my RTF file:
NSString *path = [[NSBundle mainBundle] pathForResource:@"relatorio"
ofType:@"rtf"];
NSString *emailBody = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
[picker setMessageBody:emailBody isHTML:NO];
I've already tried several encodings and it didn't change the emailBody content, below is the beginning of the NSString emailBody:
{\rtf1\ansi\ansicpg1252\cocoartf1265
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\qc
\f0\b\fs24 \cf0 Relat\'f3rio \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural
\cf0 Desenvolvido por Finaltap\
Putting in HTML is not an option as the report is very large and was taken from an MS Word file.
Any idea???
Answer:
The simplest idea is to send it as an attachment. If you don't need to make changes at runtime, it's an extremely simple solution and should solve your problem.
You will start an NSData
with the contents of the file and pass it in the picker
addAttachmentData
. Done!
Now if you really need to put the content directly into the body of the email, I believe some conversions to HTML
will be needed. You say that changing the source file is not an option, but I will mention the possibility of doing this conversion at runtime.
The NSAttributedString
has an initWithData
that supports receiving an NSData
from an RTF
file. After conversion, you will probably be able to get the text in attributed strings or even HTML
if it works correctly with the generated output.