Quant à une véritable "réponse universelle", je ne peux pas en fournir une. Je peux, par contre, fournir une réponse simple et définitive pour certaines particularités...
670 PIXELS
Au moins, cela semble être une réponse sûre pour les produits Microsoft. J'ai lu de nombreuses suggestions, dont la 675, mais après avoir testé moi-même cette solution, j'ai trouvé la 670.
Toutes les questions de DPI, de marges et de différences matérielles mises à part, cette réponse est basée sur le fait que si j'utilise l'aperçu avant impression dans IE9 (avec des marges standard) - et que je règle la taille d'impression sur 100 % plutôt que sur la valeur par défaut de "rétrécissement pour s'adapter", tout tient sur la page sans être coupé à cette largeur.
Si je m'envoie un e-mail HTML et que je le reçois avec Windows Live Mail 2011 (ce qu'est devenu Outlook Express) et que j'imprime la page à une largeur de 670 - là encore, tout s'adapte. Cela est vrai si je l'envoie à une copie papier réelle ou à un fichier MS XPS (impression virtuelle).
Avant d'expérimenter, j'utilisais une largeur arbitraire de 700. Dans tous les scénarios mentionnés ci-dessus, une partie de la page était coupée. Lorsque j'ai réduit à 670, tout s'est parfaitement adapté.
Quant à la façon dont j'ai défini la largeur, j'ai simplement utilisé une table html primitive "enveloppante" et défini sa largeur à 670.
Si vous pouvez dicter le logiciel de l'utilisateur final, ces questions peuvent être simples. Si vous ne le pouvez pas (ce qui est généralement le cas bien sûr), vous pouvez tester les particularités comme les navigateurs qu'ils utilisent, etc. et coder en dur les solutions pour les plus importantes. Entre IE et FF, vous couvrirez littéralement environ 90% des utilisateurs du web. Mettez un autre code pour "tous les autres", qui semble généralement fonctionner, et c'est tout...
3 votes
Au lieu d'utiliser la largeur en pixels, vous devez utiliser
width:auto
qui ajustera la largeur du contenu à la largeur du papier.