在C#中使用LinkLabel创建超链接电子邮件地址

19

我已经制作了一个关于框,旨在允许用户点击超链接的电子邮件地址,从而可以进入Microsoft Outlook以发送电子邮件到该邮件地址,但我不知道如何将其链接到Outlook并允许用户单击链接来实现此操作。

5个回答

39

你没有说明你是使用WinForms还是WebForms...在WinForms中,我认为你需要为点击事件创建一个事件处理程序。在里面,你可以通过输入以下内容来启动默认的邮件应用程序:

System.Diagnostics.Process.Start("mailto:youremail@xx.com");

10
值得注意的是,如果用户在Win XP/7中没有设置默认邮件客户端,这个调用将会抛出一个异常System.ComponentModel.Win32Exception (0x80004005): No application is associated with the specified file for this operation。而Win 8至少会询问他们想要使用哪个应用程序启动“mailto”处理程序。 - Xerxes
@Xerxes,我们如何避免这个错误或者我们能否捕获它并询问要启动哪个应用程序? - indago

6

请查看这个Stack Overflow的帖子:

如何使用默认邮件客户端发送电子邮件?

基本上,点击事件应该像这样:

private void linkLabel1_LinkClicked(object sender,System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
 System.Diagnostics.Process proc = new System.Diagnostics.Process();
    proc.StartInfo.FileName = "mailto:someone@somewhere.com?subject=hello&body=love my body";
    proc.Start();
}

3
在窗体的构造函数中添加如下的 LinkLabel
linkLabel1.Links.Add(new LinkLabel.Link(0, linkLabel1.Text.Length, "mailto:bob@someaddress.com"));

然后,在LinkLabel的点击处理程序中:
linkLabel1.Links[linkLabel1.Links.IndexOf(e.Link)].Visited = true;
string target = e.Link.LinkData as string;
System.Diagnostics.Process.Start(target);

2

<a href="mailto:bob@someaddress.com"></a>.

如果用户的机器安装了Outlook,它将使用它。

编辑:糟糕,我刚注意到您需要Winforms而不是Web。

对于Winforms,请在单击事件处理程序中使用System.Diagnositcs.Process.Start(outlook.exe /c ipm.note /m bob@someadress.com)


2

在你的表单上放置一个链接标签。

双击链接标签创建您的点击处理程序,然后像这样放置系统进程调用:

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    linkLabel1.LinkVisited = true;
    System.Diagnostics.Process.Start("mailto:info@cybersprocket.com");
}

这将触发用户在他们的Windows设备上配置的默认电子邮件应用程序。

将mailto:替换为HTTP引用,以在其默认浏览器中打开一个网页:

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    linkLabel1.LinkVisited = true;
    System.Diagnostics.Process.Start("http://www.cybersprocket.com");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接