bash脚本从阅读中发送电子邮件收件人。 txt文件

时间:2013-12-04 16:06:28

标签: bash email zip send

我创建了一个监视文件夹的bash脚本,当你复制文件时,它会自动发送到一个特定的地址。

现在假设文件命名如下:

red.zip green.zip

如何将文件发送到地址:

red.zip to red@gmail.com
green.zip to green@gmail.com

或者更好,你可以通过阅读电子邮件地址所在的txt文件来做到: 例子;

rosso.zip>用red@gmail.com red1 @gmail.com red2@gmail.com

读取文件red.txt

非常感谢

2 个答案:

答案 0 :(得分:1)

假设您可以实际安装mutt,您可以使用以下脚本作为开头:

#! /bin/bash

mail_body_file="mailbody.txt"
mail_address_file_extension=".txt"

for fullname in *.zip; do
    filename="${fullname%.*}"
    address_file=$filename$mail_address_file_extension
    if [ -f $address_file ] ; then
        echo "Address file found for ZIP $fullname"
        recipients=$(cat $address_file)
        echo "Sending mail to recipients $recipients..."      
        mutt -a $fullname -- -s "Attachment $fullname" "$recipients" < $mail_body_file
        sleep 10
        echo "Done."
    else
        echo "WARNING: no address file found for ZIP $fullname"
    fi
done

注意:

  • 邮件客户端mutt会将zip文件干净地附加为附件。 @KyleBanerjee:这与把东西放到邮件里不一样!
  • 邮件客户端mutt不应干扰邮件传输代理postfix。实际上,我认为mutt会调用sendmail的{​​{1}}兼容接口来实际发送邮件。
  • 该脚本当前假定所有内容都在当前目录中。
  • 如果当前目录中没有单个postfix文件,脚本将失败。
  • 您必须提供一个文件.zip作为邮件正文。
  • 您可能想要更改主题(请参阅mailbody.txt之后的参数-s)。
  • 地址文件必须包含以分号分隔的邮件地址列表,例如

    mutt

答案 1 :(得分:0)

编写快速shell脚本要容易得多:

for x in  `ls *.zip |sed "s/\.zip//"`

do
        mail $x@gmail.com < $x.zip
done