Html 如何在发送给Notes客户端的邮件中嵌入链接按钮?
我必须给几百个用户发一封电子邮件。每个人都有一个为收件人量身定做的链接,所以我需要用脚本/代码生成电子邮件-我不是Notes开发人员,所以我不能在Notes中这样做;我正在使用C#,我正在从SQL数据库中提取列表 有一些限制:Html 如何在发送给Notes客户端的邮件中嵌入链接按钮?,html,lotus-notes,Html,Lotus Notes,我必须给几百个用户发一封电子邮件。每个人都有一个为收件人量身定做的链接,所以我需要用脚本/代码生成电子邮件-我不是Notes开发人员,所以我不能在Notes中这样做;我正在使用C#,我正在从SQL数据库中提取列表 有一些限制: 链接指向的站点使用集成的Windows身份验证 发件人希望链接是一个按钮,而不是文本 绝大多数收件人都运行LotusNotes7 我尝试创建HTML邮件,但遇到了以下问题: 如果我使用带有提交按钮和指向链接的操作的表单,Notes会尝试使用其内部浏览器,但失败(因为
- 链接指向的站点使用集成的Windows身份验证李>
- 发件人希望链接是一个按钮,而不是文本李>
- 绝大多数收件人都运行LotusNotes7李>
- 如果我使用带有提交按钮和指向链接的操作的表单,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。所有内容都是内部的,因此代理服务器不应成为问题,除非配置错误-不过值得检查。我还要检查一下远程图像的想法。一切都准备好了