2016-07-15 6 views
0

Я создал следующий код для отправки электронной почты с адреса, установленного в формате UTF-8. Я знаю, что msmtp имеет поддержку IDN, но когда я запускаю эту программу, я получаю сообщение об ошибке, которое не соответствует значению \xe2\x82\xac (aka '€').Отправка международной почты из командной строки с 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

Похоже, ваша среда не понимает, что вы даете ему сложные характеры. Убедитесь, что вы разбираете символы как unicode. Если вы попытаетесь разобрать значение unicode как ascii, вы получите некоторые довольно странные результаты.

Возможно, вы захотите изучить использование wchar_t вместо char *.

+0

Фактически, когда я использую printf ("% s \ n", отправитель); он правильно выводит адрес на консоль (он отображает символ «евро»). –