2014-06-13 2 views
0

내 C 코드 내에서받는 사람 목록에 mailx를 통해 메시지를 보내려고합니다.C 프로그램 내의 Mailx?

'message'변수의 내용을 포함하는 이메일을 /home/me/Email_List.txt 파일의 모든 사용자에게 보내려고합니다.

if(send_email) 
{ 
    char* message = "Testing email"; 
    //send contents of 'message' to everyone in /home/me/Email_List.txt 
} 

C 프로그램과 mailx 명령에 도움이 필요합니다. 다음은 작동하지 않는 내 mailx 명령입니다.

//This works, but I don't want to send the contents of Email_List.txt 
cat /home/me/Email_List.txt /home/me/Email_List.txt | mailx -t -s "Test" 

//This doesn't work, error: 
//cat: cannot open Test Text 
cat /home/me/Email_List.txt "Test Text" | mailx -t -s "Test" 

내 텍스트를 보내기 전에 파일에 쓸 수는 있지만 비효율적 인 것 같습니다.

생각하십니까? 암시로

mailx -s "Just a test" -t <<EOF 
To: [email protected] 
Subject: Just a test with a subject 

Just testing mailx -t which seems to ignore -s options too 
-=JL=- 
EOF 

-s 옵션 제목 줄이 무시되었습니다 : 명령 행에서 근무

+0

이것은 mailx와 아무 관련이 없습니다. 'cat'은 파일 이름 목록을 열어서 내용을 뱉어 낼 것을 기대합니다. 'cat "테스트 텍스트"는'Test Text'라는 파일을 찾다가 열려고 시도합니다. –

+0

두 번째 명령에서 cat이 아니라 "Test Text"를 사용하십시오. 그 이름을 가진 파일을 열려고합니다. – Ajit

+0

고양이를 에코로 변경하면 "수신자가 지정되지 않았습니다" – user3704313

답변

0

, 나는이 (물론, [email protected]의 장소에 내 일반 회사 이메일 주소로) 나를 위해 일을 가지고 본문에 (이것은 우분투 12.04 LTS의 유도체를 실행하는 컴퓨터에 mailx 버전 12.5 6/20/10입니다.) To: 라인 대소 문자와 스페이스 문자를 구분

주 (적어도 콜론 뒤의 공간이 있어야한다). 이것은 RFC-822 (또는 현재의 화신이 무엇이든)에 의해 정의 된 헤더에 대한 표준 표기법입니다. -s 옵션을 사용했지만 회선이 Subject: 인 경우 내받은 편지함에 제목이없는 메시지가 나타납니다.

다음은 당신을 위해 작동합니다 :

$ cat /home/me/Email_list.txt 
To: [email protected] 
Subject: Test email 

$ { cat /home/me/Email_List.txt; echo "Test Text"; } | mailx -t 
$ 

주 빈 줄 것을! 또는 echo "Test text"; 앞에 일반 echo;을 사용할 수도 있습니다. 세미콜론은 { ... } 표기법에 필요합니다.

+0

그거야! 이제 C 프로그램에서 해당 행을 호출해야합니다. 나는 그것을 위해서 system()을 사용할 수있다. – user3704313

+0

예; 그 명령 행을 문자열 인수 (리터럴 문자열 또는 런타임에 조각으로 만든 문자열)와 함께'system()'을 사용할 수 있어야합니다. –