2014-06-13 27 views
0

我希望通過mailx發送一條消息到我的C代碼中的收件人列表。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" 

我可以在發送文件之前將文本寫入文件,但效率不高。

想法?

+0

這與mailx無關。 'cat'需要打開一個文件名列表並吐出它們的內容。 'cat「測試文本」'會立刻尋找名爲'Test Text'的文件並嘗試打開它 - 並且失敗。 –

+0

在你的第二個命令中使用echo「Test Text」而不是cat。它試圖打開一個名稱爲 – Ajit

+0

的文件將貓更改爲回顯讓我「沒有指定收件人」 – user3704313

回答

0

在命令行工作,我得到這個爲我(在地方跟一般的企業電子郵件地址[email protected],當然)工作:

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選項主題行被忽略,因爲暗示在正文中。 (這是運行Ubuntu 12.04 LTS的衍生物的機器上的mailx12.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()'作爲字符串參數(一個文字字符串,或者一個在運行時從零件中建立的字符串。 –