在Lotus Notes上设置HTML签名,无需用户交互

时间:2015-03-07 11:27:53

标签: c# html lotus-notes

我有一个小的VS C#程序,它修改了HTML格式的电子邮件签名中的一些数据,稍后将在Lotus Notes 8.5.3中使用 每个用户都可以生成自己的.html文件,其中包含来自公共模板的个人数据。

我的问题是,现在我希望软件将.html文件保存在Lotus Notes数据目录中,然后将客户端配置为使用该特定签名,而无需用户通过菜单“更多 - >首选项 - >签名“他自己。

到目前为止,这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace FirmaCorreo
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void ListBox_SelectionChanged(object sender,  SelectionChangedEventArgs e)
        {

        }

        private void Generar_Click(object sender, RoutedEventArgs e)
        {
            string suSaludo;
            suSaludo = Texto1.Text;
            string suNombre;
            suNombre = Texto2.Text;
            string suCargo;
            suCargo = Texto3.Text;
            string suCargo2;
            suCargo2 = Texto4.Text;
            string suMovil;
            suMovil = Texto5.Text;
            string suDirecto;
            suDirecto = Texto6.Text;
            string suDelegacion;
            if (DelegacionVillajoyosa.IsChecked == true)
            {
                suDelegacion = "Villajoyosa";
            }
            else if (DelegacionCanarias.IsChecked == true)
            {
                suDelegacion = "Canarias";
            }
            else if (DelegacionVigo.IsChecked == true)
            {
                suDelegacion = "Vigo";
            }
            else
            {
                suDelegacion = "Francia";
            }
            var contents = System.IO.File.ReadAllText(@"C:\Users\Public\Documents\IS-IT\FirmaCorreo\Plantilla\Plantillacorreo.html", Encoding.GetEncoding(28591));
            contents = contents.Replace("<!--Saludo-->", suSaludo);
            contents = contents.Replace("<!--NombreDelEmpleado-->", suNombre);
            contents = contents.Replace("<!--CargoDelEmpleado-->", suCargo);
            contents = contents.Replace("<!--CargoDelEmpleado2-->", "<br />"+suCargo2);
            contents = contents.Replace("<!--TelefonoMovil-->", "Mobile.- "+suMovil);
            contents = contents.Replace("<!--TelefonoDirecto-->", "<br />Direct.- "+suDirecto);
            contents = contents.Replace("<!--Delegacion"+suDelegacion, "<!-- -->");
            System.IO.File.WriteAllText(@"C:\Users\Public\Documents\IS-IT\FirmaCorreo\Plantilla\PlantillacorreoModificada.html", contents, Encoding.GetEncoding(28591));
        }

    }
}

在我的Lotus Notes 8.5.3安装中,我看到一个看似具有签名配置的notes.ini文件:

...
$SigSet=1
$SigState=1
$SigSetValue=1
....
$tmpStrFilter=HTML File
$tmpSigPath=C:\Lotus\Notes\Data\FirmaCorreo\FirmaPedro.html
...

Notes允许三种不同的邮件签名选项: Rich Text - Plain Text - HTML or Image File 我想也许我只需要编辑每个客户端上的notes.ini来设置我的程序生成的HTML文件。 问题是notes.ini在我更改客户端上的签名类型时不会改变。

有没有办法让生成的HTML文件成为Lotus Notes上的默认签名,而不要求每个用户转到“首选项”菜单并选择正确的设置? 我可以让我的C#程序为他们做这件事吗?

1 个答案:

答案 0 :(得分:1)

html文件路径存储在名为$ CalendarProfile的Mail数据库中的配置文件中,以及字段Signature2

您可以使用Microsoft COM对象(窗口)挂钩到Notes并读取文档,但是代码需要使用用户密码在客户端计算机上运行。

另一种方法是创建一个在用户第一次打开邮件文件时更新配置文件的lotusscript,这可以通过更改邮件模板并将其推送给所有用户来完成。

请记住,引用本地磁盘的签名在webmail中不起作用