0

sendEmail(CentOSシェル)スクリプトを使用して電子メールを送信するスクリプトがあります。

sendEmail -vvv -u "TestCompany, Inc.: USB Added" -f user@domain.com -t To@domain.com -s ASPMX.L.GOOGLE.com -m "USB Activity" -o tls=aut
o username=user3@domain.com password=password

これまでのところ、これは正常に機能します。

次に、次のようにConfigFileを作成します。

Company=TestCompany, Inc.
FromEmail=user@domain.com
Password=password
ToEmail=To@domain.com
Smtp=ASPMX.L.GOOGLE.com

そして今、私は次のようにスクリプトを変更します:

#!/bin/sh
i=1;
while IFS="=" read VAR VALUE
do
        VAR="${VAR// }"
        Values[$i]=${VALUE}
        let i++;
done <  ConfigFile

sendEmail -vvv -u "${Values[1]}: USB Added" -f ${Values[2]} -t ${Values[4]} -s ${Values[5]} -m "Test Email" -o tls=auto username=${Values[2
]} password=${Values[3]}

次のエラーが発生します:

'25 failed: IO::Socket::INET: Bad hostname 'ASPMX.L.GOOGLE.comempt to ASPMX.L.GOOGLE.com
Apr 21 12:11:35 box2 sendEmail[26378]: HINT => Try specifying a different mail relay with the -s option.

今、私はなぜこのエラーが発生するのか理解できません。値をエコーし​​ようとしても、正しい値が表示されます。それなら私が間違っているところ。助けてください。ありがとう。

4

1 に答える 1

2

ログメッセージの行の先頭に浮かんだ一重引用符に注意してください。あなたのデータファイルはおそらく\r\nその改行のために持っていますが、それはUnixではあまりうまく機能しません。キャリッジリターンは、ホスト名の一部として読み取られています。その上で実行dos2unixします。

于 2012-04-21T23:17:15.550 に答える