Πιο πιθανό μου φαίνεται να έχει χαλάσει το encoding της σελίδας και τα ???? να προέρχονται από το τον κώδικα που δημιουργεί το Body. Αν έχει καρφωθεί πουθενά κάποιο encoding ή αν το κείμενο δημιουργείται με βάση κάποιο αρχείο το οποίο δεν είναι σωσμένο σε unicode, άνετα μπορούν να δημιουργηθούν προβλήματα. Για παράδειγμα αν ο server είναι σε US locale, το template file φτιάχτηκε ως ASCII σε ελληνικό μηχάνημα, το αποτέλεσμα θα είναι ????. Επίσης, αν στη σελίδα ή στο web.config έχουν μπει καρφωτά τα ελληνικά encoding αλλά ο server έχει αγγλικό locale μπορεί επίσης να υπάρξει πρόβλημα στη μετατροπή των strings.
Η λύση είναι ή να μην πειράξουμε τα encodings (οπότε παντού χρησιμιοποιείτα Unicode) ή να βεβαιωθούμε ότι παντού χρησιμοποιείται το ίδιο encoding. Προσωπικά προτιμώ την 1η λύση για να μην έχω ποτέ πρόβλημα, ούτε κατά τύχη. Το μόνο που χρειάζεται να προσέχω είναι να σώζω όλα τα αρχεία ως Unicode.
Όσον αφορά τα ίδια τα encodings, tο πιο συνηθισμένο είναι το απλό Encoding.Unicode, ή αλλιώς UTF16, και το οποίο χρησιμοποιεί πάντα 2 bytes για να αναπαραστήσει ένα χαρακτήρα. Το UTF32 είναι για τους Κινέζους και χρησιμοποιεί 4 χαρακτήρες οπότε δεν αποκλείεται το πρόβλημα να είναι όντως ότι το email service δεν καταλαβαίνει περί τίνος πρόκειται. Το UTF8 χρησιμοποιείται όταν έχεις πολύ λατινικό κείμενο καθώς αναπαριστά τους λατινικούς χαρακτήρες με 1 byte και τους υπόλοιπους με 2 ή περισσότερα.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos