Mostrando entradas con la etiqueta Email. Mostrar todas las entradas
Mostrando entradas con la etiqueta Email. Mostrar todas las entradas

domingo, 7 de septiembre de 2014

Enviar un mail desde javascript en Sharepoint 2013 on-premise mediante jquery

Sharepoint 2013 tiene una API llamada /_api/SP.Utilities.Utility.SendEmail que permite llamarla desde cualquier aplicativo, ya que es un servicio REST. Ej: desde un workflow en Sharepoint Designer 2013, aplicación web (java/php/etc).

Reemplaza las secciones en rojo. Es importante que el TO tiene que ser un usuario de AD, porque de otra manera fallará el envio. La prueba se realizó sobre un Sharepoint 2013 con el acumulativo de junio.


    var urlTemplate = siteurl + "/_api/SP.Utilities.Utility.SendEmail";
    var siteurl = _spPageContextInfo.webServerRelativeUrl;
    var urlTemplate = siteurl + "/_api/SP.Utilities.Utility.SendEmail";
    $.ajax({
       contentType: 'application/json',
       url: urlTemplate,
       type: "POST",
       data: JSON.stringify({
           'properties': {
               '__metadata': { 'type': 'SP.Utilities.EmailProperties' },
               'From': "mail@mail.com",
               'To': { 'results': ["DOMINIO\\usuarioAD"] },
               'Body': "Acá va el código del body",
               'Subject': "Prueba desde javascript"
           }
       }
     ),
       headers: {
           "Accept": "application/json;odata=verbose",
           "content-type": "application/json;odata=verbose",
           "X-RequestDigest": $("#__REQUESTDIGEST").val()
       },
       success: function (data) {
          alert("Se envió el mail correctamente");
       },
       error: function (err) {
           alert(err.responseText);
           debugger;
       }
    });

Cree una página y agregué un script edito, que linkea a la librería de jquery y agregué el código de arriba. Al publicar la página me aparece lo siguiente.

image

Si reviso mi outlook, veo lo siguiente.

image

image

En el caso que quieras enviar a un grupo, revisa el siguiente KB:

http://support.microsoft.com/kb/2839070/es

lunes, 17 de diciembre de 2012

Tips Info #86 Sharepoint 2010

1-Contenido condicional para usuarios anónimos y logueados

Una posibilidad es usar el control SPSecurityControl que permite mostrar contenido condicional para los usuarios dependiendo de sus permisos.

Este control no permite mostrar contenido sólo para usuarios anónimos.Para ello utilizaremos el control LoginView.

<asp:LoginView runat="server">
     <AnonymousTemplate>
        <span style="font-family: Arial; font-size: 10pt;">Bienvenido, Invitado
            <asp:LoginStatus ID="LoginStatusUsuarioAnonimo" runat="Server" />
        </span>
    </AnonymousTemplate>
    <LoggedInTemplate>
        Bienvenido,
        <asp:LoginName ID="LoginNameUsuarioLogueado" runat="Server" />
        <asp:LoginStatus ID="LoginStatusUsuarioLogueado" runat="Server" />
    </LoggedInTemplate>
</asp:LoginView>

El control LoginName mostrará el nombre del usuario logueado, y en el caso de usuarios anónimos no mostrará nada.

El control LoginStatus mostrará un link de Log Out para usuarios autenticados y un link de Log In para usuarios anónimos.

2-Formula para validar un email dentro de una columna de Sharepoint

Dos posibles fórmulas:

FORMULA 1

=(LEN(LEFT([Email],FIND("@",[Email])-1))>0)
+(LEN(RIGHT([Email],LEN([Email])-FIND(".",[Email],FIND("@",[Email]))))>0)
+(LEN(MID([Email],FIND("@",[Email])+1,FIND(".",[Email],FIND("@",[Email]))-FIND("@",[Email])-1))>0)
+(ISERROR(FIND(" ",[Email]))=TRUE)
=4

FORMULA 2

=IF(
  OR(
    ISERROR(FIND("@",Email)),
    ISERROR(FIND(".",Email,FIND("@",Email)))
  ),
  FALSE,
  AND(
    LEN(LEFT(Email,FIND("@",Email)-1))>0,
    LEN(RIGHT(Email,LEN(Email)-FIND(".",Email,FIND("@",Email))))>0,
    LEN(MID(Email,FIND("@",Email)+1,FIND(".",Email,FIND("@",Email))-FIND("@",Email)-1))>0,
    (ISERROR(FIND(" ",TRIM(Email))))
  )
)

3-Renombrar web application mediante powershell

$wapp = Get-SPWebApplication "SharePoint - 80"
$wapp.Name = "Intranet -80"
$wapp.Update()
Para verificar si se actualizó de forma correcta ejecute lo siguiente:
Get-SPWebApplication "Intranet -80"

