сценарий оболочки - отправка почты пользователям без раскрытия адресов электронной почты - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь отправить почту с помощью 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 (Primary reciepnt)

Ответы [ 3 ]

1 голос
/ 19 марта 2019

Стандартный способ отправки почты без получателей To: состоит в использовании группового синтаксиса с пустым списком адресов. Отображаемое имя группы может использоваться для предоставления фактическим получателям некоторой информации о том, кто еще мог получить сообщение.

Обычно используемый пример: undisclosed-recipients: ;

(не забывайте «заключать в кавычки» при использовании в командной строке)

0 голосов
/ 19 марта 2019

Если 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 игнорирует заголовки, когда вы указываете получателей в командной строке.

0 голосов
/ 19 марта 2019

mailx, видимо, не может обойтись без TO, вместо этого просто используйте mutt ...

Пример:

echo "My Message" | mutt -s "My Subject" -b addr1@domain.com -b addr2@domain.com -b addr3@domain.com
...