Tengo una tabla llamada estudiante en una base de datos mysql . Esta tabla tiene una columna llamada correo electrónico .

Uso el siguiente comando para enviar correos electrónicos a estudiantes específicos, identificados por pid :

$email=$(mysql --login-path=local --database=ccps -ss -e "select email from student where pid=132054");   
echo "This is sample mail" | mail -s "Test" $email

Quiero saber cómo enviar correos electrónicos a todos y cada uno de los estudiantes en la base de datos. Como no sé cómo usar el bucle en la columna correo electrónico .

Gracias.

0
Liston 5 abr. 2017 a las 23:10

2 respuestas

La mejor respuesta

La forma más directa en la que puedo pensar es:

for email in `mysql --login-path=local --database=ccps -ss -e "select email from student order by pid;"`
do
        echo "This is sample mail" | mail -s "Test" $email
done

Si no los ha encontrado antes, las comillas justo antes de mysql y al final del comando son las zurdas, no las comillas simples habituales. Como dice un comentario anterior, algo como PHP sería mejor / más fácil en la construcción de correos electrónicos más sofisticados.

0
Nick 6 abr. 2017 a las 12:53

Para jugar, algo como esto funcionaría para ti. Pero hay formas mucho mejores de hacer esto.

read -ra student_emails <<< $(mysql --login-path=local --database=ccps -ss \
                                     -e "select email from student order by pid;")
for email in ${student_emails[@]}
do
    echo "This is sample mail" | mail -s "Test" ${email[0]}
done
1
agc 6 abr. 2017 a las 12:28