Как я могу встроить кнопку ссылки в почту для отправки клиентам Notes? - PullRequest
1 голос
/ 03 марта 2010

Я должен отправить электронное письмо нескольким сотням пользователей. У каждого будет ссылка, привязанная к получателю, поэтому мне нужно генерировать электронные письма в скрипте / коде - я не являюсь разработчиком Notes, поэтому я не могу сделать это в Notes; Я использую C # и вытаскиваю список из базы данных SQL.

Есть некоторые ограничения:

  • Сайт, на который указывает ссылка, использует встроенную проверку подлинности Windows.
  • Отправитель хочет, чтобы ссылка была кнопкой, а не текстом.
  • Подавляющее большинство получателей используют Lotus Notes 7.

Я пытался создать письмо в формате HTML, но у меня возникли проблемы:

  • Если я использую форму с кнопкой отправки и действием, указывающим на ссылку, Notes пытается использовать свой внутренний браузер, который не работает (поскольку сайт использует встроенную проверку подлинности Windows).

  • Если я использую тег href с тегом img, указывающий на изображение на веб-сервере, Notes отказывается отображать изображение - я просто получаю красную рамку «х», хотя теги действительны, если встроенный в веб-страницу.

Кто-нибудь знает, как я могу это сделать?

Ответы [ 4 ]

1 голос
/ 05 марта 2010

Я наконец нашел способ, который работает: встраивание изображения в само письмо. Я нашел решение здесь . Я включу критические вещи здесь, на всякий случай.

В электронном письме есть три ключевых компонента: текстовая версия, html-версия и изображение, все они созданы как AlternateViews:

string imagePath = @"C:\Work\images\clickhere.jpg";
AlternateView imageView = new AlternateView(imagePath, MediaTypeNames.Image.Jpeg);
imageView.ContentId = "uniqueId";
imageView.TransferEncoding = TransferEncoding.Base64;
     :
//loop to generate the url and send the emails containing
    AlternateView plainTextView = AlternateView.CreateAlternateViewFromString(
        BuildPlainTextMessage(url), null, "text/plain");
    AlternateView htmlView = AlternateView.CreateAlternateViewFromString(
        BuildHtmlMessage(url), null, "text/html");
    //set up MailAddress objects called to and from
        :
    MailMessage mail = new MailMessage(from, to);
    mail.Subject = "ACTION REQUIRED: Do this by then or else";
    mail.AlternateViews.Add(plainTextView);
    mail.AlternateViews.Add(htmlView);
    mail.AlternateViews.Add(imageView);
    //send mail using SmtpClient as normal
        :
//endloop

BuildHtmlMessage (строка) и BuildPlainTextMessage (строка) просто возвращают строки, содержащие сообщения. BuildHtmlMessage включает это для отображения изображения в ссылке на 'url':

sb.AppendLine("<div>");
sb.AppendFormat("<a href=\"{0}\" target=\"_blank\">", url);
sb.Append("<img alt=\"Click here button image\" hspace=0 src=\"cid:uniqueId\" ");
sb.Append("align=baseline border=0 >");
sb.Append("</a>");
sb.AppendLine("</div>");

Надеюсь, это когда-нибудь пригодится кому-то еще.

0 голосов
/ 09 марта 2010

Существует также это, но он запускает предупреждение безопасности для пользователя с моей конфигурацией Notes:

<input type='button'
       onclick=document.location.href='http://server/path'; 
       value='Click here' 
       id='buttonID' class='button' 
       xstyle='background-color:red;color:white;'/>
0 голосов
/ 03 марта 2010

Я согласен с Кеном в предпочтении внутреннего браузера. Изображение, не отображаемое с красным крестиком, также может быть предпочтительным. Я не помню, было ли это доступно в R7, но в R8 есть предпочтение не показывать удаленные изображения автоматически. Это функция безопасности. Это также может быть проблема с прокси-сервером - если им потребуется войти на свой интернет-прокси-сервер, чтобы получить доступ к Интернету, а ваше изображение в Интернете ...

0 голосов
/ 03 марта 2010

Я думаю, что независимо от того, какую ссылку вы используете (кнопка, текст), вы столкнетесь с той же проблемой, когда клиент Notes запускает свой внутренний браузер. Это предпочтение для клиента Notes, и оно может отличаться на всех компьютерах.

Сначала я попробую стандартную текстовую ссылку, чтобы увидеть, имеет ли она такое же поведение. Возможно, если по какой-то причине это сработает, вы, по крайней мере, сможете обойти это решение.

Что касается проблемы с изображением - изображение, полученное с сервера, использует проверку подлинности Windows? Убедитесь, что изображение открыто для общественности и не требует проверки подлинности для его просмотра (протестируйте в Firefox, и если вы не получите запрос пароля, вы в безопасности)

Мне неприятно это говорить, но вам, возможно, придется попросить пользователей скопировать URL-адрес из своего электронного письма в определенный браузер. По крайней мере, вы бы знали, что это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...