私の 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 は意図的にそのように表示するだけで、メールの実際の内容は完全で適切にフォーマットされていますか?
ありがとう!