如何设置来自电子邮件地址,用于mailx的命令?
题
我工作的一个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/253139 和 https://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