解决方法
您可以使用popen()直接调用您的本地MTA,并提供符合RFC822的文本.
#include <stdio.h> #include <string.h> #include <errno.h> int sendmail(const char *to,const char *from,const char *subject,const char *message) { int retval = -1; FILE *mailpipe = popen("/usr/lib/sendmail -t","w"); if (mailpipe != NULL) { fprintf(mailpipe,"To: %s\n",to); fprintf(mailpipe,"From: %s\n",from); fprintf(mailpipe,"Subject: %s\n\n",subject); fwrite(message,1,strlen(message),mailpipe); fwrite(".\n",2,mailpipe); pclose(mailpipe); retval = 0; } else { perror("Failed to invoke sendmail"); } return retval; } main(int argc,char** argv) { int i; printf("argc = %d\n",argc); for (i = 0; i < argc; i++) printf("argv[%d] = \"%s\"\n",i,argv[i]); sendmail(argv[1],argv[2],argv[3],argv[4]); }