Отправка международной почты из командной строки с помощью msmtp
Я создал следующий код для отправки электронного письма с адреса, заданного в формате UTF-8. Я знаю, что MSMTP имеет поддержку IDN, но когда я запускаю эту программу, я получаю сообщение об ошибке, что символ \xe2\x82\xac
(иначе '€') является недействительным.
msmtp: envelope from address relu\u20ac@4p\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\xac@4p\xe2\x82\xac.com";
char cmd[100];
sprintf(cmd, "echo \"bla\" | msmtp -f %s example@domain.com", sender);
system(cmd);
return 0;
}
1 ответ
Кажется, что ваше окружение не понимает, что вы даете ему сложные символы. Убедитесь, что вы анализируете символы как Unicode. Если вы попытаетесь разобрать значение unicode как ascii, вы получите довольно странные результаты.
Вы можете захотеть использовать wchar_t вместо char*.