jueves, 7 de noviembre de 2019

vcard, acentos y eñes.

El problema

Creas una página web desde donde pueden descargarse archivos VCard para importarlos y crear contactos en Outlook.
Todo funciona bien salvo que tildes, eñes u otros carácteres  no usados en inglés no se visualizan bien.
Por ejemplo Dª Estefanía se importa como D? Estefan?a

Contexto

El problema me apareció en un desarrollo C# MVC ASP.NET usando la librería MixERP.Net.VCards pero la solución tiene aplicación en otros contextos,

Solución

Hay que codificar con "ISO-8859-1".

Usando un controlador ASP.NET MVC el código es:

        [HttpPost]
        public ActionResult VCard(Simple cto)
        {
            var _VCard = cto.GetComplejo().getVcard(); //genera Vcard en formato MixERP.Net.VCards
            Response.Clear();
            Response.AddHeader(
                $"Content-Disposition",
                $"attachment; filename={_VCard.FormattedName }.vcf;"
                );
            var serializedvCard = _VCard.Serialize();
            return File(
                Encoding.GetEncoding("ISO-8859-1").GetBytes(serializedvCard),
                "text/x-vcard; charset=ISO-8859-1"
                );
        }

martes, 30 de octubre de 2018

Insertar HTML en el cuerpo de un mensaje Outlook 2016

Situación

Quieres insertar el contenido de un archivo HTML en un mensaje de Outlook.
No ves la opción buscas en la web y dicen que cuando adjuntas un archivo tienes un desplegable para elegir entre adjuntar o insertar como texto. Pero en la versión 365 de Outlook no ves el desplegable.

Solución 

