04.03.2010, 10:01 | #1 |
Участник
|
Отправка писем из плагина
Создал плагин,который повесил на создание сущности. Пытаюсь отправить писма из него. Письма создаются,но не отправляются. Я раньше отправлял письма из кода моей страницыи все было прекрасно,теперь этот же код не работает.
Код: InstantiateTemplateResponse instTemplateResponse = (InstantiateTemplateResponse)crmService.Execute(instTemplate); email emailCreate = (email)instTemplateResponse.BusinessEntityCollection.BusinessEntities[0]; emailCreate.regardingobjectid = new Lookup(); emailCreate.regardingobjectid.type = sContentType; emailCreate.regardingobjectid.Value = new Guid(sEntId); //specify the owner for the mail emailCreate.ownerid = new Owner(); emailCreate.ownerid.type = EntityName.systemuser.ToString(); emailCreate.ownerid.Value = userid; //created by emailCreate.createdby = new Lookup(); emailCreate.createdby.type = EntityName.systemuser.ToString(); emailCreate.createdby.Value = userid; activityparty apTo = new activityparty(); apTo.partyid = new Lookup(); apTo.partyid.type = sContentType; apTo.partyid.Value = new Guid(sEntId); emailCreate.to = new activityparty[] { apTo }; // specify the from part of the email activityparty from = new activityparty(); from.partyid = new Lookup(); from.partyid.type = EntityName.systemuser.ToString(); from.partyid.Value = userid; emailCreate.from = new activityparty[] { from }; Guid emailId = crmService.Create(emailCreate); //attachment foreach (object oAttach in arrAttBodies) { activitymimeattachment attachment = new activitymimeattachment(); try { annotation annot = (annotation)oAttach; if (annot != null) { attachment.activityid = new Lookup(); attachment.activityid.Value = emailId; attachment.activityid.type = EntityName.email.ToString(); attachment.filename = annot.filename; attachment.body = annot.documentbody; attachment.mimetype = annot.mimetype; Guid attachmentId = crmService.Create(attachment); } } catch (System.Web.Services.Protocols.SoapException ex) { //ErrorMessage("Create Attachments Error:" + ex.Detail.InnerText); } } //Send the Email try { // Create an SendEmailRequest object SendEmailRequest req = new SendEmailRequest(); req.EmailId = emailId; req.TrackingToken = ""; req.IssueSend = true; // Finally Send the email message. SendEmailResponse res = (SendEmailResponse)crmService.Execute(req); iMailsCnt++; if (!bResult) bResult = true; } catch (System.Web.Services.Protocols.SoapException ex) { //ErrorMessage("Send Mail Error:" + ex.Detail.InnerText); } Единственную разницу которую мне удалось найти это то,что в поле Createdby теперь значение SYSTEM,хотя раньше туда писался пользователь под которым создавались письма. Ошибка ни о чем "0x80040216 An unexpected error occurred. Platform" Вопрос вобщем-то простой WTF? |
|
04.03.2010, 10:07 | #2 |
Консультант-джедай
|
А как Вы создаете crmService?
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога |
|
|
За это сообщение автора поблагодарили: Kipetcoff (1). |
04.03.2010, 10:46 | #3 |
Участник
|
Код: CrmAuthenticationToken token = new CrmAuthenticationToken(); token.OrganizationName = sOrgan; token.AuthenticationType = 0; //Create the Service CrmService crmService = new CrmService(); crmService.Credentials = System.Net.CredentialCache.DefaultCredentials; crmService.PreAuthenticate = false; crmService.CrmAuthenticationTokenValue = token; crmService.Url = (string)(Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\MSCRM").GetValue("ServerUrl")) + "/2007/crmservice.asmx"; |
|
04.03.2010, 11:11 | #4 |
Участник
|
Вы абсолютно правы..дело было в методе создания сервиса...
Правильно Код: ICrmService crmservice = context.CreateCrmService(true); |
|
27.05.2010, 17:28 | #5 |
Участник
|
Примерно то же самое
X++: email emailCreate = new email(); emailCreate.regardingobjectid = new Lookup(); emailCreate.regardingobjectid.type = "new_business_trip"; emailCreate.regardingobjectid.Value = target.EntityId; //specify the owner for the mail emailCreate.ownerid = new Owner(); emailCreate.ownerid.type = EntityName.systemuser.ToString(); emailCreate.ownerid.Value = new Guid("9D5BF1D0-1D80-DE11-9267-000E0C4BF7BF"); //created by emailCreate.createdby = new Lookup(); emailCreate.createdby.type = EntityName.systemuser.ToString(); emailCreate.createdby.Value = new Guid("9D5BF1D0-1D80-DE11-9267-000E0C4BF7BF"); activityparty apTo = new activityparty(); apTo.partyid = new Lookup(); apTo.partyid.type = EntityName.systemuser.ToString(); apTo.partyid.Value = new Guid("9D5BF1D0-1D80-DE11-9267-000E0C4BF7BF"); emailCreate.to = new activityparty[] { apTo }; // specify the from part of the email activityparty from = new activityparty(); from.partyid = new Lookup(); from.partyid.type = EntityName.systemuser.ToString(); from.partyid.Value = new Guid("9D5BF1D0-1D80-DE11-9267-000E0C4BF7BF"); emailCreate.from = new activityparty[] { from }; emailCreate.subject = "Заявка на командировку"; emailCreate.description = "Вам отправлена заявка на командировку. Для просмотра и возможного изменения заявки перейдите в Microsoft Dynamics CRM, надстройка Командировки."; Guid emailId = Crmservice11.Create(emailCreate); //Send the Email try { // Create an SendEmailRequest object SendEmailRequest req = new SendEmailRequest(); req.EmailId = emailId; req.IssueSend = true; req.TrackingToken =""; // Finally Send the email message. Crmservice11.Execute(req); } Ошибка: недопустимый аргумент |
|
28.05.2010, 11:42 | #6 |
Участник
|
Цитата:
Вы этот код из плагина вызываете?
__________________
Опыт позволяет ошибаться гораздо увереннее. |
|
31.05.2010, 16:13 | #7 |
Участник
|
Да, из плагина
Походу какой-то глюк был. Скопировал код в новый проект и все заработало... |
|
13.03.2014, 19:19 | #8 |
Участник
|
Всем привет!
Тоже создаю письма из плагина. Отправляются нормально, но как сделать, чтоб ссылки были "кликабельными"? Сейчас видна голый текст вида http:\\... без преобразования в ссылку. Где-то нужно ещё задать какую-то настройку, свойство, чтоб сообщить о том, чтобы письмо было HTML-ного формата или сам текст письма надо ещё как-то кодировать, и одного SecurityElement.Escape мало? |
|
13.03.2014, 20:43 | #9 |
Чайный пьяница
|
Попробуйте добавлять ссылку не просто текстом, а в html формате вроде
Код: <a href='http://google.com'>Click to opne google</a>
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
14.03.2014, 10:04 | #10 |
Участник
|
|
|
14.03.2014, 11:14 | #11 |
Чайный пьяница
|
У меня такой подход работает. Видимо проблема в клиенте, которым вы проверяете почту.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
14.03.2014, 12:05 | #12 |
Участник
|
Цитата:
Но дело в том, что в самом CRM в карточке письма ссылка тоже должна быть кликабельной. Может в параметрах самого SendMailRequest-а какие-то свойства указывать необходимо? |
|