【问题标题】:mailx sending email to multiple accountsmailx 向多个帐户发送电子邮件
【发布时间】:2019-11-13 16:59:42
【问题描述】:

我正在尝试使用 mailx 通过 shell 脚本发送电子邮件。

Message=<HTML><BODY><p>FINISHED</p></BODY></HTML>

Recipients=email1@email.org;email2@email.org
Recipients=$(echo "${Recipients}" | sed "s/;/ /g")
echo "Recipients:  ${Recipients}"

mailx -s "Ingestion Report ${EXT1}. $( echo "\nContent-Type: text/html")" "${Recipients}" < $MESSAGE

我的问题是我正在尝试将由分号分隔的列表更改为以空格分隔的列表,因为我被告知这是 mailx 所需要的。

但是,响应是:

sh: email2@email.org:  not found

我做错了什么?谢谢。

【问题讨论】:

  • 很多语法错误是因为引用不正确。您正在分散您对实际问题的注意力。

标签: bash shell ksh mailx


【解决方案1】:

分号是命令分隔符,因此您必须更改定义 Recipients 的方式:

Recipients=email1@email.org;email2@email.org

收件人:

Recipients="email1@email.org;email2@email.org"

引用该值可防止 ; 被解释为命令分隔符。

或者,您可以首先正确定义Recipients

Recipients="email1@email.org email2@email.org"

或者,如果您出于某种原因无法控制它,您可以放弃sed 调用并执行以下操作:

mailx ... ${Recipients/;/ }

【讨论】:

  • 但是,如果您的代码中的所有内容都需要空格分隔符,那您为什么还要把分号放在首位呢?
  • 因为我正在从数据库中提取电子邮件列表并通过参数将其注入代码中。那里的空间很糟糕。但我所做的是用逗号替换分号,一切都到位了。非常感谢!
猜你喜欢
  • 2016-02-22
  • 2012-03-24
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
相关资源
最近更新 更多