2012-04-24 5 views
7

私はこのコードを持っています。このコードは、電子メールにHTMLファイルを添付し、電子メールの本文にHTMLファイルの内容を表示することになっています。 1行おきに表示される画像(reading.png)がHTMLファイルで参照されています。ただし、電子メールの本文には表示されません。それを表示するには何をしなければなりませんか?この画像をメールの本文に表示するにはどうすればいいですか?

if ([MFMailComposeViewController canSendMail]) { 

    MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init]; 
    mailer.mailComposeDelegate = self; // set delegate to notify us what's happen'in 

    [mailer setSubject:[NSString stringWithFormat: @"Site Readings for: %@", gSiteID.globalSiteID]]; 

    // add the image for the HTML 
    UIImage *toolImage = [UIImage imageNamed:@"reading.png"]; 
    NSData *imageData = UIImagePNGRepresentation(toolImage); 
    [mailer addAttachmentData:imageData mimeType:@"image/png" fileName:@"reading.png"]; 

    // attach file 
    NSString *file = [[NSBundle mainBundle] pathForResource:@"Surveyor" ofType:@"txt"]; 
    NSData *surveyorTxt= [NSData dataWithContentsOfFile: file]; 
    [mailer addAttachmentData: surveyorTxt mimeType:@"text/html" fileName: @"Surveyor.txt"]; 

    // display the file in the body of the email 
    NSString *reportBody; 
    reportBody = [[NSString alloc] initWithData:databuffer encoding:NSASCIIStringEncoding]; 
    [mailer setMessageBody: reportBody isHTML:true]; // indicate the body is html 

    [self presentModalViewController: mailer animated:TRUE]; 

これが表示されるHTMLです:

<html> 
<head> 
<link rel='stylesheet' type='text/css' href='default.css'/> 
</head> 
<body> 
STA:&nbsp;TBM "J" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Elev:&nbsp;19.76<br>Desc:&nbsp;USGS Test Site 
<div> 
<table border class="boldtable"> 
<tr BGCOLOR="ADDAFE"> 
<th>STA&nbsp;</th> 
<th>BS&nbsp;</th> 
<th>HI&nbsp;</th> 
<th>FS&nbsp;</th> 
<th>ELEV&nbsp;</th> 
<th>Desc</th> 
</tr> 
<p><tr> 
<td> TBM "J"</td> 
<td></td><td></td><td></td> 
<td>19.76</td> 
<td>USGS Test Site</td> 
<p><tr 
><td><img src="reading.png" align=center></td><td>3.14</td><td valign="middle">22.90</td> 

UPDATE:私は、私は十分に明確だったとは思わない...送信メッセージに表示されるHTMLには、そこにHTML全体に現れるイメージでなければなりません。メッセージに画像を付けるのに問題はありませんが、HTMLには表示されません。これは、必要な場所です。画像にメッセージをつけていることは明らかに機能していません...(私はそれを考えました)。

HTH ...電子メールでの画像のロードのために

答えて

8

は私がベース64の答えに同意します。私のソリューションは、共通のNSDataベース64カテゴリを使用していました。

static NSString *EmailBody(NSString *description, UIImage *image) 
{ 
    NSString *format = @"<html>" 
    @"<body>" 
    @"<p>%@</p>" 
    @"<p><b><img src='data:image/png;base64,%@'></b></p>" 
    @"</body>" 
    @"</html>"; 
    NSData *imageData = UIImagePNGRepresentation(image);  
    return [NSString stringWithFormat:format, description, [imageData base64EncodedString]]; 
} 

だけで物事を明確にする、私はあなたの例を使用します。

<html> 
<head> 
<link rel='stylesheet' type='text/css' href='default.css'/> 
</head> 
<body> 
STA:&nbsp;TBM "J" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Elev:&nbsp;19.76<br>Desc:&nbsp;USGS Test Site 
<div> 
<table border class="boldtable"> 
<tr BGCOLOR="ADDAFE"> 
<th>STA&nbsp;</th> 
<th>BS&nbsp;</th> 
<th>HI&nbsp;</th> 
<th>FS&nbsp;</th> 
<th>ELEV&nbsp;</th> 
<th>Desc</th> 
</tr> 
<p><tr> 
<td> TBM "J"</td> 
<td></td><td></td><td></td> 
<td>19.76</td> 
<td>USGS Test Site</td> 
<p><tr 
><td><img src="data:image/png;base64,##########" align=center></td><td>3.14</td><td valign="middle">22.90</td> 

##########は、base64でエンコードされてからreading.pngのデータに置き換えられます。

+1

ここで何をしていますか? HTMLのすべてが必要なのはなぜですか?私がしたいのは、添付されたHTMLに画像が表示されるようにすることです。 – SpokaneDude

+1

これは混乱している場合は申し訳ありません。あなたのHTMLには ''のみが必要です。私の例は、画像の上に画像の説明がある完全なHTML電子メールです。 –

+0

こんにちはJeffery ...元に戻ってくれてありがとう...私はこれを理解できるかどうかを確認しましょう:「NSString encStr = [imageData base64EncodedString];」のようにして、###### #あなたのコードの上に "encStr"がありますか? (src = "data:image/png; base64、encStr" ...) – SpokaneDude

3

は、画像タグはそれに完全なURLを持っている必要があり、それをロードすることができるように、画像がどこかのサーバー上に配置する必要があります。

<img src="http://www.mydomain.com/reading.png" align=center>

+2

よく動作する電子メールプログラムは、その読み込みを拒否します。 –

+1

真。そして、今日でさえ、ほとんどのプロモーション電子メールはそのように送信されます(Newegg、Microsoftなど) –

+1

実際に電子メールで画像を表示するには、srcプロパティに整形済みのURLが含まれている必要があります –

5

たぶん、あなたは、base64でエンコードされたデータを使用することができます。

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA 
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO 
9TXL0Y4OHwAAAABJRU5ErkJggg==" align=center alt="reading"> 
0

NSString stringWithFormatに入力し、.pngをNSStringに挿入する必要があります。私はXcode 3であなたのコードを試してみました。それが役に立てば幸い!

関連する問題