AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.07.2010, 14:22   #1  
_AV_ is offline
_AV_
Участник
 
29 / 19 (1) ++
Регистрация: 27.02.2008
Адрес: Санкт-Петербург
Не выполняется отправка email в workflow activity
Всем доброго дня!

Не могу понять почему не выполняется SendEmailRequest.

Подскажите, плиз, куда копать?

CRM 4.0 RU8

X++:
namespace CRM_SendMailActivity
{
    [CrmWorkflowActivity("Send Mail")]
    public partial class SendMailActivity : SequenceActivity
    {
        protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService));
            IWorkflowContext workflowContext = contextService.Context;
            ICrmService crmservice = workflowContext.CreateCrmService(true);
            Guid EmailId = new Guid(EntityIDIN);

            QueryByAttribute queryByAttribute = new QueryByAttribute();
            queryByAttribute.ColumnSet = new AllColumns();
            queryByAttribute.EntityName = EntityName.email.ToString();
            queryByAttribute.Attributes = new string[]{"activityid"};
            queryByAttribute.Values = new string[] { EmailId.ToString() };

            BusinessEntityCollection retrieved = crmservice.RetrieveMultiple(queryByAttribute);

            if (retrieved.BusinessEntities.Count == 0)
                return ActivityExecutionStatus.Canceling;

            SendEmailRequest sendrequest = new SendEmailRequest();
            sendrequest.EmailId = ((Key)((email)retrieved.BusinessEntities[0]).activityid).Value;
            sendrequest.TrackingToken = "";
            sendrequest.IssueSend = true;
            crmservice.Execute(sendrequest);

            return ActivityExecutionStatus.Closed;
        }

        public static readonly DependencyProperty EntityIDINProperty =
            DependencyProperty.Register("EntityIDIN", typeof(string), typeof(SendMailActivity));

        [CrmInput("Entity ID InpuT")]
        public string EntityIDIN
        {
            get { return (string)GetValue(EntityIDINProperty); }
            set { SetValue(EntityIDINProperty, value); }
        }
    }
}

Последний раз редактировалось _AV_; 07.07.2010 в 14:43. Причина: Версия приложения
Старый 08.07.2010, 11:09   #2  
Гуревич Денис is offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Регистрация: 04.08.2008
Адрес: Москва
Ну а что значит "не выполняется"? С ошибкой падает? С какой?
Попробуйте для начала этот кусок кода вытащить в отдельное консольное приложение, так будет проще разобраться.
__________________
Опыт позволяет ошибаться гораздо увереннее.
Старый 08.07.2010, 12:01   #3  
_AV_ is offline
_AV_
Участник
 
29 / 19 (1) ++
Регистрация: 27.02.2008
Адрес: Санкт-Петербург
Цитата:
Ну а что значит "не выполняется"? С ошибкой падает? С какой?
crmservice.Execute(sendrequest); - валится с обычной ошибкой "Server was unable to process request."
Цитата:
Попробуйте для начала этот кусок кода вытащить в отдельное консольное приложение, так будет проще разобраться.
В плагинах и консольных приложениях работает без ошибок,но не работает в любом workflow activity.
Старый 08.07.2010, 12:17   #4  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Гуревич Денис Посмотреть сообщение
Ну а что значит "не выполняется"? С ошибкой падает? С какой?
Попробуйте для начала этот кусок кода вытащить в отдельное консольное приложение, так будет проще разобраться.
Если вытащить именно этот кусок кода в консольное приложение - он не будет работать, поскольку context используется.

Не совсем понятно зачем этот ретрив стоит. Попробуйте использовать следующий код:

Код:
namespace CRM_SendMailActivity
{
    [CrmWorkflowActivity("Send Mail")]
    public partial class SendMailActivity : SequenceActivity
    {
        protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService));
            IWorkflowContext workflowContext = contextService.Context;
            ICrmService crmservice = workflowContext.CreateCrmService(true);
            Guid EmailId = new Guid(EntityIDIN);

            SendEmailRequest sendrequest = new SendEmailRequest();
            sendrequest.EmailId = EmailId;
            sendrequest.TrackingToken = "";
            sendrequest.IssueSend = true;

	    try
            {
            	crmservice.Execute(sendrequest);
	    }
	    catch (SoapException sexc)
	    {
		throw new Exception(sexc.Detail.InnerText);
	    }

            return ActivityExecutionStatus.Closed;
        }

        public static readonly DependencyProperty EntityIDINProperty =
            DependencyProperty.Register("EntityIDIN", typeof(string), typeof(SendMailActivity));

        [CrmInput("Entity ID InpuT")]
        public string EntityIDIN
        {
            get { return (string)GetValue(EntityIDINProperty); }
            set { SetValue(EntityIDINProperty, value); }
        }
    }
}
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 08.07.2010, 12:38   #5  
_AV_ is offline
_AV_
Участник
 
