Html 如何在发送给Notes客户端的邮件中嵌入链接按钮?

Html 如何在发送给Notes客户端的邮件中嵌入链接按钮?,html,lotus-notes,Html,Lotus Notes,我必须给几百个用户发一封电子邮件。每个人都有一个为收件人量身定做的链接,所以我需要用脚本/代码生成电子邮件-我不是Notes开发人员,所以我不能在Notes中这样做;我正在使用C#,我正在从SQL数据库中提取列表 有一些限制: 链接指向的站点使用集成的Windows身份验证 发件人希望链接是一个按钮,而不是文本 绝大多数收件人都运行LotusNotes7 我尝试创建HTML邮件,但遇到了以下问题: 如果我使用带有提交按钮和指向链接的操作的表单,Notes会尝试使用其内部浏览器,但失败(因为

我必须给几百个用户发一封电子邮件。每个人都有一个为收件人量身定做的链接,所以我需要用脚本/代码生成电子邮件-我不是Notes开发人员,所以我不能在Notes中这样做;我正在使用C#,我正在从SQL数据库中提取列表

有一些限制:

  • 链接指向的站点使用集成的Windows身份验证
  • 发件人希望链接是一个按钮,而不是文本
  • 绝大多数收件人都运行LotusNotes7
我尝试创建HTML邮件,但遇到了以下问题:

  • 如果我使用带有提交按钮和指向链接的操作的表单,Notes会尝试使用其内部浏览器,但失败(因为该站点使用集成的Windows身份验证)

  • 如果我使用一个a href标记,其中有一个img标记,指向web服务器上的图像,Notes会拒绝显示图像-我只会得到红色的x框,即使这些标记嵌入到网页中也是有效的


有人知道我如何做到这一点吗?

我想无论你使用什么链接(按钮、文本),你都会遇到同样的问题,Notes客户端会启动其内部浏览器。这是Notes客户机的首选项,在所有机器上都可能不同

我会首先尝试一个标准文本链接,看看它是否有相同的行为。也许,如果出于某种原因,这确实有效,那么你至少可以提供一个解决方案

关于映像问题-映像是否来自使用Windows身份验证的服务器?确保图像对公众开放,并且不需要身份验证即可查看(在Firefox中进行测试,如果您没有收到密码提示,您就安全了)


我不想这么说,但你可能不得不要求用户将URL从他们的电子邮件复制到特定的浏览器。至少你知道这是可行的。

我想无论你使用什么链接(按钮、文本),你都会遇到同样的问题,Notes客户端会启动它的内部浏览器。这是Notes客户机的首选项,在所有机器上都可能不同

我会首先尝试一个标准文本链接,看看它是否有相同的行为。也许,如果出于某种原因,这确实有效,那么你至少可以提供一个解决方案

关于映像问题-映像是否来自使用Windows身份验证的服务器?确保图像对公众开放,并且不需要身份验证即可查看(在Firefox中进行测试,如果您没有收到密码提示,您就安全了)


我不想这么说,但你可能不得不要求用户将URL从他们的电子邮件复制到特定的浏览器。至少你知道那会有用。

我同意Ken对内部浏览器的偏好。不显示的图像(显示红色x)可能也是首选项。我不记得它是否在R7中可用,但在R8中有一个不自动显示远程图像的首选项。这是一个安全特性。这也可能是代理问题-如果他们必须登录到他们的internet代理服务器才能访问internet,并且您的图像在internet上…

我同意Ken对内部浏览器的偏好。不显示的图像(显示红色x)可能也是首选项。我不记得它是否在R7中可用,但在R8中有一个不自动显示远程图像的首选项。这是一个安全特性。这也可能是一个代理问题-如果他们必须登录到他们的internet代理服务器才能访问internet,并且您的图像在internet上…

我终于找到了一种有效的方法:将图像嵌入电子邮件本身。我找到了解决办法。为了以防万一,我会把关键的东西放在这里

电子邮件有三个关键组成部分:纯文本版本、html版本和图像,所有这些都被构造为AlternateView:

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(string)和BuildPlainTextMessage(string)只返回包含消息的字符串。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>");
sb.AppendLine(“”);
sb.格式(“”);
某人加上一行(“”);

希望这对其他人有用。

我终于找到了一种有效的方法:将图像嵌入电子邮件本身。我找到了解决办法。为了以防万一,我会把关键的东西放在这里

电子邮件有三个关键组成部分:纯文本版本、html版本和图像,所有这些都被构造为AlternateView:

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(string)和BuildPlainTextMessage(string)只返回包含消息的字符串。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>");
sb.AppendLine(“”);
sb.格式(“”);
某人加上一行(“”);

希望这对其他人有用。

也有这个,但它会用我的Notes配置向用户发出安全警告:

<input type='button'
       onclick=document.location.href='http://server/path'; 
       value='Click here' 
       id='buttonID' class='button' 
       xstyle='background-color:red;color:white;'/>

也有此功能,但它会向使用my Notes配置的用户发出安全警告:

<input type='button'
       onclick=document.location.href='http://server/path'; 
       value='Click here' 
       id='buttonID' class='button' 
       xstyle='background-color:red;color:white;'/>


谢谢您的回复。我确实犯了一个错误,最初将图像放在AuthN站点上,但我已将其移动到另一个只有匿名访问权限的站点。不过,我会在Firefox中查看它。我还尝试了一个标准链接的电子邮件-我只是把url直接放在电子邮件中,并允许Notes将其转换为链接,它工作了,在我的机器上打开IE。谢谢你的回复。我确实犯了一个错误,最初将图像放在AuthN站点上,但我已将其移动到另一个只有匿名访问权限的站点。不过,我会在Firefox中查看它。我还尝试了使用标准链接的电子邮件-我只是将url直接放在电子邮件中,并允许Notes将其转换为链接,它成功了,在我的机器上打开了IE。所有内容都是内部的,因此代理服务器不应成为问题,除非配置错误-不过值得检查。我还要检查一下远程图像的想法。一切都准备好了