使用 CSV 文件发送邮件

使用 CSV 文件发送邮件

我在 Linux 主机上有一个 CSV 文件,它有两列,以逗号分隔:第一列是电子邮件地址,第二列是公司电子邮件地址。第二列(公司电子邮件)可以是一个或多个公司电子邮件。

root@esm-pauth1#catowners_and_corps.csv`

[电子邮件保护],操作系统
[电子邮件保护],金融中心
[电子邮件保护],Cateringlc,RamHealth,fordhamfood
[电子邮件保护]、健康研究、记忆健康、心理身份、睡眠研究、yddc

我如何使用awksed任何类似的命令向第一列中的用户发送电子邮件,并通知他们第二列(或可能是第 2 至第 n 列)上的公司电子邮件,具体取决于所有者拥有多少个公司电子邮件。请记住,文件@fordham.edu末尾没有公司电子邮件

即发送邮件[email protected]通知她公司邮箱[email protected]

即)发送邮件[email protected]通知他公司的电子邮件 [email protected],,[email protected][email protected]

答案1

你想要的是

cat owners_corps.csv | awk -F, '{print "To: "$1;$1=""; print "Corp mails: "$0}'

您提到公司地址不会有 @fordham.edu 地址,但上面的地址有,但我不确定这是否只是格式错误。您可以使用类似以下内容,

#!/bin/bash
while read line; do
    #Get the email from the first column
    email_to=$(echo $line|cut -d, -f1)
    #Get the list of corp emails from the second column until end,   strip white space,  add @fordham.edu to the last entry (Won't have comma) then add @fordham.edu to all others 
    corp_emails=$(echo $line |cut -d, -f2-|sed 's/\s//g; s/$/@fordham.edu/g; s/,/@fordham.edu,/g')
    echo "To: $email_to :: list of corp addresses: $corp_emails"
    #echo "List of corp addresses $corp_emails" | mail -s "Corp Address List" $email_to
done < owners_corps.csv

循环文件并将 @fordham.edu 添加到所有公司地址。它将回显默认发送的内容,但我还提供了一个注释掉的示例电子邮件管道,如果你想直接将其发送到邮件。

相关内容