0

こんにちは、私は数日間この問題に頭を悩ませようとしてきましたが、ここでそれを失いつつあります。メッセージをジャーナリングしようとしています。 from およびその他の特別なヘッダーで、それを (添付ファイルとして) 別の電子メール内にラップし、DB に送信します。

私の質問の核心は、別の電子メールの中に電子メール (ヘッダー付き) をどのようにラップするかということです。最初の (内部の) 電子メールを最初にファイルに書き出し、それを MUTT を介して添付ファイルとして追加する必要がありますか? ファイルを作成せずに添付ファイルを作成できますか? 私はそれがどのように機能すると思うかのスタブを持っていますか?

#!/bin/bash
function assemble()
{
    declare -a argAry=("${!1}")
    echo -e "${argAry[@]}"  -- $2 |sed "s/^ *//;s/ *$//;s/ \{1,\}/ /g"
}

function generate()
{
  hname=`hostname`
  tai64=`date| tai64n |cut -c2-25`
  uuid4=`python  -c 'import uuid; print uuid.uuid4()'`

  # return variable as generated string
  echo "${hname}-${tai64}-${uuid4}'"
}

function send()
{

  attach='' # can't [] && || for some reason
  [ '1' == ${ARGS[0]} ] && attach="-e 'my_hdr"

  local hdrsTable=(
    "${attach} To:                     ${ARGS[1]}'\n"
    "${attach} From:                   ${ARGS[2]}'\n"

    "${attach} X-DOMAIN-SITE-URL:      ${ARGS[3]}'\n"
    "${attach} X-DOMAIN-MEDIA-TYPE:    ${ARGS[4]}\n"
    "${attach} X-DOMAIN-DIRECTION:     ${ARGS[5]}\n"
    "${attach} X-DOMAIN-CAPTURE-DATE:  `date`\n"
    "${attach} X-DOMAIN-POST-DATE:     `date`\n"
    "${attach} X-DOMAIN-UTID:          `generate`\n"
    `[ -a $FILE ] && echo -a $FILE`
  ) 

  if [ '0' == $ARGV[0] ]; then
    FILE="/tmp/$(basename $0).$$.tmp"
    assemble hdrsTable[@] >> "/tmp/${FILE}" # create the temporary file to hold stuff?
  else
    assemble hdrsTable[@] $1
  fi
}

ARGS=("0" "somelivename@domain.com" "someliveemail@domain.com" "www.google.com" "archiver" "out")
send 

ARGS=("0" "someforwarder@domain.com" "journaling@ash.domain.com" "www.google.com" "archiver" "out")
send 'root@domain.com'
4

1 に答える 1

1

基本的に、同封する電子メールを保持する「message/rfc822」部分を含む「multipart/mixed」電子メール メッセージを作成する必要があります。

inner_msg=$(cat - <<END_MSG
To: santa.clause@northpole.example.com
From: virginia@doubtful.invalid
Subject: do you exist

I am doubtful

Regards,
V.
END_MSG
)

次に、送信するメッセージを作成できます。

boundary="this is the boundary: $$-$(date +%s)"

msg=$(cat - << END_MSG
To: recipient@example.com
From: sender@example.com
Subject: I contain a message
Content-Type: multipart/mixed; boundary="$boundary"
Mime-Version: 1.0

This is a multipart message in MIME format.

--$boundary
Content-Type: text/plain; charset=ISO-8859-1

This is the body of the 'container' message.
The email attachment follows.

--$boundary
Content-Type message/rfc822
Content-Disposition: attachment; filename="attached_email.eml"

$inner_msg

--$boundary--
END_MSG
)

"$msg"選択したメカニズムを使用して送信できるようになりました。

echo "$msg" | sendmail -oi -t

(これはテストされておらず、バグがある可能性があります)

于 2013-10-21T17:33:36.447 に答える