Pues... fácil... consiste en:
1.- El cuerpo del mensaje debe ser en formato
text/html. Vamos: una página HTML.
2.- El cuerpo HTML y el resto de imágenes serán adjuntos, uno por uno en el correo.
3.- El HTML hace referencia a las imágenes adjuntas, para que el cliente de correo las muestre incrustadas en el flujo de la página. Eso quiere decir que hay que referenciarlas de forma especial.
Mira la sección
Optimising out HTML parsing del módulo
Email::MIME::CreateHTML, para que veas un ejemplo de un módulo que te permite crear correos con HTML e imágenes adjuntas.
Otra opción es usar
MIME::Lite (mira la sección
Send an HTML document... with images included!). Lo importante es que el Id de la imagen coincida con el indicado en el
src de la marca <img>, con el protocolo
cid.
Y algún módulo más...