#php #email #yii
#php #Адрес электронной почты #yii
Вопрос:
Как createAbsoluteUrl() действует вне контроллера?
Я пытаюсь отправить ссылку по электронной почте. Эта ссылка:
Yii::app()->createAbsoluteUrl('user/deactivate', array('secret'=>$one->id, deactivate_key'=>$one->delete_key))
этот код отлично работает в контроллере, но не работает в каталоге команд. То есть mail() не отправляет сообщение с помощью createAbsoluteUrl().
Как это исправить?
Полный код:
class NotifyCommand extends CConsoleCommand
{
public function run()
{
$cr = new CDbCriteria();
$cr->condition = "delete_key = ''";
$model2 = User::model()->findAll($cr);
foreach ($model2 as $one) {
$delete_key = sha1(mt_rand(10000, 99999).time()."some string");
$one->delete_key = $delete_key;
$one->save(false);
}
$model = User::model()->findAll();
foreach ($model as $one) {
if($one->ban == 1){
$last = strtotime($one->last_logon);
$now = time();
$difference = $now - $last;
$month_in_seconds = 60*60*24*30;
if($difference > $month_in_seconds){
$message = "<p>It has been more than a month since you visited our site: Sotrudnik.uz. If you want you can delete you account by clicking the button below</p>";
$message .= "<button><a style=" text-decoration: none; color: black;" href=".Yii::app()->createAbsoluteUrl('user/deactivate', array('secret'=>$one->id, 'deactivate_key'=>$one->delete_key)).">Deactivate Your Account</a></button>";
$subject = "This is a subject";
$headers = 'MIME-Version: 1.0' . "rn";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "rn";
$headers .= 'From: CTI.uz' . "rn";
mail($one->email,"Deactivate Your Account",$message, $headers);
}
}
}
}
Комментарии:
1. какое сообщение об ошибке вы видите, если оно есть? и что появляется в электронном письме на месте этого URL?
2. cron настроен для выполнения command…so Я не вижу никакого сообщения об ошибке. Электронное письмо не приходит. Сообщение в основном должно гласить: нажмите на ссылку ниже, чтобы деактивировать свою учетную запись.
3. проверьте файл журнала консоли на наличие ошибок.
4. в коде, который вы вставили, есть опечатка после
deactivate_key
того, как вы открыли строковый оператор5. @tinybyte, эта опечатка всего лишь here…my bad…in текстовый редактор это нормально
Ответ №1:
Вы не можете зависеть от createAbsoluteUrl() в cron.
Попробуйте это для создания url
$link= $_SERVER['secureHostInfo'].'/user/deactivate?secret='.$one->id.'amp;deactivate_key='.$one->delete_key;
$message .= CHtml::link('Click here', $link);
Если $_SERVER[‘secureHostInfo’] не сработал, проверьте свой путь в массиве $_SERVER.