2016-07-15 14 views
0

Ich habe den folgenden Code erstellt, um eine E-Mail mit Adresse mit UTF-8-Format zu senden. Ich weiß, dass Msmtp IDN-Unterstützung hat, aber wenn ich dieses Programm ausführen, erhalte ich die Fehlermeldung, dass das Zeichen \xe2\x82\xac (alias "€") ungültig ist.Senden von internationalen E-Mail von der Befehlszeile mit 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) 

Dies ist der Code:

#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; 
} 

Antwort

0

Es scheint, wie Sie Ihre Umgebung nicht verstehen, dass Sie es komplexe Charaktere sind zu geben. Stellen Sie sicher, dass Sie die Zeichen als Unicode analysieren. Wenn Sie versuchen, einen Unicode-Wert als ASCII zu analysieren, erhalten Sie einige ziemlich seltsame Ergebnisse.

Vielleicht möchten Sie mit wchar_t anstelle von char * suchen.

+0

Eigentlich, wenn ich printf ("% s \ n", Absender); es gibt die Adresse korrekt an die Konsole aus (es zeigt das 'Euro'-Zeichen an). –