En la barra de titulo de la ventana del mensaje hay accesos rápidos, añade el acceso rápido para adjuntar un archivo.
Cuando uses este acceso rápido para adjuntar un archivo veras que el botón insertar es un botón desplegable con la opción deseada.
(desde una respuesta en Comunidad de Microsoft

jueves, 9 de agosto de 2018

Las GPO no se aplican al arrancar

Sintomas

Últimamente mi Windows 10 no aplica las GPO por lo que entre otras no se mapean las unidades de
red y aparecen eventos 1110.

Solución

Arrancar el servicio net logon que está detenido y colocarlo en automático.

¿Por qué se ha detenido el servicio Net Logon? ¿Por qué está en manual?

El asistente de soporte de DELL establece el arranque en manual porque piensan que todos los usuarios son domésticos y no necesitan el servicio net logon.
https://www.dell.com/community/SupportAssist/Dell-SupportAssistant-sets-Netlogon-service-to-manual/td-p/6083752
😡😡😡😡😡😡😡😡😡 😡😡😡😡😡😡

jueves, 19 de abril de 2018

Dos Helpers Razor para postear diccionarios en forms y Json

Descripción

El modelo de una página Razor incluye propiedades del tipo diccionario que queremos postear como campos ocultos o mediante Json.

Solución

Para camposOcultos

@helper OcultoDictionary(Dictionary<int, int> dicc, string nombre)
    {
        var i = 0;
        foreach (var d in dicc)
        {
            <input type="hidden" value="@d.Key" name="@string.Format("{0}[{1}].Key",nombre,i)" />
            <input type="hidden" value="@d.Value" name="@string.Format("{0}[{1}].Value",nombre,i)" />
            i++;
        }
}

Ejemplo de resultados

<input type="hidden" value="1" name="ExperienciasEspecificas[0].Key" />
<input type="hidden" value="1" name="ExperienciasEspecificas[0].Value" />
<input type="hidden" value="2" name="ExperienciasEspecificas[1].Key" />
<input type="hidden" value="1" name="ExperienciasEspecificas[1].Value" />
<input type="hidden" value="3" name="ExperienciasEspecificas[2].Key" />
<input type="hidden" value="1" name="ExperienciasEspecificas[2].Value" />

Para Json

@helper JsonDiccionario(Dictionary<int, int> dic, string n)
    {
        var i = 0;
        foreach (var d in dic)
        {
            @Html.Raw($"'{n}[{i}].Key':{d.Key},")
            @Html.Raw($"'{n}[{i}].Value':{d.Value},")
            i++;
        }
}

Ejemplo de resultados

{
...
'ExperienciasEspecificas[0].Key':1,
'ExperienciasEspecificas[0].Value':1,
'ExperienciasEspecificas[1].Key':2,
'ExperienciasEspecificas[1].Value':1,
'ExperienciasEspecificas[2].Key':3,
'ExperienciasEspecificas[2].Value':1,
...
}

viernes, 1 de diciembre de 2017

Outlook no conecta pero no pide contraseña

Hace poco activé OAuth2 en mi organización Exchange de Office 365, para ello usé:
Set-OrganizationConfig -OAuth2ClientProfileEnabled $true

Al cabo de unos dias el Outlook de uno de mis usuarios dejo de sincronizar. Probé todos los métodos clásicos (crear perfiles, borrar credenciales,...etc) pero no había forma de resolverlo.

Cuando intentaba crear un perfil nuevo desde Outlook se abría una caja blanca que desaparecía inmediatamente. Leí en foros que mucha gente lo resolvía formateando el ordenador, por mi parte me "limité" a borrar el perfil del usuario Windows y volverlo a crearlo.

Pocos días después era el Outlook en mi ordenador el que daba el problema, y yo no estaba dispuesto a borrar el perfil de usuario, tengo demasiadas cosas y personalizaciones.

Después de repetir sin éxito todas los diagnósticos de Office, borrar credenciales y perfiles, desinstalar e instalar Office recordé la activación de OAuth2 y la desactivé
Set-OrganizationConfig -OAuth2ClientProfileEnabled $false

¡Problema resuelto!,...en mi ordenador, puesto que  al día siguiente el usuario al que había recreado el perfil me llama porque no se actualizaba su buzón.

Examinando los registros HKCU:\Software\Microsoft\Office\15.0\Common\Identity en su máquina y en la mía descubrí que en el perfil recién creado faltaba una clave Dword DisablePreferLiveOAuth que en mi perfil mas antiguo estaba establecida a 1.

Creando la entrada en el nuevo perfil de mi usuario, Outlook volvió a poder conectarse.

Imagino que también funcionaría a la inversa cambiar la organización para usar OAuth2 y eliminar la clave  en todas las máquinas y perfiles de usuario.


lunes, 21 de agosto de 2017

Errores Piwik al cargar plugins con sitio de mucho tráfico para periodo largo

Síntomas:

Piwik da un error en los componentes del panel que dice algo así como:
Ooops!! Hubo un problema durante la solicitud. Tal vez el servidor tenía un problema temporal, o tal vez solicitó un informe con demasiados datos,...
En inglés
Oops… there was a problem during the request. Maybe the server had a temporary issue, or maybe you requested a report with too much data,...

Solución:

Puede haber otras causas pero a mí me ha bastado con aumentar la memoria de script PHP
Archivo: /etc/php/7.0/apache2/php.ini
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 384M

Recuerda regargar php.ini con sudo apachectl graceful

martes, 9 de mayo de 2017

Problemas en la sincronización de contactos Office365, Android, Outlook App y contactos de teléfono o WhatsApp

Los problemas:

Parece una buena idea usar la app Outlook para acceder a tu correo en Office 365, al fin y al cabo Outlook es el cliente de correo Microsoft ¿no? Sin embargo puede resultar un quebradero de cabeza la sincronización de los contactos.

Primer problema

Una vez instalada la aplicación veras los contactos de Office 365 en Outlook pero no en los contactos del teléfono.
Lo que es peor, en las llamadas telefónicas y chats de WhatsApp se ven números en lugar de nombres.
Entonces en los ajustes de la cuenta que usa Outlook ves una opción "Sincronizar contactos", la activas y ¡oh maravilla! ya tienes nombres en el ¡WhatsApp!
No te engañes porque ahora viene el segundo problema

Segundo problema

Ahora resulta que te han llamado o chateado desde un nuevo número y lo añades como contacto con nombre. Verás que al cabo de unos minutos el nuevo contacto ha desaparecido y en el registro de llamadas solo aparece el número.
Resulta que la sincronización de contactos que activaste antes solo se realiza en una dirección desde Office 365 hacia los contactos del teléfono y no al revés.

Las soluciones

En breve: Debe crearse una cuenta Microsoft Exchange Active Sync para sincronizar los contactos.

En mi teléfono los pasos a seguir son:
 
1.       En la aplicación Outlook
a.       Id a configuración (rueda dentada arriba derecha)
b.       Pulsad en vuestra cuenta de correo (la dirección)
c.       Si está activado Sincronizar contactos DESACTIVADO. (puede estar ya desactivado, pero…)
2.       En  los contactos del teléfono
a.       Id a ajustes (tres puntos en vertical arriba derecha)
b.       Elegid contactos (segunda opción)
c.       En la lista que aparece al final está cuentas, dadle
d.       Ahora pulsad Añadir cuenta
e.       Elegid Microsoft Exchange ActiveSync
f.        Escribid vuestra dirección de correo y contraseña
                  g.    Aceptar todo en las pantallas siguientes
Pero ya sabéis que en cada teléfono las cosas las hacen distintas, en algunos tendrás que entrar por ajustes.