mb_encode_mimeheader

RFC2047あたりで長すぎるのは折り返してねとなっているので、mime情報は独自実装よりmb_encode_mimeheader使うのがベターだと思います。
モバイルだと30Byte制限あるので折り返し必要になることなさそうですが。

<?php
mb_internal_encoding('SJIS-win');
$subject = "サブジェクトのテストでござる①";

print mb_encode_mimeheader($subject, 'SJIS-win');
// =?Shift_JIS?B?g1SDdYNXg0aDToNngszDvcSCxYKygrSC6YdA?=
print base64_decode('g1SDdYNXg0aDToNngszDvcSCxYKygrSC6YdA');
// サブジェクトのテストでござる①

print mb_encode_mimeheader($subject, 'SJIS');
// =?Shift_JIS?B?g1SDdYNXg0aDToNngszDvcSCxYKygrSC6T8?=
print base64_decode('g1SDdYNXg0aDToNngszDvcSCxYKygrSC6T8');
// サブジェクトのテストでござる?

print mb_encode_mimeheader('とても長いサブジェクトのテストなんですよ', 'UTF-8');
// =?UTF-8?B?44Go44Gm44KC6ZW344GE44K144OW44K444Kn44Kv44OI44Gu44OG44K544OI?=
//  =?UTF-8?B?44Gq44KT44Gn44GZ44KI?=
?>

動作的には、internal_encodingから第二引数へ変換してbase64エンコードMIME情報付加な感じ。
SJISやUTF8で送信したい場合はmb_send_mailは窓から投げ捨てましょう。