none
[15" Online] Enviar anexo por email RRS feed

  • Pergunta

  • Prezados, estou precisando enviar um anexo de uma anotação por e-mail apartir de um workflow que será ativado na alteração de status, alguém já conseguiu fazer isso ?


    • Editado Thiago_Lima quarta-feira, 2 de setembro de 2015 15:20
    quarta-feira, 2 de setembro de 2015 15:07

Respostas

  • Boas Thiago,

    Mas o que é o SourceTrialRequestID, na linha:

    _QueryNotes.Criteria.AddCondition(new ConditionExpression("objectid", ConditionOperator.Equal, SourceTrialRequestID));

    Coloque antes e pode apagar a declaração da variável SourceTrialRequestID:

    _QueryNotes.Criteria.AddCondition(new ConditionExpression("objectid", ConditionOperator.Equal, SourceAccountID));

    Tive a ver no artigo e ele tem igual ao que colocastes, deve ter sido um erro por parte do autor.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.



    Pedro Azevedo Crm Specialist 4.0\2011

    • Sugerido como Resposta Azevedo PedroMVP quarta-feira, 9 de setembro de 2015 13:54
    • Marcado como Resposta Thiago_Lima quinta-feira, 10 de setembro de 2015 12:31
    quarta-feira, 9 de setembro de 2015 13:54
  • Ola Pedro, sim estou precisando enviar o anexo da entidade Note como está propondo este artigo;

    https://community.dynamics.com/crm/b/mahenderpal/archive/2014/01/20/sending-email-with-entity-attachment-from-notes

    mas não sei se este codigo ai irá funcionar no 2015, poderia me ajudar nesse sentido ?


    • Editado Thiago_Lima sexta-feira, 4 de setembro de 2015 12:21
    • Marcado como Resposta Thiago_Lima quinta-feira, 10 de setembro de 2015 12:31
    sexta-feira, 4 de setembro de 2015 12:21
  • Boas Thiago,

    Agora parece que o problema está na configuração da criação do email. O que estás a colocar no De: (sender) do email? Ele está a dizer que estás a colocar um tipo de sender não é suportado.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    • Sugerido como Resposta Azevedo PedroMVP quinta-feira, 10 de setembro de 2015 11:17
    • Marcado como Resposta Thiago_Lima quinta-feira, 10 de setembro de 2015 12:31
    quinta-feira, 10 de setembro de 2015 11:17

Todas as Respostas

  • Boas Thiago,

    É possível se recorrermos a uma atividade customizada de workflow, dá para você? Mas o que é que você quer fazer mesmo. Tem uma anotação com um ficheiro e quer enviar um email com esse ficheiro, é isso?

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    sexta-feira, 4 de setembro de 2015 08:36
  • Ola Pedro, sim estou precisando enviar o anexo da entidade Note como está propondo este artigo;

    https://community.dynamics.com/crm/b/mahenderpal/archive/2014/01/20/sending-email-with-entity-attachment-from-notes

    mas não sei se este codigo ai irá funcionar no 2015, poderia me ajudar nesse sentido ?


    • Editado Thiago_Lima sexta-feira, 4 de setembro de 2015 12:21
    • Marcado como Resposta Thiago_Lima quinta-feira, 10 de setembro de 2015 12:31
    sexta-feira, 4 de setembro de 2015 12:21
  • Boas Thiago,

    É mesmo aquilo do site, funciona perfeitamente no CRM 2015. Dentro do Workflow "basta" chamar aquela atividade de workflow. No caso do artigo passas o email, mas podes criar e enviar o email dentro da atividade de workflow. No artigo ele está a ir buscar a entidade Cliente.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    • Sugerido como Resposta Azevedo PedroMVP sexta-feira, 4 de setembro de 2015 14:37
    sexta-feira, 4 de setembro de 2015 14:37
  • Ola Pedro, consegui rodar o custom workflow de acordo com o que o tutorial mostrou, porem ele está me gerando um erro na execução, poderia me ajudar a identificar a causa ?

    sábado, 5 de setembro de 2015 02:13
  • Boas Thiago,

    O código está igual ao do artigo? Estás a passar o email como argumento a atividade de workflow?

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    terça-feira, 8 de setembro de 2015 08:37
  • Ola Pedro

    sim, segue código;

    using System.Text;
    using System.Threading.Tasks;
    using System;
    using Microsoft.Xrm.Sdk;
    using Microsoft.Xrm.Sdk.Messages;
    using Microsoft.Xrm.Sdk.Query;
    using Microsoft.Xrm.Sdk.Workflow;
    using System.Collections.Generic;
    using System.Net;
    using System.Linq;
    using System.Activities;
    using Microsoft.Crm.Sdk.Messages;
    
    
    namespace EmailPlugin.Workflow
    {
        public class SendEmailWithAttachement : CodeActivity
        {
            //define output variable
            [Input("SourceEmail")]
            [ReferenceTarget("email")]
            public InArgument<EntityReference> SourceEmail
            {
                get;
                set;
            }
            protected override void Execute(CodeActivityContext executionContext)
            {
                // Get workflow context
                IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();
                //Create service factory
                IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
                // Create Organization service
                IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
                // Get the target entity from the context
                Entity AccountID = (Entity)service.Retrieve("account", context.PrimaryEntityId, new ColumnSet(new string[] { "accountid" }));
                AddAttachmentToEmailRecord(service, AccountID.Id, SourceEmail.Get<EntityReference>(executionContext));
            }
            private void AddAttachmentToEmailRecord(IOrganizationService service, Guid SourceAccountID, EntityReference SourceEmailID)
            {
                //create email object
                Entity _ResultEntity = service.Retrieve("email", SourceEmailID.Id, new ColumnSet(true));
                QueryExpression _QueryNotes = new QueryExpression("annotation");
                _QueryNotes.ColumnSet = new ColumnSet(new string[] { "subject", "mimetype", "filename", "documentbody" });
                _QueryNotes.Criteria = new FilterExpression();
                _QueryNotes.Criteria.FilterOperator = LogicalOperator.And;
                _QueryNotes.Criteria.AddCondition(new ConditionExpression("objectid", ConditionOperator.Equal, SourceTrialRequestID));
                EntityCollection _MimeCollection = service.RetrieveMultiple(_QueryNotes);
                if (_MimeCollection.Entities.Count > 0)
                { //we need to fetch first attachment
                    Entity _NotesAttachment = _MimeCollection.Entities.First();
                    //Create email attachment
                    Entity _EmailAttachment = new Entity("activitymimeattachment");
                    if (_NotesAttachment.Contains("subject")) _EmailAttachment["subject"] = _NotesAttachment.GetAttributeValue<string>("subject");
                    _EmailAttachment["objectid"] = new EntityReference("email", _ResultEntity.Id);
                    _EmailAttachment["objecttypecode"] = "email";
                    if (_NotesAttachment.Contains("filename")) _EmailAttachment["filename"] = _NotesAttachment.GetAttributeValue<string>("filename");
                    if (_NotesAttachment.Contains("documentbody")) _EmailAttachment["body"] = _NotesAttachment.GetAttributeValue<string>("documentbody");
                    if (_NotesAttachment.Contains("mimetype")) _EmailAttachment["mimetype"] = _NotesAttachment.GetAttributeValue<string>("mimetype");
                    service.Create(_EmailAttachment);
                }
                // Sending email
                SendEmailRequest SendEmail = new SendEmailRequest();
                SendEmail.EmailId = _ResultEntity.Id;
                SendEmail.TrackingToken = "";
                SendEmail.IssueSend = true;
                SendEmailResponse res = (SendEmailResponse)service.Execute(SendEmail);
            }
    
            public System.Collections.ICollection SourceTrialRequestID { get; set; }
        }
    }
    

    terça-feira, 8 de setembro de 2015 12:17
  • Boas Thiago,

    Mas o que é o SourceTrialRequestID, na linha:

    _QueryNotes.Criteria.AddCondition(new ConditionExpression("objectid", ConditionOperator.Equal, SourceTrialRequestID));

    Coloque antes e pode apagar a declaração da variável SourceTrialRequestID:

    _QueryNotes.Criteria.AddCondition(new ConditionExpression("objectid", ConditionOperator.Equal, SourceAccountID));

    Tive a ver no artigo e ele tem igual ao que colocastes, deve ter sido um erro por parte do autor.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.



    Pedro Azevedo Crm Specialist 4.0\2011

    • Sugerido como Resposta Azevedo PedroMVP quarta-feira, 9 de setembro de 2015 13:54
    • Marcado como Resposta Thiago_Lima quinta-feira, 10 de setembro de 2015 12:31
    quarta-feira, 9 de setembro de 2015 13:54
  • Boas Pedro !

    Fiz a correção e me foi gerado outro erro, fiz o teste com e sem anexo e em ambos os casos foi gerado o mesmo erro

    quarta-feira, 9 de setembro de 2015 18:23
  • Boas Thiago,

    Agora parece que o problema está na configuração da criação do email. O que estás a colocar no De: (sender) do email? Ele está a dizer que estás a colocar um tipo de sender não é suportado.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    • Sugerido como Resposta Azevedo PedroMVP quinta-feira, 10 de setembro de 2015 11:17
    • Marcado como Resposta Thiago_Lima quinta-feira, 10 de setembro de 2015 12:31
    quinta-feira, 10 de setembro de 2015 11:17
  • Boas pedro, funcionou perfeitamente, realmente o Sender estava como um Contato que não estava habilitado para enviar email, fiz a alteração para o meu proprio usuario do sistema e ele funcionou

    Segue print do procedimento funcionando

    quinta-feira, 10 de setembro de 2015 12:33