2013-05-14 2 views
1

문제 : 는 sendmail을 호출하지 못했습니다 : 잘못된 인수MTA를 사용하여 Mac OS X에서 c 프로그램으로 전자 메일을 보냅니다.

전 C 프로그램을 사용하여 맥 OS X 아 파크 이메일을 보내 tryed

#include<stdio.h> 
#include<errno.h> 
#include<string.h> 
int add(char* to,char* from,char* subject,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", 1, 2, mailpipe); 
pclose(mailpipe); 
retval = 0; 
} 
else 
{ 
perror("Failed to invoke sendmail"); 
} 
return retval; 
} 
int main() 
{ 
char to1[256]; 
char from1[256]; 
char message1[256]; 
char sub1[256]; 
int i; 
printf("hello\n"); 
scanf("%s",to1); 
scanf("%s",from1); 
scanf("%s",message1); 
scanf("%s",sub1); 
i=add(to1, from1, sub1, message1); 
return 0; 
} 

코드입니다. 문제가 (코드 또는 로컬 MTA에서) 어디에 있는지 알 수 없습니다. 누군가 조언을 해줄 수 있습니까?

답변

0

명확한 버그와 가능성이 하나있다 :

  • 는 확실히 popen()"w""w+"을 변경해야합니다. 유효한 인수는 w, rr+이므로 잘못된 인수가 해결됩니다. 기본에 더 /usr/lib/sendmail이 없기 때문에
  • 아마 설치, 현대의 OS X에 /usr/sbin/sendmail를 사용하여보고 싶을