Как вариант рассылка занимает определенное время, которое превышает время, которое разрешается скрипту выполняться на сервере (max_execution_time)?
Просто 500 ошибку обычно даёт при рассылках, когда превышено время ожидания выполнения скрипта. По сути, если у Вас свой сервер - вы можете увеличить этот параметр в php.ini, или же вовсе поставить его равным нулю для проверки, хотя этот способ вообще не есть гуд.