Tag Cloud

CRM 2011 (161) CRM 4.0 (144) C# (116) JScript (109) Plugin (92) Registry (90) Techpedia (77) PyS60 (68) WScript (43) Plugin Message (31) Exploit (27) ShellCode (26) FAQ (22) JavaScript (21) Killer Codes (21) Hax (18) VB 6.0 (17) Commands (16) VBScript (16) Quotes (15) Turbo C++ (13) WMI (13) Security (11) 1337 (10) Tutorials (10) Asp.Net (9) Safe Boot (9) Python (8) Interview Questions (6) video (6) Ajax (5) VC++ (5) WebService (5) Workflow (5) Bat (4) Dorks (4) Sql Server (4) Aptitude (3) Picklist (3) Tweak (3) WCF (3) regex (3) Config (2) LINQ (2) PHP (2) Shell (2) Silverlight (2) TSql (2) flowchart (2) serialize (2) ASHX (1) CRM 4.0 Videos (1) Debug (1) FetchXml (1) GAC (1) General (1) Generics (1) HttpWebRequest (1) InputParameters (1) Lookup (1) Offline Plug-ins (1) OutputParameters (1) Plug-in Constructor (1) Protocol (1) RIA (1) Sharepoint (1) Walkthrough (1) Web.config (1) design patterns (1) generic (1) iframe (1) secure config (1) unsecure config (1) url (1)

Pages

Saturday, April 27, 2013

Promote an E-mail Message to Microsoft Dynamics CRM

This sample code shows how to create an e-mail activity instance from the specified e-mail message.



using System;
using CrmSdk;
using Microsoft.Crm.Sdk.Utility;

namespace Microsoft.Crm.Sdk.HowTo.Email
{
public class DeliverPromoteEmail
{
public DeliverPromoteEmail()
{

}

public static bool Run(string crmServerUrl, string orgName)
{
bool success = false;

try
{
// Set up the CRM Service.
CrmService service = Microsoft.Crm.Sdk.Utility.CrmServiceUtility.GetCrmService(crmServerUrl, orgName);
service.PreAuthenticate = true;

#region Setup Data Required for this Sample

// Create a user to send an e-mail message to (To: field).
contact emailContact = new contact();
emailContact.firstname = "Adam";
emailContact.lastname = "Carter";
emailContact.emailaddress1 = "adam.carter@example.com";

// Create the contact.
Guid emailContactId = service.Create(emailContact);

// Get a system user to send the e-mail (From: field)
WhoAmIRequest systemUserRequest = new WhoAmIRequest();
WhoAmIResponse systemUserResponse = service.Execute(systemUserRequest) as WhoAmIResponse;

ColumnSet selectClause = new ColumnSet();
selectClause.Attributes = new string[] { "internalemailaddress" };

// Execute the request.
systemuser emailSender = service.Retrieve(EntityName.systemuser.ToString(), systemUserResponse.UserId, selectClause) as systemuser;

#endregion

// Create the request.
DeliverPromoteEmailRequest deliverEmailRequest = new DeliverPromoteEmailRequest();

// Set all required fields
deliverEmailRequest.Subject = "SDK Sample Email";
deliverEmailRequest.To = emailContact.emailaddress1;
deliverEmailRequest.From = emailSender.internalemailaddress;
deliverEmailRequest.Bcc = String.Empty;
deliverEmailRequest.Cc = String.Empty;
deliverEmailRequest.Importance = "high";
deliverEmailRequest.Body = "This message will create an email activity.";
deliverEmailRequest.MessageId = Guid.NewGuid().ToString();
deliverEmailRequest.SubmittedBy = "";
deliverEmailRequest.ReceivedOn = new CrmDateTime();
deliverEmailRequest.ReceivedOn.Value = DateTime.Now.ToString();

// We will not attach a file to the e-mail, but the Attachments property is required.
deliverEmailRequest.Attachments = new BusinessEntityCollection();
deliverEmailRequest.Attachments.EntityName = EntityName.activitymimeattachment.ToString();
deliverEmailRequest.Attachments.BusinessEntities = new activitymimeattachment[0];

// Execute the request.
DeliverPromoteEmailResponse deliverEmailResponse = (DeliverPromoteEmailResponse)service.Execute(deliverEmailRequest);

#region check success

// Query for the delivered e-mail and verify the status code is "Sent".
ColumnSet deliveredMailColumns = new ColumnSet();
deliveredMailColumns.Attributes = new string[] { "statuscode" };

email deliveredEmail = service.Retrieve(EntityName.email.ToString(), deliverEmailResponse.EmailId, deliveredMailColumns) as email;

if (deliveredEmail.statuscode.Value == EmailStatus.Sent)
{
success = true;
}

#endregion

#region Remove Data Required for this Sample

// Delete the sent e-mail messages.
service.Delete(EntityName.email.ToString(), deliveredEmail.activityid.Value);

// Delete the contacts created for e-mail messages.
service.Delete(EntityName.contact.ToString(), emailContactId);

#endregion
}
catch (System.Web.Services.Protocols.SoapException)
{
// Perform error handling here.
throw;
}
catch (Exception)
{
throw;
}

return success;
}
}
}


Upload an Attachment

The following code example demonstrates how to upload an attachment to a note programmatically.

Example

The following code example shows how to upload attachment to an annotation entity instance.

