2016-07-15 8 views
0

次のコードを作成して、UTF-8形式のアドレスセットで電子メールを送信しました。私はmsmtpがIDNサポートを持っていることを知っていますが、このプログラムを実行すると、文字\xe2\x82\xac(別名「€」)が無効であるというエラーメッセージが表示されます。msmtpでコマンドラインから国際メールを送信する

msmtp: envelope from address relu\[email protected]\u20ac.com not accepted by the server 
msmtp: server message: 555 5.5.2 Syntax error. p83sm6227819wma.18 - gsmtp 
msmtp: could not send mail (account default from /usr/local/etc/msmtprc) 

これはコードです:

#include <stdio.h> 
int main(){ 
    char* sender = "relu\xe2\x82\[email protected]\xe2\x82\xac.com"; 
    char cmd[100]; 
    sprintf(cmd, "echo \"bla\" | msmtp -f %s [email protected]", sender); 
    system(cmd);  
    return 0; 
} 

答えて

0

ご使用の環境が、あなたはそれを複雑な文字を与えていることを理解していないように思え。あなたがユニコードとしてcharsを解析していることを確認してください。ユニコード値をasciiとして解析しようとすると、かなり奇妙な結果が得られます。

char *の代わりにwchar_tを使用したい場合があります。

+0

実際には、私はprintf( "%s \ n"、送信者)を使用します。アドレスをコンソールに正しく出力します( 'ユーロ'文字を表示します)。 –

関連する問題