mancato invio mail registrazione da file csv (importazione utenti)

mancato invio mail registrazione da file csv (importazione utenti)

di patrizia bruno -
Numero di risposte: 15

Salve a tutti,

come consigliato apro un nuovo argomento. problema: importazione utenti tramite file .csv (versione moodle 3.8stable)

caricato il file, il sistema non recapita agli indirizzi email riportati in tabella, la mail di registrazione con i dati di accesso (premetto che l'iscrizione manuale da UTENTI>NUOVO UTENTE funziona, crea account da home page funziona).

ho fatto verificare dal mio host, la correttezza della riga di comando del cronjob (wget -q -O /dev/null http://www.miosito.it/moodle/admin/cron.php) che gira ogni minuto */1 e le impostazioni di configurazione della mail in uscita e in entrata. (tutto ok, invio e ricevo. inoltre se utilizzo le azioni di massa, es. invia messaggio, questo arriva agli utenti, suppongo quindi che le impostazioni siano corrette). allora mi chiedo, dove è l'errore?

ho controllato anche le impostazioni da elaborazioni pianificate, magari è li l'errore? vi allego le immagini. vi allego anche il responso del cron, lanciato da web con http://miodominio.it/moodle/admin/cron.php?password=xxxxxxxxxxxx

però mi sembra che giri e i log non danno errori. quindi davvero non capisco e ci sto uscendo pazza.

inoltre da notifiche, mi riporta sempre : The time between the last two runs of the cron maintenance script was over 200 seconds. We recommend configuring it to run more frequently. 

da un post che ho letto (https://moodle.org/mod/forum/discuss.php?d=320113) deduco che ci sia qualcosa che ci mette più di 200secondi a completare il processo. può essere questo il problema? 

inoltre non ricevo neanche le mail di raccolta giornaliera. anche qui, una volta funzionano e venti no. credo sia tutto collegato, o forse no?

grazie per chi mi aiuta


Media dei voti:  -
In riposta a patrizia bruno

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di cosimo schiri -

Ciao Patrizia purtroppo non posso aiutarti ma, ne approfitto per chiederti se puoi postare l foglio csv dove poter caricare gli studenti visto che vorrei anche io caricare c.a. 60 tudenti e non mi va di caricarli uno ad uno.

Inoltre, gentilmente, vorrei sapere come riuscire a capire esattamente il nome del corso (il campo esatto) affinchè una volta caricati possa ritrovarli già iscritti nel mio corso.

Grazie a tutti e buon fine settimana

Cosimo

In riposta a cosimo schiri

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di Matteo Scaramuccia -

Ciao Cosimo,
hai provato a leggere la documentazione ufficiale in https://docs.moodle.org/38/en/Upload_users#File_formats_for_upload_users_file e, se usi la 3.8, in https://docs.moodle.org/38/en/Upload_users#Valid_upload_file_for_testing ?

HTH,
Matteo

P.S.: Suggerimento: siccome ho chiesto io a Patrizia di aprire un nuovo thread tutto dedicato al suo problema, sarebbe meglio non "distrarlo" con altre domande diciamo fuori del contesto specifico - il famoso Off Topic (OT) - per cui in futuro secondo me sarebbe meglio in un caso simile aprire un nuovo thread dedicato e richiamarlo qui con un post indicando la sola URL così che Patrizia possa eventualmente risponderti nel thread dedicato alla tua domanda specifica.
Questo perchè?
Perché ahimè non vedo già utilizzata la funzione di ricerca nella Community e se produciamo thread che parlano di "tutto" (magari tranne l'argomento principale relativo al primo post del thread) non aiutiamo comunque i pochi che provano ad usare la funzionalità di ricerca ammiccante.
Senza contare poi lo sforzo di chi prova a dare una risposta che si trova a dover cercare di rispondere a cose diverse nello stesso contesto.

In riposta a patrizia bruno

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di Matteo Scaramuccia -

Ciao Patrizia,

The time between the last two runs of the cron maintenance script was over 200 seconds. We recommend configuring it to run more frequently.

come ho raccontato nel thread citato, questo messaggio Moodle lo fa vedere come raccomandazione: il "cron di Moodle" dovrebbe essere invocato ogni minuto, indipendentemente dal tempo richiesto ad un "richiamo" per finire il suo lavoro.
Semplificando molto: ad ogni lancio del "cron" vengono eseguite attivate in Moodle che potenzialmente ci metto anche tanto tempo ed al prossimo lancio di "cron" se ci sono attività ancora in corso, queste verranno lasciate terminare e nei log comparirà la parola delayed.

Come lanci il "cron di Moodle" per la tua istanza?
Nel frattempo, mi leggerò con attenzione tutti i log che hai allegati per vedere se scorgo traccie del tuo problema: la cosa "complessa" è che forse non basteranno i log di un solo giro di cron.
Manca il debug del cron, non puoi lanciare il cron da linea di comando ma solo da web?

HTH,
Matteo

In riposta a Matteo Scaramuccia

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di patrizia bruno -
Ciao Matteo,
il problema e che lo so fare solo da web, ho provato a capire come fare da linea di comando ma non ho idea di dove mettere le mani quando mi dici da linea di comando.
per ora ho capito che il file cron.php si trova nel percorso moodle/admin/cli/cron.php. quindi apro filezilla, accedo al server, mi trovo il file cron.php. Ho scaricato un programmino notepad++ che mi permette di leggere i file php e volendo posso modificarne il contenuto.
io mi fermo qui, se mi dici esattamente i passaggi lo faccio, cerco di lanciare il cro da cli.
Scusami ma sono proprio indietro di programmazione, informatica è l'unico esame che ho dato un paio di volte all'università. non so se può essere utile io utilizzo windows, non linux
Intanto grazie
In riposta a patrizia bruno

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di Matteo Scaramuccia -

Ciao Patrizia,

Scusami ma sono proprio indietro di programmazione

ci mancherebbe, non devi scusarti approvo!
Il problema è capire quali strumenti hai a disposizione per ricavare le informazioni potenzialmente utili a capire dove sia veramente il tuo problema (quasi certamente una configurazione, a trovarla però): devi vedere se nel tuo Pannello di Controllo hai la possibilità di aprire una funzionalità di "Terminale" o di "Shell" un po' come se dal tuo PC Windows aprissi il "Prompt del DOS".

Io posso solo commentare probabilmente "inutilmente" che gli spazi PHP condivisi offerti da alcuni Provider saranno si economici ma si rivelano spesso inadeguati alla gestione spicciola che può capitare su Moodle: non è infatti pensabile che non sia possibile lanciare il cron ogni minuto e si sia obbligati a passare solamente da una HTTP GET.

HTH,
Matteo

In riposta a patrizia bruno

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di Matteo Scaramuccia -

Ciao Patrizia,
mi sono letto una esecuzione del cron, quella che hai allegata, in particolare queste righe:

Execute scheduled task: Invio mail dai forum e operazioni di manutenzione (mod_forum\task\cron_task)
... started 19:06:56. Current memory use 34.1MB.
Removing old digest records from 7 days ago.
Removed all old digest records.
Fetching unmailed posts.
  No posts found.
... used 2 dbqueries
... used 0.0017898082733154 seconds
Scheduled task complete: Invio mail dai forum e operazioni di manutenzione (mod_forum\task\cron_task)

da cui si desume che Moodle ha elaborato correttamente l'inivio delle email dal forum ma non ha trovato nulla da spedire o da inviare come digest.
Le notifiche del forum arrivano regolarmente?

Puoi verificare che l'invio di email funzioni effettivamente con il test integrato dalla 3.7, https://docs.moodle.org/37/en/Mail_configuration#Test_outgoing_mail_configuration, ovvero usando il plug-in https://moodle.org/plugins/local_mailtest?
Partiamo dalle basi verificando che Moodle possa inviare email. Mi puoi anche ricordare che versione di Moodle usi?

HTH,
Matteo

In riposta a Matteo Scaramuccia

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di patrizia bruno -
ciao Matteo, 
in merito al prompt del dos, l'ho trovato e ti allego immagine. se mi dici cosa scriverci lo faccio. tieni a mente che il moodle (Versione in uso: 3.8.2+ (Build: 20200327)) è caricato su un server al quale accedo con filezilla.
l'host mi ha garantito che il cron gira ogni minuto, gli ho fatto controllare le impostazioni del cronjob e la configurazione mail sul moodle.
Per il resto ho fatto così:
ore 00.59 19/4 da amministrazione sito> notifiche il sistema mi segnala che il cron non gira da 24 ore.
ho installato il plugin che mi hai consigliato (mail test) ed ho effettuato la prova. esito positivo. ti riporto l'immagine.
la mail di raccolta dei messaggi nel forum è impostata alle 2 del mattino. quindi ho scritto un paio di messaggi nei forum sia dall'account amministratore che da 2 account studenti, così da poter vedere se alle 2 riceverò le mail e il run. intanto, dopo aver lasciato i messaggi nei forumo, ho lanciato il cron da web e mi riporta la stessa stringa che mi hai evidenziato tu (riporto sotto). 
che dipenda dal fatto che devono partire alle 2 del mattino? cmq, domani mattina rifarò la prova di lanciare il cron e integrerò la mia risposta con l'esito. quello che ora mi lascia perplessa è: perché il sistema mi segnalava che il cron.php non girava da 24 ore. sono sempre più confusa. grazie.
notte
patrizia

Execute scheduled task: Invio mail dai forum e operazioni di manutenzione (mod_forum\task\cron_task)
... started 00:57:30. Current memory use 44.2MB.
Removing old digest records from 7 days ago.
Removed all old digest records.
Fetching unmailed posts.
No posts found.
... used 2 dbqueries
... used 0.0022158622741699 seconds
Scheduled task complete: Invio mail dai forum e operazioni di manutenzione (mod_forum\task\cron_task)




In riposta a patrizia bruno

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di Matteo Scaramuccia -

Ciao Patrizia,

in merito al prompt del dos

Intendevo dire una altra cosa ammiccante: il terminale di un Sistema Operativo è quella cosa che ti permette di lanciare comandi informativi/esecutivi quindi stavo esemplificando che per il tuo PC quella cosa si chiama "Prompt del DOS" (esiste anche Power Shell ma poi ti confondo ancora di più).
Esiste la stessa cosa per lo spazio server su cui ospiti la tua istanza Moodle?
Chiedilo direttamente all'Assistenza perché al di là dei "limiti" della tua competenza è lecito chiedere se tu possa avere un acceso di tipo "terminale" per eseguire dei comandi di controllo sulla tua istanza Moodle - SSH o Web Terminal.

l'host mi ha garantito che il cron gira ogni minuto, gli ho fatto controllare le impostazioni del cronjob e la configurazione mail sul moodle.
Per il resto ho fatto così:
ore 00.59 19/4 da amministrazione sito> notifiche il sistema mi segnala che il cron non gira da 24 ore.

Francamente, uno dei due "mente" ammiccante: in questo caso Moodle non è quello che mente.
Qualunque cosa stia girando ogni minuto NON attiva le schedulazioni del cron di Moodle il che vuol dire che se ci fossero state delle attività da svolgere Moodle non le sta facendo da almeno 24 ore - per ogni esecuzione ne viene registrato il giorno e l'ora ed è con questa informazione che lui ti può dire che non sta girando nulla da almeno 24h.
Chiedilo direttamente all'Assistenza cosa abbiano controllato, così da capire se state guardando/parlando la stessa cosa.

che dipenda dal fatto che devono partire alle 2 del mattino?

Certamente! Ma non è un tuo errore di scelta dell'orario; se il cron di Moodle girasse veramente ogni minuto, poco dopo le 2am il cron farebbe partire il processamento delle email da inviare.

HTH,
Matteo

In riposta a Matteo Scaramuccia

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di patrizia bruno -
Ciao Matteo ho scritto all'host chiedendo quello che mi hai suggerito. Intanto ho lanciato il cron da web è questa volta mi ha riconosciuto dei messaggi nel forum ma della mail di raccolta neanche l'ombra.
Appena mi rispondono quelli dell'assistenza integro. Ho acquistato lo spazio web su host.it.
Intanto grazie mille
Execute scheduled task: Invio mail dai forum e operazioni di manutenzione (mod_forum\task\cron_task)
... started 11:50:52. Current memory use 23.3MB.
Removing old digest records from 7 days ago.
Removed all old digest records.
Fetching unmailed posts.
Done
Processing post information
Processed 3 posts
Filling caches
Filling course cache
Done
Filling forum cache
Done
Filling discussion cache
Done
Filling user subscription cache
Done
Filling digest cache
Done
All caches filled
Queueing user tasks.
Processing 4 users
Queued 1 digests and 0 messages for 2
Queued 1 digests and 0 messages for 3
Queued 1 digests and 0 messages for 62
Queued 1 digests and 0 messages for 24
Queued 4 digests, and 0 individual tasks for 0 post mails. Unique users: 4 (0 ignored)
All tasks queued.
... used 48 dbqueries
... used 0.062371969223022 seconds
Scheduled task complete: Invio mail dai forum e operazioni di manutenzione (mod_forum\task\cron_task)
In riposta a patrizia bruno

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di Matteo Scaramuccia -

Ciao Patrizia,
bene!

ma della mail di raccolta neanche l'ombra.
Queueing user tasks.
Processing 4 users
Queued 1 digests and 0 messages for 2
Queued 1 digests and 0 messages for 3
Queued 1 digests and 0 messages for 62
Queued 1 digests and 0 messages for 24
Queued 4 digests, and 0 individual tasks for 0 post mails. Unique users: 4 (0 ignored)
All tasks queued.

La preparazione del digest è un task che è stato completato poi ci sarà l'invio ammiccante.
Divertiti con <F5> dal browser sulla URL del cron di Moodle: oggi se riesco controllo che effettivamente quei messaggi dal cron indichino la corretta elaborazione perché devo capire come mai parli di 0 messaggi per i 4 utenti  destinatari di cui uno è l'amministratore.

HTH,
Matteo

In riposta a Matteo Scaramuccia

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di patrizia bruno -
Grazie mille, ma non ti preoccupare, non voglio rovinarti la domenica. Se ti fosse più semplice, vuoi che ti do l'accesso come amministratore, magari c'è qualcosa anche nelle stesse impostazioni di moodle che a me sfugge, una casellina abilitata o no. anche perché ho lanciato f5 è mi da:
Execute scheduled task: Invio mail dai forum e operazioni di manutenzione (mod_forum\task\cron_task)
... started 12:57:27. Current memory use 14MB.
Removing old digest records from 7 days ago.
Removed all old digest records.
Fetching unmailed posts.
No posts found.
... used 2 dbqueries
... used 0.0015649795532227 seconds
Scheduled task complete: Invio mail dai forum e operazioni di manutenzione (mod_forum\task\cron_task)
grazie
In riposta a Matteo Scaramuccia

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di patrizia bruno -
Ciao Matteo, il mio host mi ha risposto così:
"Buongiorno Patrizia,
il suo hosting include l'accesso tramite SSH.
Può accedere via ssh digitando il comando "ssh nomeutente@miodominio.it" nel terminale
Tenga presente che il nome utente da utilizzare corrisponde alle sue credenziali FTP predefinite (con relativa password).
L'accesso è consentito in modalità "utente" e non root."
Patrizia
In riposta a patrizia bruno

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di Matteo Scaramuccia -

Ciao Patrizia,
ottimo, ora dobbiamo sfruttarne le potenzialità con i seguenti obiettivi:

  • tecnico: imparare le basi una connessione SSH, tramite l'uso di un client
  • tecnico: imparare le poche basi per istruire i comandi per mettere sotto cron del Sistema Operativo il "cron di Moodle"

Le altre informazioni che ti hanno date riguardano il tuo accesso SSH che giustamente è limitato ai privilegi della tua utenza che non è l'amministratore del server che ospita la tua istanza Moodle.

Per il primo obiettivo potresti installare ad esempio PuTTY sul tuo PC Windows: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html, ad esempio putty-64bit-0.73-installer.msi se hai un computer a 64 bit.
Questo programma di permetterà la funzionalità di Terminale Remoto per istruire comandi sul tuo spazio server.
Se hai Windows 10 aggiornato almeno al 2019, hai già un client SSH quindi è sufficiente aprire un Prompt del DOS e istruire il comando che ti hanno indicato sopra, ssh nomeutente@miodominio.it.

Quali comandi?
Almeno due, il primo per verificare il path completo di PHP ed il secondo per istruire il cron.
Il $ è il simbolo di accettazione comandi per un utente non privilegiato e lo devi omettere perché lo ritroverai già alla sinistra del cursore.

  • $ which php: prendi nota del percorso e verifica la versione di PHP che deve essere quella che "muove" il tuo sistema Moodle. Esempio:
    /path/to/bin/php -v
    PHP 7.3.17 (cli) (built: Apr 14 2020 08:29:22) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.3.17, Copyright (c) 1998-2018 Zend Technologies
        with Zend OPcache v7.3.17, Copyright (c) 1999-2018, by Zend Technologies
    
  • $ crontab -e: ti permette di entrare nell'editor del cron per il tuo utente di sistema, in cui dovrai aggiungere la linea di comando indicata nella documentazione Moodle, qualcosa del tipo * * * * * /path/to/bin/php /path/to/moodle/admin/cli/cron.php > /dev/null, dove devi appunto individuare sia il percorso all'interprete CLI di php e quale sia la cartella locale al server dove effettivamente risiede il codice di Moodle. Il "cron di Moodle" girerà finalmente ogni minuto

La difficoltà sarà ad esempio nel prendere confidenza con l'editor di testo che potrebbe essere il "temibile vi" per il quale:

  1. devi premere i per inserire la tua nuova linea
  2. devi premere ESC per uscire dalla modalità di inserimento
  3. devi premere :wq per scrivere ed uscire dall'editor e quindi lasciare al cron di registrare la tua richiesta

In rete trovi molte guide, io ti lascio questa, https://howto.webarea.it/linux/utilizzo-di-crontab-per-schedulare-processi-con-esempi-sotto-linux_1 .

HTH,
Matteo

In riposta a Matteo Scaramuccia

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di patrizia bruno -
Ciao Matteo, premetto che mi sono fatta aiutare da un amico che un pò ne capisce, ma non credo che abbiamo risolto.
Riguardo al primo punto
[xxxxxxx@xxxxxx log]$ /usr/local/bin/php -v
PHP 7.2.27 (cli) (built: Feb 4 2020 15:16:13) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with the ionCube PHP Loader + ionCube24 v10.3.9, Copyright (c) 2002-2019, by ionCube Ltd.
with Zend OPcache v7.2.27, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v2.6.1, Copyright (c) 2002-2018, by Derick Rethans
[xxxxxxx@xxxxxx log]$


Per quanto riguarda il cronjob, ho apportato questa modifica nelle linea di comando
minuti */1 : wget -q -O /dev/null http://www.miosito.it/moodle/admin/cron.php?password=xxxxxxxxx
è scomparso dalle notifiche il messaggio che il cron non girava ogni minuto
ps. ho fatto questa modifica perchè ho impostato dal moodle il lancio del cron da web con password
lanciando $crontab -e mi riporta:
#direct_crons enabled. Safe to edit this file. DirectAdmin will update accordingly.
MAILTO=""
*/1 * * * * wget -q -O /dev/null http://www.miosito.it/moodle/admin/cron.php?password=xxxxxxxxx
~
...
~
"/tmp/crontab.wKaCxW" 3L, 210C


anche se non mi da più l'errore dalle notifiche, continua a non inviarmi le mail dopo aver caricato un file csv. 
ho riverificato l'invio delle mail di raccolta per interventi nei forum e neanche in questo caso le invia. 
provato a rilanciare cron da web ed ora mi da:

Server Time: Fri, 24 Apr 2020 17:06:51 +0200
Cron script completed correctly
Cron completed at 17:06:51. Memory used 3.6MB.
Execution took 0.032575 seconds

per quanto riguarda il file cron.php in public_html>moodle>admin>cli>cron.php aprendolo c'è scritto:
define('CLI_SCRIPT', true);

require(__DIR__.'/../../config.php');
require_once($CFG->libdir.'/clilib.php');      // cli only functions
require_once($CFG->libdir.'/cronlib.php');

// now get cli options
list($options, $unrecognized) = cli_get_params(array('help'=>false),
                                               array('h'=>'help'));

if ($unrecognized) {
    $unrecognized = implode("\n  ", $unrecognized);
    cli_error(get_string('cliunknowoption', 'admin', $unrecognized));
}

if ($options['help']) {
    $help =
"Execute periodic cron actions.

Options:
-h, --help            Print out this help

Example:
\$sudo -u www-data /usr/bin/php admin/cli/cron.php
";

    echo $help;
    die;
}

cron_run();
e questo che devo modificare? io non so davvero, se non c'è riuscito il mio amico 
che ha le conoscenze di programmazione dubito di poterci riuscire 😓
intanto grazie

In riposta a patrizia bruno

Ri: mancato invio mail registrazione da file csv (importazione utenti)

di Matteo Scaramuccia -

Ciao Patrizia,
bene, abbiamo fatto un passo in avanti approvo.

Perchè vorresti modifica il codice di Moodle?
Non devi modificare nulla, forse non ho capito la tua domanda o tu la mia proposta ammiccante.

Quello che ti chiedevo io era di usare l'opzione CLI di Moodle quindi invece che:

*/1 * * * * wget -q -O /dev/null http://www.miosito.it/moodle/admin/cron.php?password=xxxxxxxxx

ti proponevo di usare il comando CLI per attivare il debug del cron, ma va bene anche come hai fatto tu.

Quando sei collegata in SSH puoi infatti lanciare un comando di Moodle come il cron:

sudo -u <utente owner dei file del codice Moodle se diverso dal tuo> /usr/local/bin/php <scrivi qui il percorso assoluto alla tua cartella Moodle, ad esempio /srv/<tuodominio>/public_html>/moodle/admin/cli/cron.php

con una attenzione sull'utente con cui lanciarle, https://docs.moodle.org/38/en/Administration_via_command_line#Running_CLI_scripts.

Perche?
Perché da CLI si può leggere informazioni di debug attivabili tramite $CFG->showcrondebugging = true; nel file config.php.

Purtroppo ammetto di essere limitato a spiegarmi al meglio perché ci sono dei prerequisiti nell'uso della linea di comando che non riesco a esemplificarti al meglio.

HTH,
Matteo