使用msmtp从命令行发送国际邮件

时间:2016-07-15 14:42:06

标签: email idn 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 个答案:

答案 0 :(得分:0)

您的环境似乎并不了解您是否给它复杂的字符。确保您将字符解析为unicode。如果你尝试将unicode值解析为ascii,你会得到一些非常奇怪的结果。

您可能希望使用wchar_t而不是char *。