Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用EWS获取电子邮件正文?_C#_Outlook_Exchangewebservices - Fatal编程技术网

C# 如何使用EWS获取电子邮件正文?

C# 如何使用EWS获取电子邮件正文?,c#,outlook,exchangewebservices,C#,Outlook,Exchangewebservices,我收到Outlook收件箱中的电子邮件,并根据过滤器(发件人、主题、邮件)显示在电子邮件搜索屏幕上 除了电子邮件的正文外,我可以获取所有内容: OutlookRepository.cs: public FindItemsResults<Item> GetEmails(string loginUsuario, string de, string assunto, string conteudo, WellKnownFolderName pasta = WellKnownFolderNa

我收到Outlook收件箱中的电子邮件,并根据过滤器(发件人、主题、邮件)显示在电子邮件搜索屏幕上

除了电子邮件的正文外,我可以获取所有内容:

OutlookRepository.cs:

public FindItemsResults<Item> GetEmails(string loginUsuario, string de, string assunto, string conteudo, WellKnownFolderName pasta = WellKnownFolderName.Inbox)
        {
            ExchangeService service = GetExchangeService(loginUsuario);

            var inbox = Folder.Bind(service, WellKnownFolderName.Inbox);

            SearchFilter sf = null;

            // Search by Sender
            if (!string.IsNullOrWhiteSpace(de))
                sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.ContainsSubstring(EmailMessageSchema.From, de));

            // Search by Subject
            if (!string.IsNullOrWhiteSpace(assunto))
                sf = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, new SearchFilter.ContainsSubstring(EmailMessageSchema.Subject, assunto));

            // Search by Body
            if (!string.IsNullOrWhiteSpace(conteudo))
                sf = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, new SearchFilter.ContainsSubstring(EmailMessageSchema.Body, conteudo));

            var view = new ItemView(100);

            var emails = service.FindItems(pasta, sf, view);

            return emails;
        }
public JsonResult PesquisarEmails(string de, string assunto, string conteudo)
        {
            FindItemsResults<Item> emails = ServiceFactory.GetService<IComunicacaoService>(true).RecuperarEmails(UsuarioAutenticado.Funcionario.Login, de, assunto, conteudo);

            var lista = new List<EmailFormatado>();

            foreach (Item email in emails)
            {
                lista.Add(new EmailFormatado()
                { 
                    DataEmail = email.DateTimeReceived.FormatarDataCompleta(),
                    Remetente = (email as EmailMessage).From.Address,
                    AssuntoEmail = email.Subject,
                    Descricao = email.TextBody
            });
            }

            return Json(lista, JsonRequestBehavior.AllowGet);
        }
public FindItemsResults GetEmails(字符串loginUsuario、字符串de、字符串assunto、字符串conteudo、WellKnownFolderName=WellKnownFolderName.Inbox)
{
ExchangeService服务=GetExchangeService(loginUsuario);
var inbox=Folder.Bind(服务,WellKnownFolderName.inbox);
SearchFilter sf=null;
//按发件人搜索
如果(!string.IsNullOrWhiteSpace(de))
sf=新的SearchFilter.SearchFilterCollection(LogicalOperator.And,新的SearchFilter.ContainsSubstring(EmailMessageSchema.From,de));
//按主题搜索
如果(!string.IsNullOrWhiteSpace(assunto))
sf=新的SearchFilter.SearchFilterCollection(LogicalOperator.Or,新的SearchFilter.ContainsSubstring(EmailMessageSchema.Subject,Assto));
//尸体搜查
如果(!string.IsNullOrWhiteSpace(conteudo))
sf=新的SearchFilter.SearchFilterCollection(LogicalOperator.Or,新的SearchFilter.ContainsSubstring(EmailMessageSchema.Body,conteudo));
var视图=新项目视图(100);
var emails=service.FindItems(意大利面、sf、视图);
回复邮件;
}
返回“emails”时,Body抛出异常:Body=”(new System.Linq.SystemCore\u EnumerableDebugView(emails.Items[0])。Body'抛出类型为“Microsoft.Exchange.WebServices.Data.ServiceObjectPropertyException”的异常。

EmailController.cs:

public FindItemsResults<Item> GetEmails(string loginUsuario, string de, string assunto, string conteudo, WellKnownFolderName pasta = WellKnownFolderName.Inbox)
        {
            ExchangeService service = GetExchangeService(loginUsuario);

            var inbox = Folder.Bind(service, WellKnownFolderName.Inbox);

            SearchFilter sf = null;

            // Search by Sender
            if (!string.IsNullOrWhiteSpace(de))
                sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.ContainsSubstring(EmailMessageSchema.From, de));

            // Search by Subject
            if (!string.IsNullOrWhiteSpace(assunto))
                sf = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, new SearchFilter.ContainsSubstring(EmailMessageSchema.Subject, assunto));

            // Search by Body
            if (!string.IsNullOrWhiteSpace(conteudo))
                sf = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, new SearchFilter.ContainsSubstring(EmailMessageSchema.Body, conteudo));

            var view = new ItemView(100);

            var emails = service.FindItems(pasta, sf, view);

            return emails;
        }
public JsonResult PesquisarEmails(string de, string assunto, string conteudo)
        {
            FindItemsResults<Item> emails = ServiceFactory.GetService<IComunicacaoService>(true).RecuperarEmails(UsuarioAutenticado.Funcionario.Login, de, assunto, conteudo);

            var lista = new List<EmailFormatado>();

            foreach (Item email in emails)
            {
                lista.Add(new EmailFormatado()
                { 
                    DataEmail = email.DateTimeReceived.FormatarDataCompleta(),
                    Remetente = (email as EmailMessage).From.Address,
                    AssuntoEmail = email.Subject,
                    Descricao = email.TextBody
            });
            }

            return Json(lista, JsonRequestBehavior.AllowGet);
        }
public JsonResult PesquisarEmails(字符串de、字符串assunto、字符串conteudo)
{
FindItemsResults emails=ServiceFactory.GetService(true).RecuroperaRemails(通常为autenticado.functionario.Login、de、assto、conteudo);
var lista=新列表();
foreach(邮件中的邮件)
{
添加(新的EmailFormatado()
{ 
DataEmail=email.DateTimeReceived.FormataDataCompleta(),
提醒=(以EmailMessage的形式发送电子邮件)。From.Address,
AssuntoEmail=email.Subject,
descripcao=email.TextBody
});
}
返回Json(lista,JsonRequestBehavior.AllowGet);
}
尝试使用“email.TextBody”和“email.Body”,但引发了一个异常: email.TextBody='email.TextBody'引发了类型为'Microsoft.Exchange.WebServices.Data.ServiceObjectPropertyException'的异常。


有什么帮助吗?

findItem操作只返回项目属性的一个子集,而不会返回正文(from.address也不会返回)。因此,您需要在代码中加载每个项目(从性能角度来看,这是个坏主意)或LoadPropertiesFromItems,例如

service.LoadPropertiesForItems(emails, PropertySet.FirstClassProperties);

findItem操作只返回项属性的子集,而不会返回正文(from.address也不会返回)。因此,您需要在代码中加载每个项(从性能角度来看这是个坏主意)或加载来自项的属性,例如

service.LoadPropertiesForItems(emails, PropertySet.FirstClassProperties);