有关组件实施“发送给朋友”的建议吗?

时间:2009-07-17 15:13:01

标签: c# asp.net

我有一个网页,我希望用户只需点击一下按钮即可发送给朋友。我目前正在使用Chilkat的MailMan,但我一直遇到间歇性问题。它似乎偶尔在第一次尝试邮件时抛出空指针异常。然后,如果再次尝试完全相同的页面,则不会发出任何问题。

  • 是否还有其他任何组件 那会做我正在尝试的事情 去做?
  • 纠正我的话会更容易吗? 做自己的轻量级组件吗?
  • 有没有人遇到过上述问题 可以很容易地解决,然后我不会 不得不担心上述情况?

修改 也许我应该清楚一些事情。我知道如何发送电子邮件。那不是问题。我使用的Chilkat组件可以接收一个网页并将其放入电子邮件中并发送。然后收到它的人会收到一封电子邮件,其中包含所有CSS以及图片和电子邮件中的所有内容。

3 个答案:

答案 0 :(得分:1)

您是否可以使用WebClient类获取用户请求的网页?您想要更改绝对链接的任何相对链接(例如从“/images/logo.gif”更改为“http://myapp.com/images/logo.gif”),然后获取输出并将其用作MailMessage对象的主体

public void MailToAFriend(string friendMailAddress, Uri uriToEmail) {
  MailMessage message = new MailMessage();
  message.From = "your_email_address@yourserver.com";
  message.To = friendEmailAddress;
  message.Subject = "Check out this awesome page!";
  message.Body = GetPageContents(uriToEmail);

  SmtpClient mailClient = new SmtpClient();
  mailClient.Send(message);
}

private string GetPageContents(Uri uri) {
  var webClient = new WebClient();
  string dirtyHtml = webClient.DownloadString(uri);
  string cleanedHtml = MakeReadyForEmailing(dirtyHtml); 
  return cleanedHtml;
}

private string MakeReadyForEmailing(string html) {
  // some implementation to replace any significant relative link 
  // with absolute links, strip javascript, etc
}

Google上有很多资源可以帮助您开始使用正则表达式进行替换。

答案 1 :(得分:1)

这实际上不是一项微不足道的工作。

您想要做的是下载HTML(这是简单的部分)。然后,您必须解析它,并提取所有css引用和图像引用,并且:

  1. 将它们嵌入电子邮件或

  2. 将所有链接转换为绝对链接。

  3. 当你看到那里所有糟糕的HTML时,你会发现这不是一件好事。我之所以知道这一点,是因为我将这个功能写入了aspNetEmail(www.aspNetEmail.com),并且不得不考虑各种不良的HTML。

答案 2 :(得分:0)

1).NET在System.Net.Mail中提供了一个足够合适的发送邮件类。

2)如果它很少发生并且不重复,只需将其放入try块并再次重试两次,然后再将其视为失败。虽然听起来很粗糙,但这是一个非常有效的解决方案。