2011-05-23 179 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