Трудно что-либо подсказать при таком описании проблемы. Было бы неплохо указывать чуть больше информации. В частности:
[U]1) Что за система?[/U]
CentOS, Debian? Какая версия.
[U]2) Как настроена почтовая система?[/U]
Какой MTA или SMTP клиент используется (exim, postfix, msmtp)? Было бы здорово приложить конфигурационный файл.
[U]3) Как именно производится удачный вызов скрипта отправки письма из консоли?[/U]
Приложить команду, набираемую в консоле. Например:
[CODE]$ php -r "mail('some@mail.com', 'Some subject', 'Some body');"[/CODE]
[U]4) Как именно производится неудачный вызов скрипта по крону?[/U]
Приложить строку из crontab. Что-то вроде:
[CODE]* * * * * /usr/bin/php -r "mail('some@mail.com', 'Some subject', 'Some body');"[/CODE]
[U]5) Показать выдержку из лога MTA или SMTP клиента в период запуска скрипта через cron.[/U]
Логи можно найти в /var/log. Например, для msmtp это, как правило, файл /var/log/msmtp.log.
[U]6) Показать результат выполнения скрипта через cron.[/U]
Как правило, если в процессе выполнения произошла ошибка, ее можно найти в /var/spool/mail/<имя пользователя>.
[U]7) Показать переменные окружения для случая вызова скрипта отправки почты из консоли (удачный случай) и для cron (неудачный случай).[/U]
[CODE]$ env > /tmp/env_user[/CODE]
В crontab добавить:
[CODE]* * * * * env > /tmp/env_cron[/CODE]
Подождать минуту. Убрать запись из crontab. Приложить содержимое файлов /tmp/env_user и /tmp/env_cron.