4-Error al utilizar server object: The web server process that was being debugged has been terminated by Internet Information Services (IIS). This can be avoided by configuring Application Pool ping setting in IIS. See help for further details.

Por ejemplo al utilizar la siguiente línea de código SPListItemCollection collListItemsSrc = oList.GetItems(oView) , nos puede lanzar el error previamente definido.
Esto se debe a que el tamaño de la configuración “The maximum unresponsive ping time” es insuficiente. El default es de 90 segundos. Puedes aumentar el tiempo o deshabilitar el Ping Enabled.
image

5-Propiedad AllowEveryoneViewItems  de las librerias/listas


Esta propiedad permite acceder de forma directa a los documentos de una librería o a los attachments de una lista. Esta propiedad sólo funciona cuando los usuarios navegan directamente a un archivo a través del navegador, y no tiene ningún efecto sobre el resto de la interfaz de usuario o el modelo de objetos.


Esta propiedad es útil para trabajar con usuarios anónimos.


$web = Get-SPWeb -Identity http://url_sitio
$list = $web.Lists.TryGetList("titulo lista");
$list.AllowEveryoneViewItems = $true
$list.Update()

sábado, 28 de julio de 2012

Links útiles #46 Sharepoint 2010

1-Comparación de herramientas de ULS log viewer

http://www.jeremytaylor.net/2012/07/14/sharepoint-uls-log-viewer-tool-comparison-and-verdict/

2-BDC y ORACLE

http://msdn.microsoft.com/en-us/library/ff464424.aspx

http://jmhogua.blogspot.com.ar/2010/10/conectando-oracle-con-sharepoint.html

http://www.c-sharpcorner.com/uploadfile/anavijai/integrating-oracle-into-sharepoint-2010-using-business-data-connectivity-model/

http://sharepointjournals.wordpress.com/2011/06/06/business-connectivity-services-bcs-with-oracle-using-visual-studio-2010-part-1/

http://www.c-sharpcorner.com/uploadfile/anavijai/how-to-connect-to-the-oracle-database-using-business-connectivity-services-bcs-in-sharepoint-2010/

3-Configurar la Búsqueda federada en Sharepoint 2010

http://blog.techgalaxy.net/archives/3599

http://technet.microsoft.com/en-us/sharepoint//ff727944.aspx

4-Incoming Email en Sharepoint 2010

http://jmhogua.blogspot.com.ar/2012/07/creando-entradas-de-blog-en-sharepoint.html

5-Deployar una solution sin tener perdida de servicio en Sharepoint 2010

http://blog.ithinksharepoint.com/2012/07/16/deploying-sharepoint-wsp-solutions-without-downtime/

6-Distintos tipos de carga de balanceo (load balancing)

https://devcentral.f5.com/weblogs/dmacvittie/archive/2009/03/31/intro-to-load-balancing-for-developers-ndash-the-algorithms.aspx

7-Sharepoint Oject Model: queries data

http://extreme-sharepoint.com/2012/07/17/data-access-via-caml-queries/

8-Crear un web part asincrónico Sharepoint 2010

http://sadomovalex.blogspot.com.ar/2012/07/create-asynchronous-web-parts-for.html

9-Migrar aplicaciones web de autentificación classic a claims

http://geeks.ms/blogs/marchena/archive/2012/07/20/migrando-aplicaciones-web-de-modo-cl-225-sico-de-autenticaci-243-n-a-modo-basados-en-claims.aspx

10-Infopath y Sandboxed solutions

http://msdn.microsoft.com/en-us/library/aa946986

http://msdn.microsoft.com/en-us/library/office/ee526360.aspx

http://www.slideshare.net/aymanelhattab/sharepoint-sandboxed-solutions-and-infopath-teched-middle-east

sábado, 17 de marzo de 2012

Tips #8–Sharepoint 2010

1-El menú Site actions no aparece!!!

Agregar la url del site como trusted site

Ejecutar el IE como administrador.

2-Script para mostrat todos los administradores de site collection

   1:  $sitioRoot = New-Object Microsoft.SharePoint.SPSite($sitioUrl)
   2:  $spWebApp = $sitioRoot.WebApplication
   3:   
   4:  foreach($site in $spWebApp.Sites)
   5:  {
   6:      foreach($siteAdmin in $site.RootWeb.SiteAdministrators)
   7:      {
   8:          Write-Host "$($siteAdmin.ParentWeb.Url) - $($siteAdmin.DisplayName)"
   9:      }
  10:      $site.Dispose()
  11:  }
  12:  $sitioRoot.Dispose()



