|
|
#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? |
|
|
|
|
#2 |
|
Консультант-джедай
|
А как Вы создаете crmService?
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога
|
|
|
|
| За это сообщение автора поблагодарили: Kipetcoff (1). | |
|
|
#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"; |
|
|
|
|
#4 |
|
Участник
|
Вы абсолютно правы..дело было в методе создания сервиса...
Правильно Код: ICrmService crmservice = context.CreateCrmService(true); |
|
|
|
|
#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); } Ошибка: недопустимый аргумент |
|
|
|
|
#6 |
|
Участник
|
Цитата:
Вы этот код из плагина вызываете?
__________________
Опыт позволяет ошибаться гораздо увереннее. |
|
|
|
|
#7 |
|
Участник
|
Да, из плагина
Походу какой-то глюк был. Скопировал код в новый проект и все заработало... |
|
|
|
|
#8 |
|
Участник
|
Всем привет!
Тоже создаю письма из плагина. Отправляются нормально, но как сделать, чтоб ссылки были "кликабельными"? Сейчас видна голый текст вида http:\\... без преобразования в ссылку. Где-то нужно ещё задать какую-то настройку, свойство, чтоб сообщить о том, чтобы письмо было HTML-ного формата или сам текст письма надо ещё как-то кодировать, и одного SecurityElement.Escape мало? |
|
|
|
|
#9 |
|
Чайный пьяница
|
Попробуйте добавлять ссылку не просто текстом, а в html формате вроде
Код: <a href='http://google.com'>Click to opne google</a>
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
|
#10 |
|
Участник
|
|
|
|
|
|
#11 |
|
Чайный пьяница
|
У меня такой подход работает. Видимо проблема в клиенте, которым вы проверяете почту.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
|
#12 |
|
Участник
|
Цитата:
Но дело в том, что в самом CRM в карточке письма ссылка тоже должна быть кликабельной. Может в параметрах самого SendMailRequest-а какие-то свойства указывать необходимо? |
|
|