Показать сообщение отдельно
Старый 17.01.2013, 12:11   #3  
Буденый is offline
Буденый
Участник
 
70 / 15 (1) ++
Регистрация: 07.06.2010
Адрес: Донецк
Thumbs up Всем спасибо, может кому пригодится
a33ik и slivka_83, Ребят, большое Вам спасибо за Ваш труд и помощь.

Ответ на поставленный вопрос, можно ли отправлять уведомления на любой e-mail из CRM 4 - отправлять можно, но не все так просто.

Для чего это нужно было мне:
Обращения клиентов в компанию, попадают в CRM в виде обращений и вопросов c сайта компании. E-mail сохраняется в текстовом поле обращения. Затем обращение обрабатывается и необходимо было отправить ответ на указанный пользователем email.
Как реализовал:
После закрытия обращения, БП отправляет клиенту ответ технического специалиста.
По шагам:
1. В БП по закрытию обращения создается e-mail и заполняется по шаблону, в качестве адресата используется контакт без адресов эл. почты, если не указать адресата, будет ошибка.
2. Создал кастомный шаг БП, в который передаю созданное эл. сообщение и электронный ящик клиента(можно добавить ещё и передачу пользователя от которого осуществлять отправку).
3. В кастомном шаге БП происходит обновление адресата и отправителя. В компании несколько технических специалистов, поэтому нужно чтобы ответ отправлялся от адресата noreply@company.com (другого пользователя). Отправка от имени другого пользователя возможна только при наличии прав на отправку почты от имени другого пользователя(Выбранная роль->Вкладка "Управление бизнесом" -> "Отправить электронную почту от имени другого пользователя").

Код:
IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService));
                IWorkflowContext workflowContext = contextService.Context;
                ICrmService crmservice = workflowContext.CreateCrmService();

                email mail = new email();
                //для обновления выбираем созданное сообщение на предыдущем шаге БП, который передали в этот шаг
                mail.activityid = new Key(MailEntity.Value);

                //Устанавливаем в качестве адресата, пользователя от имени которого будет производится отправка сообщения
                activityparty fromparty = new activityparty();
                fromparty.partyid = new Lookup();
                fromparty.partyid.type = EntityName.systemuser.ToString();
                fromparty.partyid.Value = new Guid("17DAC2B1-F35E-E211-AEA9-00155D010B02");
                mail.from = new activityparty[] { fromparty };
             
               //Устанавливаем контакт заглушку без адресов эл. почты
                activityparty toparty = new activityparty();
                toparty.partyid = new Lookup();
                toparty.partyid.type = EntityName.contact.ToString();
                toparty.partyid.Value = new Guid("A432DC4F-E8AB-DC11-94ED-000423AF733E");
               
                //указываем адрес клиента, который передали в кастомный шаг БП
                toparty.addressused = emailField;
                mail.to = new activityparty[] { toparty };

                crmservice.Update(mail);

                //Отправка уведомления от имени другого пользователя и на указанный адрес эл. почты
                SendEmailRequest sendrequest = new SendEmailRequest();
                sendrequest.EmailId = mail.activityid.Value;
                sendrequest.TrackingToken = "";
                sendrequest.IssueSend = true;
                crmservice.Execute(sendrequest);