No se puede adjuntar un SpemailEventReceiver a mi lista
-
09-12-2019 - |
Pregunta
Estoy tratando de vincular un SpemaileVentReceiver a mi biblioteca de documentos.
En primer lugar, creé el EventReceiver usando el receptor de Visual Studio 2010 ADD -> List Events Events Events -> Biblioteca de documentos -> La lista recibió un mensaje de correo electrónico
Luego escribí el código en la clase generada:
namespace ProvaEmailEvent.EventReceiver1
{
/// <summary>
/// List Email Events
/// </summary>
public class EventReceiver1 : SPEmailEventReceiver
{
/// <summary>
/// The list received an e-mail message.
/// </summary>
public override void EmailReceived(SPList list, SPEmailMessage emailMessage, String receiverData)
{
SPUser currentUser = list.ParentWeb.CurrentUser;
Guid listGUID = list.ID;
SPSecurity.RunWithElevatedPrivileges(() =>
{
using (SPSite sito = new SPSite(list.ParentWebUrl))
{
using (SPWeb web = sito.OpenWeb())
{
foreach (SPEmailAttachment attach in emailMessage.Attachments)
{
SPList elevatedList = web.Lists[listGUID];
SPFile file = elevatedList.RootFolder.Files.Add(attach.FileName, attach.ContentStream);
SPListItem item = file.Item;
item.BreakRoleInheritance(false);
item.SystemUpdate();
AssignPermissionsToItem(item, currentUser, SPRoleType.Contributor);
item.SystemUpdate();
}
}
}
});
}
public static void AssignPermissionsToItem(SPListItem item, SPPrincipal obj, SPRoleType roleType)
{
SPRoleAssignment roleAssignment = new SPRoleAssignment(obj);
SPRoleDefinition roleDefinition = item.Web.RoleDefinitions.GetByType(roleType);
roleAssignment.RoleDefinitionBindings.Add(roleDefinition);
item.RoleAssignments.Add(roleAssignment);
}
El archivo Elements.xml contiene:
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers ListTemplateId="101">
<Receiver>
<Name>EventReceiver1EmailReceived</Name>
<Type>EmailReceived</Type>
<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
<Class>ProvaEmailEvent.EventReceiver1.EventReceiver1</Class>
<SequenceNumber>10000</SequenceNumber>
</Receiver>
</Receivers>
</Elements>
En el registro de SharePoint encontré mensajes como este (cuando se envía un correo electrónico):
Documents _ Microsoft.SharePoint.Utilities.SPEmailMessage __ 18fd777b-039b-402b-ad8a-1e0a5e534d88
The user does not exist or is not unique
Warning An error occurred while processing the incoming e-mail file C:\inetpub\mailroot\Drop\8d8bea9e01cd963600000007.eml. The error was: Object reference not set to an instance of an object.. 18fd777b-039b-402b-ad8a-1e0a5e534d88
The Incoming E-Mail service has completed a batch. The elapsed time was 00:00:00.0156250. The service processed 1 message(s) in total. Errors occurred processing 1 message(s): Message ID: <SP2010DEVNsErKkSoii00000007@SP2010DEV.virtualsp.dev>
Intenté también con código en blanco o con una sola instrucción que escribió algo en los registros ...
¿Alguna sugerencia?
Solución
Puede ser que tenga una excepción de nullPointer.
Intentaría depurar el receptor, como este:
- despliegue su solución.
- Reinicie el servicio de temporizador (de servicios).
- en vs Haga clic en Herramientas -> adjuntar al proceso .
- Haga clic en Actualizar
- Encuentra el llamado owstimer.exe y adjunte a esto.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a sharepoint.stackexchange