Domanda

Ho solo bisogno di inviare una e-mail nel futuro, così ho pensato che sarei meglio a utilizzare at piuttosto che utilizzare cron. Questo è ciò che ho finora, il suo disordinato e brutto e non un gran che a fuggire:

<pre>
<?php
    $out = array();

    // Where is the email going?
    $email = "you@gmail.com";

    // What is the body of the email (make sure to escape any double-quotes)
    $body = "This is what is actually emailed to me";
    $body = escapeshellcmd($body);
    $body  = str_replace('!', '\!', $body);


    // What is the subject of the email (make sure to escape any double-quotes)
    $subject = "It's alive!";
    $subject = escapeshellcmd($subject);
    $subject  = str_replace('!', '\!', $subject);


    // How long from now should this email be sent? IE: 1 minute, 32 days, 1 month 2 days.
    $when = "1 minute";

    $command= <<<END
    echo "
            echo \"$body\" > /tmp/email;
            mail -s \"$subject\" $email < /tmp/email;
            rm /tmp/email;
    " | at now + $when;
END;

    $ret = exec($command, $out);
    print_r($out);
?>

</pre>

L'output dovrebbe essere qualcosa del tipo


ATTENZIONE: i comandi saranno eseguiti usando / bin / sh
lavoro 60 a gio 30 dicembre 2010 19:39:00

Comunque sto facendo qualcosa di sbagliato con exec e non ottenere il risultato?

La cosa principale è questo sembra molto disordinato. Non v'è alcun metodo migliore alternativa per fare questo?

PS:. Ho dovuto aggiungere l'utente di Apache (www-data per me) per /etc/at.allow ... Il che non mi piace, ma posso vivere con esso

È stato utile?

Soluzione

Si sta facendo fondamentalmente

mail | at

che sarebbe uscita pipa di posta elettronica per il comando at. Questo non è corretto. Il comando mail verrà eseguito immediatamente, e l'uscita (di solito nulla, a meno che non ci fosse un avvertimento) sarà poi in programma per funzionare in qualunque momento si specifica.

Lo script dovrebbe eseguire il dump dei comandi di posta elettronica in un file, poi fare un exec () su

at whenver < mailcmd.sh
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top