7

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

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>

更新: 私は十分に明確ではなかったと思います...送信メッセージに表示される HTML には、HTML 全体に表示される画像があるはずです。画像をメッセージに添付しても問題ありませんが、必要な場所である HTML には表示されません。そのため、画像をメッセージに明確に添付することはできません...(私はそうなると思いました)。

HTH...

4

4 に答える 4

8

Base64の回答に同意します。これが、一般的なNSDatabase64カテゴリを使用した私のソリューションです。

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>

##########は、base 64でエンコードされた後、reading.pngのデータに置き換えられます。

于 2012-04-24T19:19:18.833 に答える
5

おそらく、base64 でエンコードされたデータを使用できます。

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" align=center alt="reading">
于 2012-04-24T18:54:37.060 に答える
3

メールで画像をロードするには、画像タグに完全な URL を含める必要があり、画像をロードできるようにサーバーのどこかに配置する必要があります。

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

于 2012-04-24T18:52:07.230 に答える
0

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

于 2012-05-03T20:51:40.620 に答える