Is there a reason you're using the "CiviCRM Cron" module? That's adding an needless level of complexity to your site. Since you are able to get the job to work by manually executing the job, I suspect that there's a problem in the way you've configured the "CiviCRM Cron" module.
Disable the module, and set up cron the normal way. You'll want CiviCRM's cron job to run way more often (every 5-15 minutes) than Drupal's cron should (every 1-3 hours). Doing a real cron job will also bypass problems that may crop up with the "CiviCRM Cron" Drupal module.
Here's how. Visit the Managing Scheduled Jobs page on the CiviCRM wiki for reference.
If you have Drush installed, just use the "Drush Method" from that page. Test it out on the command line, and if that works, set the cron job to be something like
*/6 * * * * /usr/bin/drush -u 1 -r /path/to/drupal -l www.example.org civicrm-api job.execute auth=0 -y
That runs every 6 minutes, which makes a nice even 10 runs per hour.
If you don't have Drush, use the following steps (the "PHP CLI method"):
- Create a user account that has "Access CiviCRM" and "Administer CiviCRM" privileges. (You could theoretically use your own, but you will be putting the password in plain text in the cron job, so it's safer to create a separate one.)
Put together what you need in this format:
php /path/to/civicrm/bin/cli.php -s site -u user -p password -e Job -a execute
You can drop the "-s site" if you only have one site running. Replace the word "user" with your new user's Drupal username, and the word "password" with its password.
If you have SSH access and are comfortable with the command line, you'll have a leg up. Try running that command. Check your Scheduled Jobs page to see that it ran (making sure that your mailing sender job is enabled and set to run on every cron run--not hourly or daily).
Assuming that worked, set up the cron job
*/6 * * * * php /path/to/civicrm/bin/cli.php -s site -u user -p password -e Job -a execute
Again, I like six minutes to make the arithmetic easy by having 10 cron runs per hour.
This should dodge any problems with the "CiviCRM Cron" module, and it should allow you to run your mailings and SMS messages much more promptly.
For reference, "send immediately" does depend upon cron to run. It actually isn't literally immediate--it just schedules it for the current time, and cron takes it from there.