2009-05-28 29 views

Respuesta

10

Sea más específico sobre cómo compila el mensaje de correo HTML.

El resultado será un mensaje multiparte-MIME con una parte text/html (si realmente lo hace bien con una parte alternativa de tipo texto/normal) y varias imágenes, que luego se referencian desde el HTML.

Consulte RFC 1813 y RFC 2378 para obtener más información sobre id-contenido en MIME mixto y datos relacionados (referidos por el CID en la fuente HTML).

+1

Está construido como un mensaje MIME multiparte con partes html y de imagen.Si estoy leyendo estos RFC correctamente, parece que solo debo poner una identificación de contenido en los archivos adjuntos de imagen y luego usar cid: xxx como fuente de la imagen. – user83358

+0

Esto es correcto, si todo lo demás ya está en su lugar en el mensaje MIME, incrustarlos es fácil. – Lucero

2

Si esto tiene que ver con el envío de correos electrónicos desde un sitio web que está desarrollando, simplemente guarde las imágenes en su servidor y luego enlácelas usando el <img src="url"/>.

+13

... las aplicaciones de correo más modernas no muestran esas imágenes por razones de seguridad a menos que el usuario lo confirme explícitamente. Incrustar imágenes (pequeñas) es mucho mejor para asegurarse de que el mensaje se muestre según lo previsto (o, más probablemente). – Lucero

+0

@Lucero eludir activamente el comportamiento de las aplicaciones es tabú, en mi opinión. El usuario ha elegido usar una aplicación dada __porqué__ sus características, y de hecho puede ofenderse porque alguien haya salido de su camino para eludir esta funcionalidad. La mayoría de las aplicaciones de correo modernas también le dan la opción de ver siempre imágenes de ciertos remitentes (o incluso dominios), lo que le permite al usuario decidir si desea ver sus imágenes en el futuro. –

+1

@NathanCox, no se trata en absoluto de eludir la funcionalidad. Los clientes de correo electrónico no descargan imágenes para proteger a los usuarios de su exposición (cuando la dirección web es personalizada, el remitente podría averiguar cuándo se leyó el correo y también que la dirección de correo electrónico sigue siendo válida y en uso). No mostrar las imágenes vinculadas es una medida de seguridad y no tiene nada que ver con la preferencia de los usuarios de ver imágenes (que es una configuración independiente en algunos clientes de correo electrónico). – Lucero

3

lo estoy haciendo de esta manera

_mime = new MimeMultipart(); 
BodyPart messageBodyPart = new MimeBodyPart(); 
messageBodyPart = new MimeBodyPart(); 
DataSource fds = new FileDataSource("C:\\bgBoletin.jpg"); 

messageBodyPart.setDataHandler(new DataHandler(fds)); 
messageBodyPart.setHeader("Content-ID", "<bgBoletin>"); 
_mime.addBodyPart(messageBodyPart); 

Y en el archivo HTM cuando planees referencia de Content-ID de esta manera background: url (cid: bgBoletin).

+0

su clase es CORREO? ... para usar "MimeMultipart" -> activación de clase? – delive

4

Puede usarlo de la misma manera con src="cid:bgBoletin" propiedad de la etiqueta img.

3

La respuesta a su pregunta está en los documentos de primavera here.

mailSender.send(new MimeMessagePreparator() { 
    public void prepare(MimeMessage mimeMessage) throws MessagingException { 
    MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8"); 
    message.setFrom("[email protected]"); 
    message.setTo("[email protected]"); 
    message.setSubject("my subject"); 
    message.setText("my text <img src='cid:myLogo'>", true); 
    message.addInline("myLogo", new ClassPathResource("img/mylogo.gif")); 
    } 
}); 

El cuerpo del mensaje es una de las partes del mensaje de varias partes (nota el segundo conjunto de parámetros en true en el constructor de MimeMessageHelper que establece el mensaje a un mensaje de varias partes).

La línea message.addInline("myLogo"... agrega la imagen como otra parte del mensaje de varias partes.

Puede usar .setText para establecer el cuerpo (contenido HTML) del mensaje de correo electrónico.

Puede consultar otras partes del correo electrónico de varias partes (su imagen) utilizando la etiqueta cid. Observe cómo el atributo img src es src='cid:myLogo'. cid es la identificación de contenido de la imagen, enviada como una de las partes del mensaje multiparte.

+0

publique su clase MimeMessage MimeMessageHelper, o directamente .jar – delive

0

Opción 01:
- adjuntar el archivo "mySignaturePictue.jpg" como archivo adjunto al correo
- Referencia esta fijación del cuerpo (insertarlo etc.) con un código como:
<img src="cid:mySignaturePicture.png">

Opción 02:
- convertir la imagen a una cadena base64: http://www.motobit.com/util/base64-decoder-encoder.asp
- insertarlo a la mailtext/html-cuerpo con un código como
<img alt="My Image" src="data:image/jpeg;base64,AWWhcalkjsd/beginning/RXhp/of+/long/base64cod/ZgAATU0/+BlaBlubbZ5u8/61a+Xand/much/more..." />
- Desventaja: esto está bloqueado por la mayoría de los clientes y aumentará el tamaño del correo, consulte: https://www.campaignmonitor.com/blog/email-marketing/2013/02/embedded-images-in-html-email/ y https://www.paperstreet.com/blog/email-marketing-embeded-images-cid-what-a-mess/

Cuestiones relacionadas