Principales respuestas
Tmer Job Mail

Pregunta
-
Hola a todos buscando una solución a un desarrollo que tengo pendiente de encontré la
respuesta a todas mis dudas les resumo. Con un timer Job quiero enviar ciertos correos en un tiempo específico Juan
Carlos Gonzalez en post pasados planteo lo siguiente:
Tienes varias opciones:
•Usar una acción o actividad que te permita esperar hasta una fecha concreta o un cierto período de tiempo...en SharePoint Designer tienes las siguientes acciones para ello: Detener durante, Detener hasta fecha y Esperar a que el campo cambie en el elemento actual.
•Lo mismo, pero mediante un flujo de trabajo creado con Visual Studio...ten en cuenta que los flujos se apoyan en WF (Workflow Foundation) que te aporta todo lo necesario para modelar el escenario que planteas.
•O bien hacer un Timer Job que se ejecute cada cierto tiempo, se recorra la lista de tareas y genere los avisos.
SaludosComienza con este que te dice como usar las actividades que te comentaba de SharePoint Designer:
http://geeks.ms/blogs/ciin/archive/2010/12/29/sharepoint-2010-como-crear-un-casi-timer-job-con-cero-desarrollo.aspxPropuesto como respuesta Juan Carlos González
Con el Work
flow funciona perfecto pero necesito crearlo con un timer job <o:p></o:p>gracias de ante mano <o:p></o:p>
Araujopa<o:p></o:p>
Respuestas
Todas las respuestas
-
Hola Araujopa!!
Esta cuestion que planteas ya la comente en el siguiente post de crear un correo desde Sharepoint .
En el te envio un link en la que explica como te tienes que crear un Timer Job desde Codigo y posteriormente los pasos para enviar un mail por código si lo unes tienes la solucion.
Cualquier duda ya comentas... Pero una pregunta porque no es valido la solución que te aporta Juan Carlos?
-
-
Hola la verdad no entiendo nada de esto soy nuevo con este tema de SharePoint Ayud Adrian
me explico que es lo que deo hacer
te copio el requerimiento
- Come up with 2 html templates of the email which will go out to the sponsors.This email template will have the name of the contract as a hyperlink along with the keydate.
- The first template is the email which goes out every month or every few days. The email will be divided into sections like next 5 days, next 15 days, next 30 days etc.
- The second template is the email which goes out to the sponsor 5 days before the key date of a contract. The email will consolidate all the contracts that come up for renewal 5 days later.
- Timer job in 2010 which will read the contract data using the SharePoint web services in 2007 to generate these emails.
- Editado ARAUJOPA miércoles, 12 de septiembre de 2012 15:25
- Come up with 2 html templates of the email which will go out to the sponsors.This email template will have the name of the contract as a hyperlink along with the keydate.
-
Ok, Pero aun asi hay cosas que no entiendo porque el Timer Job lo vas a implementar en 2010 si los datos los vas a obtener de un Sharepoint 2007, lo mas logico seria implementar el Job en 2007 y de esa forma te evitas el consumo del WebService y te puedes evitar una fuente de posibles poblemas.
Para el desarrollo de este Timer Jobe aparte de unos conocimientos sobre Sharepoint te hara falta conocimientos sobre .Net ya sea C# (preferiblemente) o Visual Basic. Si es asi lo que quieres comentamelo y te intento guiar en una solución aproximada.
Saludos.
-
-
-
En primer lugar te quedas un proyecto de sharepoint en blanco, yo por tema de estructura me creo una carpeta Job donde le añado una clase TimerJob.cs como la siguiente
using Microsoft.SharePoint.Administration; using Jobs.Helpers; using System; using Microsoft.SharePoint; using Jobs.Process; namespace Jobs.Jobs { class TimerJob : SPJobDefinition { public SyncrhoMovistar() : base() { } public TimerJob(string jobName, SPService service, SPServer server, SPJobLockType targetType) : base(jobName, service, server, targetType) { } public TimerJob(string jobName, SPWebApplication webApplication) : base(jobName, webApplication, null, SPJobLockType.ContentDatabase) { this.Title = "Job de enviar mail"; } public override void Execute(Guid contentDbId) { using (SPSite site = new SPSite("http://" + ApplicationDirectory.Common.SiteUrl)) { JobProcess.ActivateJob(site); } } } }
El siguiente proceso lo que hago es me creo otra clase de tipo JobProcess y me creare una función ActivateJob en la que añadire la funcionalidad que quiera (es decir en tu caso realizare las busquedas en el WebService de MOSS 2007 y enviare el mail. El código para enviar el Mail en Sharepoint2010 te puede valer el siguiente:
StringDictionary headers = headers = new StringDictionary(); string cabecera = ""; string footer = ""; string body = ""; Guid idSitio = SPContext.Current.Site.ID; string bodyText = ""; bool res = false; headers.Add("to", strDireccionDestino); headers.Add("from", "no_reply@adri.es"); headers.Add("content-type", "text/html"); headers.Add("subject", "TEMAA DEL MENSAJE "); body += "<div>Cuerpo del mensaje</div>"; mySite = new SPSite(idSitio); myWeb = mySite.OpenWeb(SPContext.Current.Web.ID); bodyText = cabecera + body + footer; res = false; res = SPUtility.SendEmail(myWeb, headers, bodyText); log.Debug("Correo enviado:" + res.ToString()); if (res) { Mensaje(texto_correcto); } else { Mensaje(texto_incorrecto); }
Despues a continuación te hace falta que añadir un evento a la Feature que se hace de la siguiente forma:
Una vez añadio el receptor de eventos tienes que descomentar la función que es cuando se active la Feature y cuando se desactive y tienes que poner un codigo tal que asi:
public override void FeatureActivated(SPFeatureReceiverProperties properties) { SPSite site = properties.Feature.Parent as SPSite; TaskJob taskLoggerJob = new TaskJob(ApplicationDirectory.Job.JobName, site.WebApplication); SPDailySchedule schedule = new SPDailySchedule(); schedule.BeginHour = 20; schedule.EndHour = 21; taskLoggerJob.Schedule = schedule; taskLoggerJob.Properties.Add("site", site.Url); taskLoggerJob.Update();
En este caso he programado que el Job se ejecute todos los dias a las 20:00 esto posteriormente lo puedes modificar desde la administración central.
Una vez realizado esto despliegas la Feature sobre el sitio en Sharepoint y activas esta caracteristica. Y si todo va bien ya tienes el Job funcionando.
Como consejo yo antes de añadirlo al Job llamo a la función que me he implementado desde un WebPart y compruebo su funcionamiento y a continuación cuando ya lo tengo depurado lo añado al Timer Job,.
Espero haberte servido de ayuda.
- Propuesto como respuesta Juan Carlos GonzálezMVP jueves, 13 de septiembre de 2012 15:04
-
-
-
-