The code first creates an account entity instance, and then adds an attached note to it with a doc file as an attachment.

   1:   
   2:  using System;
   3:  using System.Collections.Generic;
   4:  using System.Text;
   5:  using System.IO;
   6:  using Microsoft.Crm.Sdk.Utility;
   7:   
   8:  namespace Microsoft.Crm.Sdk.HowTo
   9:  {
  10:      // Use the following Microsoft Dynamics CRM namespaces in the sample.
  11:      using CrmSdk;
  12:   
  13:      class UploadAttachment
  14:      {
  15:          static void Main(string[] args)
  16:          {
  17:              // TODO: Change the server URL and organization to match your 
  18:              //  Microsoft Dynamics CRM Server and Microsoft Dynamics CRM Organization.
  19:              UploadAttachment.Run("http://localhost:5555", "CRM_Organization");
  20:          }
  21:   
  22:          public static bool Run(string crmServerUrl, string orgName)
  23:          {
  24:              #region Setup Data Required for this Sample
  25:   
  26:              bool success = false;
  27:              
  28:              #endregion
  29:   
  30:              try
  31:              {
  32:                  // Set up the CRM Service.
  33:                  CrmService service = CrmServiceUtility.GetCrmService(crmServerUrl, orgName);
  34:                  service.PreAuthenticate = true;
  35:   
  36:                  // Create an account object.
  37:                  account acct = new account();
  38:   
  39:                  // Set the account properties.
  40:                  acct.accountnumber = "CRM102";
  41:                  acct.name = "Fourth Coffee";
  42:                  acct.address1_name = "Primary";
  43:                  acct.address1_line1 = "1234 Elm Street";
  44:                  acct.address1_city = "Redmond";
  45:                  acct.address1_stateorprovince = "WA";
  46:                  acct.address1_postalcode = "54199";
  47:   
  48:                  // Creates an account in the Crm.
  49:                  Guid createdAccountId = service.Create(acct);
  50:   
  51:                  // Now create the annotation object. 
  52:                  annotation note = new annotation();
  53:                  note.notetext = "This is a sample note";
  54:                  note.subject = "Test Subject";
  55:                  note.objectid = new Lookup();
  56:                  note.objectid.type = EntityName.account.ToString();
  57:                  
  58:                  // Sets the note's parent to the newly created account.
  59:                  note.objectid.Value = createdAccountId;
  60:                  note.objecttypecode = new EntityNameReference();
  61:                  note.objecttypecode.Value = EntityName.account.ToString();
  62:   
  63:                  // Create the note.
  64:                  Guid createdNoteId = service.Create(note);
  65:   
  66:                  #region Setup Additional Data Required for this Sample
  67:                  
  68:                  // Now convert the attachment to be uploaded to Base64 string.
  69:                  // This will create a doc file in the current folder of executable.
  70:                  string currentPath = System.Environment.CurrentDirectory.ToString();
  71:                  TextWriter tw = new StreamWriter(currentPath + "\\Crm" + createdNoteId.ToString() + ".doc");
  72:                  // Write a line of text to the file.
  73:                  tw.WriteLine("This document is for testing an attachment upload feature of CRM 4.0.");
  74:                  tw.Close();
  75:                  
  76:                  #endregion
  77:   
  78:                  // Open a file and read the contents into a byte array.
  79:                  FileStream stream = File.OpenRead(currentPath + "\\Crm" + createdNoteId.ToString() + ".doc");
  80:                  byte[] byteData = new byte[stream.Length];
  81:                  stream.Read(byteData, 0, byteData.Length);
  82:                  stream.Close();
  83:   
  84:                  // Encode the data using base64.
  85:                  string encodedData = System.Convert.ToBase64String(byteData);
  86:   
  87:                  // Now update the note.
  88:                  annotation updateNote = new annotation();
  89:                  updateNote.annotationid = new Key();
  90:                  // Set the Note ID that is being attached to.
  91:                  updateNote.annotationid.Value = createdNoteId;
  92:                  updateNote.documentbody = encodedData;
  93:                  updateNote.filename = "Crm" + createdNoteId.ToString() + ".doc";
  94:                  updateNote.mimetype = @"application\ms-word";
  95:                  service.Update(updateNote);
  96:   
  97:                  #region check success
  98:   
  99:                  if (createdNoteId != Guid.Empty)
 100:                  {
 101:                      success = true;
 102:                  }
 103:   
 104:                  #endregion
 105:   
 106:                
 107:                  #region Remove Data Required for this Sample
 108:   
 109:                  if (createdNoteId != Guid.Empty)
 110:                      service.Delete(EntityName.annotation.ToString(), createdNoteId);
 111:                  
 112:                  if(createdAccountId != Guid.Empty)
 113:                      service.Delete(EntityName.account.ToString(), createdAccountId);
 114:   
 115:                  if (File.Exists(currentPath + "\\Crm" + createdNoteId.ToString() + ".doc"))
 116:                      File.Delete(currentPath+"\\Crm" + createdNoteId.ToString() + ".doc");
 117:   
 118:                  #endregion
 119:         
 120:              }
 121:              catch (System.Web.Services.Protocols.SoapException err)
 122:              {
 123:                  string strError = String.Format("An error occurred. The message is {0}.  The detail is {1}.", err.Message, err.Detail.OuterXml.ToString());
 124:              }
 125:              
 126:              
 127:              return success;
 128:          }
 129:      }
 130:  }