2016-08-02 46 views
0

ich einen groovy Controller geschrieben haben, die E-Mail sendet:Trigger-E-Mail von Grails Controller

package com.test 

class LibraryController { 
    def mailService 
    def sendEmail() { 
     mailService.sendMail{ 
      to "[email protected]" 
      from "[email protected]" 
      subject "Testing email system" 
      body "Hi Checking the service" 
     } 
     render "test" 
    } 
} 

Und wenn ich die URL nehmen ->http://server_name:8080/library/sendEmail, wird es E-Mail senden. Ich habe versucht, dies als Befehl in cron hinzufügen (in Linux-Server) wie:

crontab -e 
*/5 * * * * http://server_name:8080/library/sendEmail 

Aber es die E-Mail nicht in allen 5 Minuten, indem Sie diese senden.

Bitte helfen!

+0

Sie müssen genauer angeben, was Sie versucht haben und was nicht funktioniert hat, was Sie versucht haben. Die Verwendung eines allgemeinen Begriffs wie "cron job" wird nicht helfen. Möchtest du es von einem * nix cron Job aus aufrufen? Möchtest du es in deiner Grails-Anwendung auf einen Zeitplan/Timer setzen? Ihre Frage enthält nicht viele Informationen darüber, was Sie benötigen und was Sie ausprobiert haben. –

+0

bearbeitet die Frage - ich möchte es von * Nix Cron Job anrufen - da wir einen anderen Scheduler haben, um es aufzurufen, kann ich nicht Quarz verwenden – Futuregeek

+0

Ich denke, Ihre Cron-Ausdruck sollte '*/5' für alle 5 Minuten sein. Wenn das nicht ist, was passiert außer einer Email nicht? Gibt es eine Ausnahme von Grails? Gibt es einen Treffer im Zugriffsprotokoll? – doelleri

Antwort

4

Setzen Sie curl vor URL in Ihrem Cron-Ausdruck. wie folgt aus:

*/5 * * * * curl http://server_name:8080/library/sendEmail

curl oder wget wird Ihre URL aufrufen und E-Mail senden.

Aber wenn ich vorschlagen könnte, eine andere Möglichkeit, Aufgaben in Ihrem Grails App zu planen. Ich empfehle Quartz-Plugin oder ScheduledExecutorService, das letzte ist nativ von Java.