#!/bin/sh
#
# Test the behavior of post with multiple recipients and the use of Bcc:
#

set -e

if test -z "${MH_OBJ_DIR}"; then
    srcdir=`dirname "$0"`/../..
    MH_OBJ_DIR=`cd "$srcdir" && pwd`; export MH_OBJ_DIR
fi

. "${srcdir}/test/post/test-post-common.sh"

#
# Bcc test.
#
# It's worth pointing out here what's going on the SMTP protocol.
#
# If there are both sighted and unsighted addresses in the address list,
# post calls verify_all_addresses() which results in ALL recipient
# addresses being attempted, then the SMTP connection is reset, then
# both the sighted and unsigned messages are sent (in different SMTP
# transactions).  Apparantly post has always done it this way.
#

cat > "${MH_TEST_DIR}/Mail/draft" <<EOF
From: Mr Nobody <nobody@example.com>
To: Somebody One <somebody1@example.com>,
    Somebody Two <somebody2@example.com>
Subject: Test Bcc
Bcc: Somebody Three <somebody3@example.com>,
     Somebody Four <somebody4@example.com>

This is test of Bcc recipients.
EOF

cat > "${testname}.expected" <<EOF
EHLO nosuchhost.example.com
MAIL FROM:<nobody@example.com>
RCPT TO:<somebody1@example.com>
RCPT TO:<somebody2@example.com>
RCPT TO:<somebody3@example.com>
RCPT TO:<somebody4@example.com>
RSET
MAIL FROM:<nobody@example.com>
RCPT TO:<somebody1@example.com>
RCPT TO:<somebody2@example.com>
DATA
From: Mr Nobody <nobody@example.com>
To: Somebody One <somebody1@example.com>,
    Somebody Two <somebody2@example.com>
Subject: Test Bcc
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Date:

This is test of Bcc recipients.
.
RSET
MAIL FROM:<nobody@example.com>
RCPT TO:<somebody3@example.com>
RCPT TO:<somebody4@example.com>
DATA
From: Mr Nobody <nobody@example.com>
Date:
Subject: Test Bcc
BCC:

------- Blind-Carbon-Copy

From: Mr Nobody <nobody@example.com>
To: Somebody One <somebody1@example.com>,
    Somebody Two <somebody2@example.com>
Subject: Test Bcc
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Date:

This is test of Bcc recipients.

------- End of Blind-Carbon-Copy
.
QUIT
EOF

test_post "${testname}.actual" "${testname}.expected"

exit ${failed:-0}
