linux - 如何从 Linux 中的文件向用户发送具有特定模板的邮件(模板包含文件中的信息)?

标签 linux email file shell awk

基本上,我必须从文件中获取姓氏、姓氏、用户名和成绩,然后我必须向该用户(“用户名”)发送一封电子邮件,内容如下所示:

"Dear 'surname' 'lastname'!
Your grade on the 'class name' exam was 'grade'."

“类名”通过 shell 的参数列表给出,其余信息在该文件中。

于是我一步步走了过去。先用awk打印出想要的布局

awk '{print  "Dear",$1,$2 "!","\nYour grade on the '$class' exam was ",$4;}' in.txt

工作正常。然后我测试了我的邮件是否有效并且确实有效:

$ mail -s 'Subj' bando < /tmp/msg.txt

所以我需要将输出写入文本文件,以便将其发送给特定用户。

这就是我的问题所在。我尝试了几个版本,尝试将我的字符串打印到一个文件中,但它有问题,我不知道是什么。与 echo 和 cat 相同。尝试将其切成小块,但仍然一无所获。

最佳答案

试试这个 awk 命令来读取 in.txt 并发送电子邮件:

class='9th'
awk '{msg="Dear " $1 " " $2 "!,\nYour grade on the '$class' exam was " $4; system("echo \"" msg "\" | mail -s 'Subj' " $3);}' in.txt

你在哪里in.txt文件看起来像这样:

cat in.txt
Lname Fname foobar@example.com 7.6

解释:

awk 命令将 in.txt 文件解析为 $1、$2、$3、$4 占位符。

然后它将邮件消息格式化为一个变量 msg .

最后调用系统函数执行echo "<msg>" | mail -s 'Subj' $3回显 msg 变量并将其通过管道发送到邮件命令以发送它。那里需要反斜杠来用双引号将 msg 变量括起来。

关于linux - 如何从 Linux 中的文件向用户发送具有特定模板的邮件(模板包含文件中的信息)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5626962/

相关文章:

linux - 模拟 USB 设备以实现自动化

c++ - 如何在 C++ 中将回调函数指针传递给 epoll_event 结构

php - 使用 SwiftMailer 发送电子邮件时 GMail 用户名和密码未被接受错误

regex - 为什么 -name 可以工作,但我无法在 Mac 终端中使用 -regex?

c++ - 在 linux 中使用两个进程读取文件?

java - 如何让 Talend 进程正确捕获 SIGINT?

linux - 获取 "source"编辑脚本的位置

javascript - Facebook 登录中电子邮件的未定义值

javascript - 由于先前的 Promise 已解决,因此未调用 Promise

c++ - c++写文件的问题