Mailx来自C程序?

时间:2014-06-13 17:59:19

标签: c shell concatenation mailx

我希望通过mailx向我的C代码中的收件人列表发送邮件。

我想向/home/me/Email_List.txt文件中的每个人发送一封包含'message'变量内容的电子邮件。

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" 

我可以在发送之前将文本写入文件,但这似乎效率低下。

思想?

1 个答案:

答案 0 :(得分:0)

在命令行工作,我让这个为我工作(当然,用我的正常公司电子邮件地址代替me@example.com):

mailx -s "Just a test" -t <<EOF
To: me@example.com
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派生的机器上的mailx版本12.5 6/20/10。)

请注意,To:行区分大小写且对空间敏感(至少在冒号后必须有空格)。这是RFC-822定义的标头的标准符号(或其当前的化身)。当我尝试使用-s选项但没有Subject:行时,我的收件箱中收到了一条没有主题的邮件。

以下内容对您有用:

$ cat /home/me/Email_list.txt
To: My.email@company.com
Subject: Test email

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

注意空行!或者您可以在echo;之前使用普通echo "Test text";{ ... }表示法中需要分号。