Sign in to follow this  
Followers 0
Ptica

Отправить email уведомление ответственному

    13 posts in this topic

    По нажатию на кнопку сохранить в модуле  Tasks, при статусе задачи Завершена, необходимо отправить уведомление на почту ответственному.

    Изменения произвожу в файле \modules\Tasks\Task.php в функции function save

    Задача заключается в том, что бы вытащить email ответственного и в отправке ему сообщения с названием задачи.

    Share this post


    Link to post
    Share on other sites

    В SugarCRM/SuiteCRM есть механизм нотификации о назначении одним пользователем записей другому пользователю. Включить мезанизм для того или иного пользователя можно в редактировании его карточки:

    56efb22f1bcbf_2016-03-2111-34-36CRMHosti

    Но пока это только разрешение, что пользователю надо отправлять нотификацию. Автоматически она уходит когда один пользователь назначает другого пользователя ответственным (сам себе когда назначаешь - не уходит). Но мы можем принудительно отправлять уведомления, если запускать метод save с параметром true:

    $focus->save(true);

    В этом случае ответственному за запись пользователю будет отослано уведомление.

    Такой вариант подойдет?

    Share this post


    Link to post
    Share on other sites

    Этот механизм работает. Нужно сделать "отбивку" при изменении статуса задачи. То есть Пользователю поставлена задача - пришло сообщение. Потом пользователь выполнил задачу, выставил статус Завершена, нажал сохранить - заказчику (тот кто поставил задачу) пришло сообщение о выполнении.

    Share this post


    Link to post
    Share on other sites
    24 минуты назад, Ptica сказал:

    Этот механизм работает. Нужно сделать "отбивку" при изменении статуса задачи. То есть Пользователю поставлена задача - пришло сообщение. Потом пользователь выполнил задачу, выставил статус Завершена, нажал сохранить - заказчику (тот кто поставил задачу) пришло сообщение о выполнении.

    Ну если в таком ключе, то вытащить емайл - это добраться до свойства email1 у пользователя. определяешь объект с создавшим пользователем и обращаешся к его свойствам. например так:

    $seedUser = new User();
    $seedUser->retrieve($focus->created_by);
    echo "Мыло: " . $seedUser->email1;

    Share this post


    Link to post
    Share on other sites

    Это то, что нужно. Спасибо. Хотелось бы узнать поподробнее что такое retrieve , с чем его едят и где про него смотреть& Ну и как отправить само письмо средствами шуги&

    Share this post


    Link to post
    Share on other sites
    3 минуты назад, Ptica сказал:

    Хотелось бы узнать поподробнее что такое retrieve , с чем его едят и где про него смотреть&

    retrieve - это инициализация объекта по его ID. тоесть если ты хочешь получить все данные по тому или иному объекту зная только его ID, то ты создаешь экземпляр класса этого объекта и вызываешь функцию retrieve с известным тебе ID. после этого у этого экземпляра класса становятся заполненными все свойства, присущие этому экзепляру (название, даты, значения полей и так далее). в PHPStorm зажми контрл и клики но функции retrieve - перейдешь на эту функцию там и посмотреть все можно более подробно. я как правило если где то из $_REQUEST получаю ID записи, с которой хочу что то дальше делать, то после retrieve выполняю проверку на заполненность свойства ID:

    if(isset($_REQUEST['record'])) {
       $focus = new Task();
       $focus->retrieve($_REQUEST['record']);
       if(!empty($focus->id)) {
          // Запись успешно найдена и инциализирована
          // производим с ней дальнейшие манипуляции
       }
    }

    позволяет защититься от работы с удаленными или не правильно указанными данными. Ведь может так получиться, что запись не найдена, но где то потом объекту вызывают ->save(), что приведет не к СОХРАНЕНИЮ, а к СОЗДАНИЮ новой записи.

    1 person likes this

    Share this post


    Link to post
    Share on other sites
    26 минуты назад, Ptica сказал:

     Ну и как отправить само письмо средствами шуги&

    Вот так например:

    require_once('include/SugarPHPMailer.php');
    $emailObj = new Email();
    $default_email = $emailObj->getSystemDefaultEmail();
    $mail = new SugarPHPMailer();
    $mail->setMailerForSystem();
    $mail->From = $default_email['email'];
    $mail->FromName = $default_email['name'];
    $mail->Subject = $subject;
    $mail->Body = $body;
    $mail->AltBody = $body;
    $mail->ClearAllRecipients();
    $mail->ClearReplyTos();
    $mail->prepForOutbound();
    $mail->AddEmbeddedImage('custom/themes/SuiteR/images/logo_eng.png', 'logo');

     

    надо только определить что за HTML будет в $body и какая тема письма. 

    Share this post


    Link to post
    Share on other sites

    А где сама отправка письма?

    Share this post


    Link to post
    Share on other sites
    if (!$mail->Send()) die('Ошибка отправки уведомлений');

    Share this post


    Link to post
    Share on other sites

    Не удалось отправить письмо. Смотреть в сторону SugarPHPMailer.php? Есть описание его методов?

    Share this post


    Link to post
    Share on other sites
    В 22.03.2016 at 17:19, Ptica сказал:

    Не удалось отправить письмо. Смотреть в сторону SugarPHPMailer.php? Есть описание его методов?

    а какую ошибку вернула попытка? найти ответ smtp-сервера. почта вообще из crm уходит?

    Share this post


    Link to post
    Share on other sites
    Ошибка отправки уведомлений:)

    Share this post


    Link to post
    Share on other sites
    4 часа назад, Ptica сказал:
    
    Ошибка отправки уведомлений:)

    я про ответ smtp-сервера, а не что вернул шугар... ты можешь копнуть класс отправки и глянуть что вернул сам сервер?

    Share this post


    Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!


    Register a new account

    Sign in

    Already have an account? Sign in here.


    Sign In Now
    Sign in to follow this  
    Followers 0