我正在尝试使用Shell脚本中的mailx向用户发送邮件,而不会透露电子邮件地址。
这是我的代码-
query1=$(sqlplus -s ${ORA_UID_PSWD} << 'EOF'
set heading OFF
SELECT cu.cntct_email
FROM cm_user cu, cm_usertype ct
WHERE trunc(cu.xprtn_dt) = trunc(sysdate) - 60
AND cu.cm_user_id=ct.cm_user_id
AND ct.user_type = 'E'
AND cu.cntct_email is not null;
EOF
)
user_list1=$(echo "$query1" | tr '\n' ',' | sed 's:^.\(.*\).$:\1:')
echo $user_list1
echo -e "Hi,\nFYI.. Your password is expired 60 days ago. Please login and get it reset.\n\nThanks" |mailx -s "Password expired" -b $user_list1
我尝试使用-b
选项(BCC),但是由于-
未指定主要收件人的情况下发送选项。
用法:
mailx -eiIUdEFntBDNHRV~ -T FILE -u USER -h hops -r address -s SUBJECT -a FILE -q FILE
-f FILE -A ACCOUNT -b USERS -c USERS -S OPTION users
任何人都知道如何在不使用To(主要收据)的情况下发送邮件
答案 0 :(得分:1)
没有任何“收件人”的情况下发送邮件的标准方法是使用group syntax和一个空地址列表。该组的显示名称可用于向实际收件人提供一些有关可能还会收到该邮件的人的信息。
一个常用的例子是:b = np.ones((2, 3, 4))
b.shape # >> (2, 3, 4)
b[1:2,:,:].shape # >> (1, 3, 4)
b[:, 2:3, :].shape . # >> (2, 1, 4)
(在命令行上使用时,请记住将其“引用”)
答案 1 :(得分:0)
mailx显然离不开TO,而只是使用mutt ...
示例:
echo "My Message" | mutt -s "My Subject" -b addr1@domain.com -b addr2@domain.com -b addr3@domain.com
答案 2 :(得分:0)
如果mailx
不能满足您的要求,您可以直接与sendmail
交谈。
# Speculative; see below
PATH=/usr/libexec:$PATH
query1=$(sqlplus -s "$ORA_UID_PSWD" << 'EOF'
set heading OFF
SELECT cu.cntct_email
FROM cm_user cu, cm_usertype ct
WHERE trunc(cu.xprtn_dt) = trunc(sysdate) - 60
AND cu.cm_user_id=ct.cm_user_id
AND ct.user_type = 'E'
AND cu.cntct_email is not null;
EOF
)
# no need for further normalization of $query1 actually
sendmail -oi $query1 <<'EOF'
Subject: Password expired
To: undisclosed-recipients:;
Hi,
FYI... Your password has expired 60 days ago.
Please login and get it reset.
Thanks
EOF
如果sendmail
不在您的PATH
中,则可能会更新您的PATH
(也许只是在此脚本中)。常见位置包括/usr/sbin
,/usr/libexec
等;但是,如果这些方法没有帮助,请查阅您平台的文档,以获得更好的猜测。
不需要显式的Bcc:
头;实际上,当您在命令行上指定收件人时,Sendmail会忽略标头。