使用具有目标的主体中的锚标记在C#中创建Outlook电子邮件

时间:2014-05-21 17:10:10

标签: c# html email outlook smtp

我的团队和我有一个非常具体和令人沮丧的问题。我们有一个MVC4 Web应用程序,很多人在公司内部使用(没有外部曝光)。我们的一些流程会向其他员工生成电子邮件,并返回到应用程序的链接。

例如,某个员工可能会看到并希望参加某些活动。他们可以通过电子邮件发送给其他员工,说他们想参加。

在这些电子邮件中,我们将一个锚标记放回到我们的应用程序的链接和一些查询字符串中,以帮助将其指向正确的页面。

所有这些都非常有效。现在,问题是,我们希望链接(来自电子邮件)在应用程序的现有窗口中加载(如果存在)。通常,我相信,这可以通过在锚标记中设置目标属性来完成,但这不起作用,它只是在新标签页中打开。

这就是电子邮件中的锚标记源的样子(我已经更改了一些文字以便隐藏公司相关信息):

Please <a target="appMain" href='http://domain/app/controller.aspx/view?
keyname=querystringparam1&params={"prop1":val,"prop2":va;}'>
click here</a> to approve and go to app

这是我们发送邮件的smtp函数:

public void SendMail(EmailContent emailContent, string mailConfigurationPath)
   {
       var toRecipients = string.Join(",", emailContent.ToList);

       var mailMessage = new MailMessage(emailContent.From, toRecipients)
       {
           IsBodyHtml = emailContent.IsBodyHtml,
           Body = emailContent.Body,
           Subject = emailContent.Subject
       };

       var smtpClient = new SmtpClient
       {
           DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory,
           PickupDirectoryLocation = mailConfigurationPath
       };

       smtpClient.Send(mailMessage);
   }

我努力实现的目标是什么?这似乎很直接,也许我只是以错误的方式去做。会喜欢一些帮助,甚至是一些疯狂的&#34;想法。

1 个答案:

答案 0 :(得分:0)

这是不可能的,因为它在电子邮件程序本身中创建了一个漏洞......

http://thenextweb.com/insider/2013/01/07/yahoo-mail-users-hit-by-widespread-hacking-xss-exploit-seemingly-to-blame/

此外,它违反了电子邮件程序的所有常规用户界面指南。用户不希望电子邮件转换为应用程序。他们非常熟悉点击电子邮件中的链接,所以你不希望这个动作做一些奇怪的事情。