2011-05-23 197 views
0

我在perl腳本中使用unix的mail命令。我指定郵件的'to','cc','subject'和'body'。我沒有指定發件人地址。從哪裏來的地址?請幫助unix的mail命令

+0

什麼是你的郵件工具?您可以編輯標題以修改發件人地址。 – 2011-05-23 16:05:34

回答

3

有用於處理電子郵件作爲daxim和大衛·w ^提便攜式庫,但如果你想速戰速決,如果你的mail命令使用bsd-mailx(因爲它在我的機器上)這個作品linux下...

#!/usr/bin/env perl 

$BODY = "Hello self"; 
$RECIPIENT = "destination\@email.local"; 
$FROM = "mike\@localhost"; 
$SUBJECT = "some subject here"; 
$CMD = qq(echo "$BODY" | mail -a "From: $FROM" -s $SUBJECT $RECIPIENT); 
exec($CMD); 

如果您對unix mail命令有更多疑問,請從shell提示符下嘗試man mail

+1

我無法看到upvote按鈕,因爲我的眼睛從所有的uc變量名稱開始流血..反正我只是點了某處;) – 2011-05-23 17:44:58

+0

@mugen,謝謝。你是什​​麼意思的UC變量名稱? – 2011-05-23 17:46:55

+0

它實際上是一個perl函數http://perldoc.perl.org/functions/uc.html – 2011-05-23 17:49:01

1

目前大多數系統的mail命令是Heirloom mailx。它聲稱與POSIX兼容,所以我在這裏給出的信息應該是對於任何行爲良好的mail命令都是好的。

From地址由設置:

  • [email protected]如通過適當的POSIX系統調用(見殼命令whoamidomainname -f爲以不同的方式來訪問它們)
  • 退回或由設置from環境變量
  • 或由-r命令行選項(將被棄用?)設置

必備Clippy:嗨!我看到你正試圖從發送郵件。您的意思是使用Email::Sender/Email::Simple而不是?

+0

邁克,我解開你的改變,因爲'-a'是附件。 – daxim 2011-05-23 19:10:53

+1

-1'mail -a'用於linux下的任意頭文件。 – 2011-05-23 19:15:28

+0

那麼,這種說法是錯誤的,請參閱[documentation](http://heirloom.sourceforge.net/mailx/mailx.1.html),並且我剛剛(在Linux上)驗證了'-a From: ...'給出錯誤信息'沒有這樣的文件或目錄「。我認爲你的downvote是不合理的。 – daxim 2011-05-23 19:22:20

1

請勿使用郵件命令行命令!使用Net::SMTP

mail命令甚至可能沒有在特定系統上配置,並且它不能在Windows上運行。同時,Net::SMTP是一個標準的Perl模塊,應該可用於所有系統。

以前從未使用過嗎?閱讀documentation並嘗試一下。這就是你學習的方式。

+0

我不認爲Net :: SMTP是一個好的建議。要求用戶熟悉衆多的Internet郵件RFC。[在我的答案](http://stackoverflow.com/q/6099796#6101474)中,我指出了一種解決方案,可以將枯燥且容易出錯的低級 – daxim 2011-05-23 19:48:10

+0

@daxim,也許我可以幫助OP找出相關的郵件RFC ......當它發生時,[Net :: SMTP附帶一個示例](http://perldoc.perl.org/Net/ SMTP.html#EXAMPLES)+1 David W – 2011-05-23 19:56:19