29 / 19 (1) ++
Регистрация: 27.02.2008
Адрес: Санкт-Петербург
Цитата:
Сообщение от a33ik Посмотреть сообщение
Если вытащить именно этот кусок кода в консольное приложение - он не будет работать, поскольку context используется.
несомненно.
Цитата:
Не совсем понятно зачем этот ретрив стоит. Попробуйте использовать следующий код:
....
Первоначально ровно такой же код разработал. Выборку письма добавил для того, чтобы точно убедиться, что письмо существует.
Старый 08.07.2010, 12:41   #6  
_AV_ is offline
_AV_
Участник
 
29 / 19 (1) ++
Регистрация: 27.02.2008
Адрес: Санкт-Петербург
Господа, а скажите, пож-та, у вас работает данный пример в workflow activity?
Старый 08.07.2010, 13:05   #7  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от _AV_ Посмотреть сообщение
Господа, а скажите, пож-та, у вас работает данный пример в workflow activity?
Если бы не работало, в блог бы не выкладывал. Помпится у одного из посетителей форума тоже ошибка была с отсылкой писем. Решил он её при помощи создания экземпляра класса CrmService и отсылкой письма через него. попробуйте - это может сработать.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 08.07.2010, 13:16   #8  
Гуревич Денис is offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Регистрация: 04.08.2008
Адрес: Москва
Цитата:
Сообщение от a33ik Посмотреть сообщение
Если вытащить именно этот кусок кода в консольное приложение - он не будет работать, поскольку context используется.
Прям в таком виде - не будет, согласен. Но тут context используется только для создания CrmService. В консольном приложении его можно и ручками создать.
__________________
Опыт позволяет ошибаться гораздо увереннее.
Старый 08.07.2010, 14:10   #9  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Гуревич Денис Посмотреть сообщение
Прям в таком виде - не будет, согласен. Но тут context используется только для создания CrmService. В консольном приложении его можно и ручками создать.
Имел ввиду этот топик. Автор написал, что причина возникновения ошибки была именно в методе отправки письма, а именно в получении сервиса через контекст. Возможно и у автора данного топика возникает подобного рода ошибка.

PS в своих плагинах/кастомных экшенах всегда использовал метод создания сервиса через контекст - и ни разу не сталкивался с ошибками начиная со 2-го роллапа (до него были проблемы, которые 2-ым роллапом исправлялись).
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 10.08.2010, 18:37   #10  
_AV_ is offline
_AV_
Участник
 
29 / 19 (1) ++
Регистрация: 27.02.2008
Адрес: Санкт-Петербург
Наконец-то нашлось время поразбираться с моей проблемой.
за 20 мин нашел из-за чего были проблемы.... оказалось, что в способе создания crmservice.

ICrmService crmservice = workflowContext.CreateCrmService(true); //Не выполняется SendEmailRequest =(
ICrmService crmservice = workflowContext.CreateCrmService(); //Выполняется SendEmailRequest =D

Оказывается все работает, если не указывать параметр asAdminUser.... %)

Последний раз редактировалось _AV_; 10.08.2010 в 18:44.
За это сообщение автора поблагодарили: a33ik (1).
Теги
activity, email, sendemailrequest, workflow

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Crm 3.0: custom workflow create email from template wb Dynamics CRM: Разработка 7 04.03.2010 00:02
a33ik: Custom workflow action, team members and 'to' field of email record for Microsoft Dynamics CRM 4.0 Blog bot Dynamics CRM: Blogs 0 01.10.2009 16:05
Dynamics CRM Tools: Workflow: Add rich HTML content in email body Blog bot Dynamics CRM: Blogs 0 13.08.2009 15:05
CRMScape: RFC822 Import to MS CRM email activity utility Blog bot Dynamics CRM: Blogs 0 13.08.2009 15:05
Microsoft Dynamics CRM Team Blog: Microsoft Dynamics CRM, Email correlation and smart matching Blog bot Dynamics CRM: Blogs 0 12.11.2008 04:08

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:26.