7

Estoy tratando de incluir una imagen en el cuerpo de un correo electrónico HTML enviado desde un iPad. Parece imposible. Intenté utilizar el enfoque de CID, pero parece que en iOS no es posible obtener/configurar el CID de los archivos adjuntos.Cómo incrustar una imagen en el cuerpo HTML de un correo electrónico en iOS

También intenté incrustar la imagen con src="data:image/png;base64, blahblahblah". Cuando redactas el correo, parece funcionar, pero no aparece nada cuando se recibe el correo.

¿Alguna idea?

Más detalles: No estamos buscando una solución donde se adjunte JPEG/PNG en la parte inferior de un correo electrónico. Eso es fácil de hacer con [composer addAttachmentData:mimeType:fileName:].

Estamos buscando una solución donde la imagen está incrustada en línea en un correo electrónico con formato HTML. Puede envolver un enlace alrededor de esa etiqueta IMG, de modo que cuando el destinatario haga clic en la IMG, se le vincule a la página de iTunes de la aplicación.

+0

mismo problema aquí. ¿Recibiste el cid? ¿Cómo? Gracias. – Ricardo

+0

Publiqué un blog sobre cómo hacer esto aquí: http://blog.tinymission.com/blog/blogengine.web/post/2011/12/29/Inline-Attachments-Using-MFMailComposeViewController.aspx – Hahnemann

+0

solo quieres para enviar una imagen o también somw thext? Puede e esta publicación puede ayudar http://stackoverflow.com/questions/2534217/display-local-image-in-iphone-html-mail –

Respuesta

6

Descargar la categoría NSData+base64 de github.

A continuación, haga lo siguiente:

NSData *imageData = [NSData dataWithContentsOfFile:pathInDocumentDirectory(imagePath)]; 
NSString *base64String = [imageData base64EncodedString]; 
NSString *imageString = [NSString stringWithFormat:@"data:image/png;base64,%@", base64String]; 

Por último, poner el imageString en el cuerpo HTML en la que desea que aparezca esta imagen.

Espero que ayude!

+2

Esto está muy cerca, pero no funciona del todo, porque algunos clientes web como GMail no representan etiquetas img con URI de datos. :-(He probado con un pequeño punto rojo PNG como un URI de datos, y la imagen apareció bien en el cliente de correo iPad, y en el correo Yahoo, pero falló en GMail (aunque una inspección del correo electrónico en bruto muestra que la cadena base64 está presente). – Ron

+0

Lo mejor que podía hacer era hacer que mi etiqueta IMG apuntara a un PNG que alojase en un sitio web externo. Pero tampoco es una gran solución, ya que muchos clientes web bloquearán imágenes externas por defecto . En cualquier caso, esta solución base64 es bastante cercana, así que estoy feliz de otorgar la recompensa. :-) – Ron

+0

Muchas gracias Ron! – Carlos

1

De iphone email attachment

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

[picker setSubject:@"Hello"]; 


// Set up recipients 
NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"]; 
NSArray *ccRecipients = [NSArray arrayWithObjects:@"[email protected]",   @"[email protected]", nil]; 
NSArray *bccRecipients = [NSArray arrayWithObject:@"[email protected]"]; 

[picker setToRecipients:toRecipients]; 
[picker setCcRecipients:ccRecipients]; 
[picker setBccRecipients:bccRecipients]; 

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

// Fill out the email body text 
NSString *emailBody = @"It is raining"; 
[picker setMessageBody:emailBody isHTML:NO]; 

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

para ver la imagen en Gmail, que hace:

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

    NSMutableString *emailBody = [[NSMutableString alloc] initWithCapacity:20]; 

    NSString *linkimg = @"https://idrivethru.com/iDriveThruWeb/faces/javax.faces.resource/idrivethru_logo.png?ln=images"; 

    //Add the image 
    [emailBody appendFormat:@"<p><a href = 'https://idrivethru.com/'> <img src='%@' align='centre' alt='iDriveThru.com'> </a></p><br/>", linkimg]; 

    [emailBody appendString:@"<p>This is an email with an embeded image right <b>above</b> this text</p>"]; 

    //NSLog(@"%@",emailBody); 

    [mailCont setMessageBody:emailBody isHTML:YES]; 
    [self presentViewController:mailCont animated:YES completion:nil]; 
Cuestiones relacionadas