3-Recorrer todos los site collections y subsitios



   1:  function RecorrerSite() {
   2:      param([Microsoft.SharePoint.SPWeb]$SiteIdentity)
   3:   
   4:      Write-Output "Sitio: $($SiteIdentity.Url)"
   5:      
   6:      if($SiteIdentity.Webs.Count -gt 0)
   7:      {
   8:          foreach($subSitio in $SiteIdentity.Webs)
   9:          {
  10:              RecorrerSite -SiteIdentity $subSitio
  11:          }
  12:      }
  13:  }
  14:   
  15:  $servicioWebApplication = (Get-SPFarm).services |
  16:   ? {$_.typename -eq "Microsoft SharePoint Foundation Web Application"}
  17:   
  18:  foreach($webApp in $servicioWebApplication.WebApplications)
  19:  {
  20:      Write-Output "Web Application: $($webApp.name)"
  21:      foreach($siteColl in $webApp.Sites)
  22:      {
  23:          Write-Output "Colleccion de sitio: $($siteColl.Url)"
  24:          RecorrerSite -SiteIdentity $($siteColl.RootWeb)
  25:      }
  26:  } 



4-Clase ContentIterator para procesar una lista de gran tamaño



SharePoint Server proporciona un API,ContentIterator, para ayudar con el acceso a más de 5.000 elementos en una lista larga y no chocar con el throttling de la lista (SPQueryThrottleException). ContentIterator permite segmentar la consulta para el procesamiento de manera única. Considere el uso de esta capacidad si es necesario para procesar un gran número de elementos que pueden exceder el throttling de una lista.


 


   1:  static int exceptions = 0;
   2:  static int items = 0;
   3:   
   4:  protected void OnTestContentIterator(object sender, EventArgs args)
   5:  {
   6:      items = 0;
   7:      exceptions = 0;
   8:      string query1 = @"<View>
   9:          <Query>
  10:              <Where>
  11:                  <And>
  12:                      <BeginsWith>
  13:                          <FieldRef Name='SKU' />
  14:                          <Value Type='Text'>S</Value>
  15:                      </BeginsWith>
  16:                  </And>
  17:              </Where>
  18:          </Query>
  19:      </View>";
  20:   
  21:      ContentIterator iterator = new ContentIterator();
  22:      SPQuery listQuery = new SPQuery();
  23:      listQuery.Query = query1;
  24:      SPList list = SPContext.Current.Web.Lists["Parts"];
  25:      iterator.ProcessListItems(list,
  26:          listQuery,
  27:          ProcessItem,
  28:          ProcessError
  29:      );
  30:  }
  31:   
  32:  public    bool ProcessError(SPListItem item, Exception e) 
  33:  { 
  34:      // process the error
  35:      exceptions++; 
  36:      return true; 
  37:  }
  38:  public void ProcessItem(SPListItem item)
  39:  {
  40:      items++;
  41:      //process the item.
  42:  }



5-Constantes de los estados de workflows




  • Status: Value
  • Not Started: 0
  • Failed on Start: 1
  • In Progress: 2
  • Error Occurred: 3
  • Canceled: 4
  • Completed: 5
  • Failed on Start(Retrying): 6
  • Error Occurred (Retrying): 7
  • Canceled: 15
  • Approved: 16
  • Rejected: 17

6-The SharePoint Health Analyzer detected a condition requiring your attention. Drivers are at risk of running out of free space



Para evitar este error, deberás tener 5 veces más de RAM que espacio libre en el server.



7-Falta “Destination Folder” cuando se sube un documento



Se debe activar la feature Metadata Navigation and Filtering


8-Durante el backup de un site se pone el site cómo sólo lectura, en el caso que haya una interrupción (ej:reiniciar el server), se dejará como sólo lectura. Para ello será necesario ejecutar lo siguiente:



Set-SPSite -Identity http://mysite -LockState "Unlock"


9-Cambiar la opción del indicador “New” en los documentos recientemente subidos


El default para que aparezca el valor “Nuevo” es de dos días.
Verificar la configuración actual:


stsadm.exe -o getproperty -pn days-to-show-new-icon -url http://misitio


Cambiar a 4 días


stsadm.exe -o setproperty -pn days-to-show-new-icon -pv 4 -url http://misitio
Si lo seteo a 0 (cero), directamente no aparece.


10-Enviar un mail con powershell



   1:   function enviarMail{
   2:   
   3:       Write-Host "Enviando Email"
   4:   
   5:       #nombre del servidor SMTP
   6:       $smtpServer = "smtp.xxxx.com"
   7:   
   8:       #Creando un objeto mail
   9:       $msg = new-object Net.Mail.MailMessage
  10:   
  11:       #Creando un objeto SMTP server
  12:       $smtp = new-object Net.Mail.SmtpClient($smtpServer)
  13:   
  14:       #Email formato
  15:       $msg.From = "fromID@mail.com"
  16:       $msg.ReplyTo = "replyto@mail.com"
  17:       $msg.To.Add("toID@mail.com")
  18:       $msg.subject = "Mi asunto"
  19:       $msg.body = "Es es el cuerpo del mail."
  20:   
  21:       #Enviando el mail
  22:       $smtp.Send($msg)
  23:    
  24:  }
  25:   
  26:  #Llamo a la funcion
  27:  enviarMail