0

Cコード内から受信者のリストにmailx経由でメッセージを送信したいと考えています。

「メッセージ」変数の内容を含むメールを、ファイル /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" 

テキストを送信する前にファイルに書き込むことはできますが、それは非効率的です。

考え?

4

1 に答える 1

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";。表記にはセミコロンが必要です{ ... }

于 2014-06-13T19:07:30.643 に答える