我工作的一个KornShell(股)的脚本上运行的一个Solaris的服务器会发出电子邮件的时候和错误的条件得到满足。我发送的电子邮件通过 mailx.

问题: 我该如何设定"发件人"电子邮件上的地址 mailx 命令?

目前码:

echo ${msg_txt} | mailx -s "Script Failure" ${to_email}

注:该命令正常工作,然而,"从"是用户的名称我的剧本,我想对于这个到另一个电子邮件地址。

我怎么完成这个吗?

有帮助吗?

解决方案

可以使用“-R”选项来设置发件人地址:

mailx -r me@example.com -s ...

其他提示

在“-r”选项是对我的系统无效。我不得不使用不同的语法的“发件人”字段。

-a "From: Foo Bar <foo.bar@someplace.com>"

如果您还希望包括您的真实姓名在从场中,可以使用以下格式

mailx -r "me@example.com (My Name)" -s "My Subject" ...

如果你碰巧有非ASCII字符在你的名字,像我AEÆoeøaaå (AE = C3 86,O = C3 B8,A = C3 A5),必须对其进行编码这样的:

mailx -r "me@example.com (My =?utf-8?Q?AE=C3=86oe=C3=B8aa=C3=A5?=)" -s "My Subject" ...

希望这能救一个人努力工作/研究的一个小时!

在其中bsd-mailx默认安装的Debian中,-r选项不起作用。但是你可以用mailx -s subject recipient@abc.com -- -f sender@abc.com代替。根据手册页,你可以--后指定sendmail的选项。

在包nail提供类似的接口的增强的mailx。它包括-r选项。

在CentOS 5的安装包mailx给你一个称为mail程序,它不支持mailx选项。

刚刚遇到这种语法问题上的某台7机。

在一个非常古老的Ubuntu机运行 mail, 语法用于一个很好的组成电子邮件

echo -e "$body" | mail -s "$subject" -a "From: Sender Name <$sender>" "$recipient"

然而在某台7箱来了 mailx 安装,这是完全不同的:

echo -e "$body" | mail -s "$subject" -S "from=Sender Name <$sender>" "$recipient"

咨询 man mail 指示 -r 是废弃和"从"发件人的地址,现在应该是直接设置使用 -S "variable=value".

在这些和随后的实例,我确定 $sender 作为 "Sender Name <sender.address@domain.tld>"$recipients 作为 "recipient.name@domain.tld" 正如我在我砸向脚本。

然后,您可以找到,因为我没有,这当你试图产生的电子邮件的主体内容在你的脚在发送电子邮件,你收到一个奇怪的行为在电子邮件主体,而不是附加作为二进制文件("ATT00001.站","application/octet-stream"或"考虑hotel el-paso",取决于客户)。

这种行为是如何传家宝mailx处理未确认/控制人物在文本输入。(更多的信息: https://access.redhat.com/solutions/1136493, ,其本身引用mailx人页的解决办法。)

为了解决这个问题,我使用一种方法,该方法的管道所产生的输出通过 tr 前路过来 mail, ,还指定了编码的电子邮件:

echo -e "$body" | tr -d \\r | mail -s "$subject" -S "from=$sender" -S "sendcharsets=utf-8,iso-8859-1" "$recipients"

在我的剧本,我还明确地delaring的区域事先为它的运行为定时任务(和cron不继承的环境变量):

LANG="en_GB.UTF8" ; export LANG ;

(替代方法的设定选为cronjobs 是在这里讨论)

更多的信息,这些解决方法通过 https://stackoverflow.com/a/29826988/253139https://stackoverflow.com/a/3120227/253139.

在MACOS塞拉利昂,与SMTP设置创建〜/ .mailrc中并达到目的:

set smtp-use-starttls
set smtp=smtp://smtp.gmail.com:587
set smtp-auth=login
set smtp-auth-user=youremail@gmail.com
set smtp-auth-password=yourpass

然后从CLI发送邮件:

echo "your message" | mail -s "your subject" to_email@gmail.com

在Ubuntu的仿生18.04,这工作根据需要:

$ echo -e "testing email via yourisp.com from command line\n\nsent on: $(date)" | mailx --append='FROM:Foghorn Leghorn <fleghorn@yourisp.com>' -s "test cli email $(date)" -- recipient@acme.com

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top