我有一个在postgres中运行查询的bash脚本,它输出到csv。我想添加到该脚本以使用mailx将.csv文件通过电子邮件发送到特定的电子邮件。
我遇到的问题是它不会通过电子邮件发送文件。我可以收到电子邮件,所以我知道mailx设置正确。我只是无法通过电子邮件将其作为附件发送。它还可以通过电子邮件发送电子邮件正文中的输出。
所以这是代码。
#!/bin/bash
NOWDATE=`date +%m-%d-%Y`
PGPASSWORD=password psql -w -h host -p 5432 -d database -U user -o /tmp/folder/file-$NOWDATE.csv <<EOF
Query is here
# remove the first 2 lines of the report as they are headers
sed -i '2d' /tmp/folder/file-$NOWDATE.csv
uuencode /tmp/folder/file-$NOWDATE.csv | mailx -s "Accounts No Credit Card Report for '$NOWDATE'" mail@gmail.com
我尝试过mailx部分:
uuencode /tmp/folder/file-$NOWDATE.csv /tmp/folder/file-$NOWDATE.csv | mailx -s "Accounts No Credit Card Report for '$NOWDATE'" mail@gmail.com
和
uuencode /tmp/folder/file-$NOWDATE.csv file-$NOWDATE.csv | mailx -s "Accounts No Credit Card Report for '$NOWDATE'" mail@gmail.com
所以我得到的问题是当我运行.sh文件时它会吐出这个错误。
uuencode: fopen-ing /tmp/folder/file-01-11-2011.csv: Unknown system error
答案 0 :(得分:2)
如果问题出在uuencode上......为什么你不能尝试mailx -a选项,它也可以将文件附加到邮件中。 请查看此link了解详情。
答案 1 :(得分:1)
NOWDATE=`date +%m-%d-%Y`
取决于您,但考虑使用ISO-8601格式,YYYY-MM-DD(%Y-%m-%d
)。除了其他优点之外,它排序很好。
# remove the first 2 lines of the report as they are headers
sed -i '2d' /tmp/folder/file-$NOWDATE.csv
这不会删除前两行,只删除第二行。将'2d'
更改为'1,2d'
(但请参见下文)。
请注意,这会修改文件。
uuencode /tmp/folder/file-$NOWDATE.csv | mailx [...]
如果uuencode
只有一个文件名,则从标准输入读取并将名称放入其输出中。您的以下文字“我已尝试使用mailx部分:”......表示您可能已经意识到这一点 - 但您没有向我们展示修复该问题的代码,而不是在代码段中。
您收到的错误消息:
uuencode: fopen-ing /tmp/folder/file-01-11-2011.csv: Unknown system error
如果文件不存在,不是通常会得到的内容。我不知道是什么原因导致“未知的系统错误”。
但这是另一种选择,(a)有点清洁恕我直言,(b)不需要uuencode
尝试读取文件:
#!/bin/bash
NOWDATE=`date +%m-%d-%Y` # but %Y-%d-%m is better
DIR=/tmp/folder
FILE=file-$NOWDATE.csv
RECIPIENT=user@example.com
PGPASSWORD=password psql -w -h host -p 5432 -d database -U user -o $DIR/$FILE <<EOF
... Query is here
EOF
tail -n +3 $DIR/$FILE | uuencode $FILE | \
mailx -s "Accounts No Credit Card Report for '$NOWDATE'" $RECIPIENT
答案 2 :(得分:0)
我有同样的问题。执行查询的bash脚本,保存csv文件并将其邮寄。就我而言,它给出了uuencode: fopen-ing /tmp/folder/file-01-11-2011.csv: Unknown system error
当我使用ksh shell执行脚本时,它完全正常,没有任何问题。像这样 - ksh script.sh
这只是另一个指针。如果uuencode给出错误,那么尝试使用ksh执行它;它可能对你有用。