我目前正在制作一个bash脚本,用于自己的娱乐和爬出我的朋友,这基本上只是一个带循环倒计时的ssmtp命令。
while true; do
echo "sending..."
sudo ssmtp user@domain.com -v < /home/apx/Desktop/email.txt
echo "mail sent."
date +"%m/%d/%Y %H:%M:%S $HOSTNAME"
echo "wait for cooldown..."
timecount(){
min=0
sec=5
while [ $min -ge 0 ]; do
while [ $sec -ge 0 ]; do
echo -ne "0$min:$sec\033[0K\r"
sec=$((sec-1))
sleep 1
done
sec=59
min=$((min-1))
done
}
timecount
done
我想学习一种方法,使用cat或其他东西打印包含电子邮件地址列表的文本文件的第一行,然后将输出通过管道传输到sed,这将编辑/etc/ssmtp/ssmtp.conf以便使用一个具有相同authpass的不同authuser,发送电子邮件,倒计时,并重复列表中的下一个电子邮件地址,直到它必须再次从顶部开始。
/etc/ssmtp/ssmtp.conf
root=postmaster
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=user@domain.com
AuthPass=password
#rewriteDomain=
hostname=apx
#FromLineOverride=YES
使用列表文本文件的输入&gt;编辑authuser值发送电子邮件&gt;倒计时&gt;在行
中重复下一个地址我对sed有基本的了解,但还不足以完成这项任务。我意识到我可能会让它变得比以前更加复杂,但是......任何有助于理解这一点的帮助都会非常感激。
答案 0 :(得分:0)
抱歉迟到的回复..好吧现在它运作良好现在你可以从许多电子邮件发送到一封电子邮件,请按照以下步骤操作:
首先,您需要为所有电子邮件提供不太安全的应用
在emailad.txt
中找到gmail上的此链接,然后turn on
https://www.google.com/settings/security/lesssecureapps
转到任何目录,例如/ home / apx / Desktop然后创建新文件夹,例如folder
此文件夹应包含:
`ssmtp.conf`(Note: ssmtp.conf found in `/etc/ssmtp/` directory), `email.txt`(message), `emailad.txt`(emails) then start type this script:
#!/bin/bash
y
变量
y=3
每封电子邮件的消息数量:
echo "No. Of Msgs For each Email :";read number_of_messages;
循环播放我们的电子邮件
for (( x=1; x<=y; x++ ));
do
获取emailad.txt
文件
emails=`echo $( cat emailad.txt | sed -n ''$x''p )`
print_emails=`echo "$emails"`
使用smtp
变量搜索ssmtp.conf.bak文件中的任何电子邮件地址
smtp=`grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" /home/apx/Desktop/folder/ssmtp.conf.bak`
然后将ssmtp.conf.bak
文件连接到sed
以搜索ssmtp.conf.bak
中的任何电子邮件地址,然后将其替换为我们在emailad.txt文件中找到的电子邮件
cat /home/apx/Desktop/folder/ssmtp.conf.bak | sed 's/'$smtp'/'$print_emails'/g' /home/apx/Desktop/folder/ssmtp.conf.bak > /etc/ssmtp/ssmtp.conf
for (( f=1; f<=number_of_messages; f++ ));
do
ssmtp user@domain.com < email.txt //email.txt which containes the message
sleep 5
done
done&
完整的脚本:
echo "No. Of Msgs For each Email :";read number_of_messages;
y=3
for (( x=1; x<=y; x++ ));
do
emails=`echo $( cat emailad.txt | sed -n ''$x''p )`
print_emails=`echo "$emails"`
smtp=`grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" ssmtp.conf.bak`
cat ssmtp.conf.bak | sed 's/'$smtp'/'$print_emails'/g' ssmtp.conf.bak > /etc/ssmtp/ssmtp.conf
for (( f=1; f<=number_of_messages; f++ ));
do
ssmtp user@domain.com < emails.txt
sleep 5
done
done&`