Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Semplice script per mailserver

    Sto cercando di sviluppare uno script .sh che, sfruttando il programma sendemail in accoppiata con un elenco di email sotto forma di file .txt e il corpo del messaggio, sempre sotto forma di file.txt invii in automatico una newsletter ai clienti della mia società.

    Dunque le azioni da eseguire sono queste :

    1_Leggi la prima riga del documento "ElencoMail.txt" e inseriscila come destinatario all'interno del comando ( dopo l'opzione -t )
    sendemail -f andrea.miocognome@miasocietà.com -t DESTINATARIO (L'INDIRIZZO SARA' INSERITO QUI) -u Company Presentation B -s smtpout.secureserver.net -xu andrea.miocognome@miasocieta.com -xp ******** -o message-file=/home/andrea/Documenti/Officia/send/mail.txt


    2_Cancella la prima riga del documento txt (in questo modo quella che prima era la seconda riga diventa ora la prima e posso avviare un loop)

    3_Se non c'e' piu nessuna email nel documento di testo ---->
    <echo> Ho finito!

    Altrimenti torna al punto 1

    Ho le idee chiare ma non so come metterle in pratica visto che sono piuttosto nuovo nell'ambiente linux... HELP ME!

  2. #2
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    togli dalla testa l'idea di leggere una riga e poi cancellarla

    piu' semplicemente realizza un ciclo che legge dalla prima riga all'ultima, una riga per volta.
    ciascuna riga corrisponde ad un indirizzo

    per fare i test, invece di invocare sendmail, invoca un "echo <mail>"
    butta giu' qualcosa e se hai problemi, replica.
    slack? smack!

  3. #3
    per prendere le singole email dal file .txt, fai un ciclo for del tipo

    for i in `cat mail.txt` ecc. ecc.
    "L'utopia è come l'orizzonte: cammino due passi, e si allontana di due passi. Cammino di dieci passi, e si allontana di dieci passi. E allora, a cosa serve l'utopia? A questo: serve per continuare a camminare."
    Eduardo Galeano
    Il mio sito
    "if you want people to RTFM, make a better FM!"

  4. #4
    Originariamente inviato da cacao74
    togli dalla testa l'idea di leggere una riga e poi cancellarla

    piu' semplicemente realizza un ciclo che legge dalla prima riga all'ultima, una riga per volta.
    ciascuna riga corrisponde ad un indirizzo

    per fare i test, invece di invocare sendmail, invoca un "echo <mail>"
    butta giu' qualcosa e se hai problemi, replica.
    Infatti la mia situazione è proprio questa:

    Nella cartella dello script mi trovo con 3 file: lo script stesso, il corpo del messaggio e la lista delle mail (disposte una per riga).
    Come tu hai suggerito, la cosa migliore è quella di far leggere una riga per volta, (aggiungo io) assegnare il testo estratto ad una variabile ed eseguire il comando per inviare le email (sia esso sendmail o echo <mail> ma non è questo il problema) con $variabile al posto del destinatario.

    Il mio problema è che di scripting non so praticamente nulla, ne capisco la logica ma non so assolutamente come metterla in pratica.

    Insomma per farla breve come faccio a far leggere un file e salvare il contenuto della riga che sta leggendo in una variabile?
    E (per me difficilissimo) come faccio a specificare che, di volta in volta, lo script debba leggere la riga successiva senza stare a scrivere a mano "leggi riga uno copia e invia, leggi riga due copia e invia, leggi riga tre"....fino alla fine del file?
    Credo che a riguardo psycopear abbia dato già qualche spunto ma troppo generico per me insesperto.

    per prendere le singole email dal file .txt, fai un ciclo for del tipo

    for i in `cat mail.txt` ecc. ecc.
    (ho un centinaio di indirizzi e il numero varia di mese in mese, non posso ogni volta modificare lo script!)

  5. #5
    Aaaaaallora, innanzitutto, ti consiglio di leggerti una guida bash per capire come funziona lo scripting, perchè non è niente di difficilissimo, tiè, ti do un link intanto

    http://www.pluto.it/files/ildp/guide/abs/index.html

    Questa è sicuramente la migliore.

    Per quanto riguarda il tuo script, la linea che ti ho suggerito serve esattamente a fare ciò che hai chiesto, ti spiego

    for i in `cat mail.txt`;
    do
    echo "Ho inviato una mail a $i"
    done

    Traducendo, Per ogni riga nel file "mail.txt", fai apparire il messaggio <mail>. Praticamente quella i è la variabile, che cambia per ogni riga del file, ovvero, prima la i è la prima mail del file, quando lo script ha eseguito i comandi fra il do e il done, li rifà nuovamente ogni volta, solo che la i diventa di volta in volta la mail successiva. Mi sono spiegato?
    "L'utopia è come l'orizzonte: cammino due passi, e si allontana di due passi. Cammino di dieci passi, e si allontana di dieci passi. E allora, a cosa serve l'utopia? A questo: serve per continuare a camminare."
    Eduardo Galeano
    Il mio sito
    "if you want people to RTFM, make a better FM!"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.