This is a php server issue.
The host should be able to update the php.ini file for you to set the default timezone to prevent that error from occurring. It happens if the default time zone is not set in the php.ini.
alternately you can add the following code to your page to set the time zone:
<?php
date_default_timezone_set('Europe/London');
?>
The list of valid timezones is here...
http://www.php.net/manual/en/timezones.php
As for question 2, there really isn't a way for the Server to 'log in' to security assist in the sense of creating a user Session. what you could do is set the cornjob to pass a query string, make it something complex like:
emailpage.php?mMAoM01LT3305Qha=23dygPQrNseL7cPO
and set up an access rule as
Allow IF:
URL Variable mMAoM01LT3305Qha
=
23dygPQrNseL7cPO
and apply that access url to the page rather than one that uses a session
the chances of a random user guessing a URL variable like:
mMAoM01LT3305Qha=23dygPQrNseL7cPO
are pretty slim at best