0

私の Qt C++ プログラムには、bash コマンドの出力の最初の 128 文字程度を電子メール アドレスに送信する必要がある部分があります。tty からの出力は、textEdit_displayOutput という GUI のテキスト ボックスに取り込まれ、Message Builder (オブジェクト m_vmMessage ) を使用して作成したメッセージに入れられます。関連するコード スニペットは次のとおりです。

m_vmMessage.getTextPart()->setCharset( vmime::charsets::US_ASCII );
m_vmMessage.getTextPart()->setText( vmime::create < vmime::stringContentHandler > ( ui->textEdit_displayOutput->toPlainText().toStdString() ) );
vmime::ref < vmime::message > msg = m_vmMessage.construct();
vmime::utility::outputStreamAdapter out( std::cout );
msg->generate( out );

bash 'ls /' と改行を指定すると、vmime は次のような端末出力を表示します。

ls /=0Abin    etc=09   initrd.img.old  mnt=09 sbin=09  tmp=09   vmlinuz.o=
ld=0Aboot   farts=09   lib=09=09   opt=09 selinux  usr=0Acdrom  home=09  =
 lost+found=09   proc  srv=09  var=0Adev    initrd.img  media=09   root  =

一方、次のようになります。

ls /
bin    etc     initrd.img.old  mnt   sbin     tmp      vmlinuz.old
boot   farts       lib         opt   selinux  usr
cdrom  home    lost+found      proc  srv      var
dev    initrd.img  media       root  sys      vmlinuz
18:22>

出力は「ルート」の周りで切り捨てられているようで、表示された後は何もありません。

メールを適切にエンコードしてつなぎ合わせるにはどうすればよいですか? vime は意図的にそのように表示するだけで、メールの実際の内容は完全で適切にフォーマットされていますか?

ありがとう!

4

1 に答える 1

1

=0A改行(LF)文字です。
=09水平タブ(HT)です。

これは、非印刷(制御)文字をエンコードするMIMEの方法にすぎないと思います。

于 2010-03-13T23:44:58.650 に答える