我正在开发一个wpf应用程序,我有一个客户信息部分,我可以记录我的客户信息。在本节中,我使用文本框记录客户的电子邮件地址。但现在我想制作电子邮件地址超链接并通过Outlook电子邮件链接电子邮件地址,例如,如果我点击电子邮件地址,它会自动打开Outlook电子邮件,以便我可以通过outlook发送电子邮件。欣赏样品。谢谢。
我想要的是标签或文本块,其文本是左侧的电子邮件(不需要绑定到文本框中的文本),右侧的文本框可以键入电子邮件地址。在文本框中键入有效的电子邮件地址后,您可以单击电子邮件地址,它将自动打开Outlook。在To of outlook中,电子邮件地址是您输入的内容。
<TextBlock Text="Email" Grid.Row="11" x:Name="lblEmail" VerticalAlignment="Top"/>
<TextBox Grid.Column="1" Grid.Row="11" x:Name="txtEmail" VerticalAlignment="Top" TextDecorations="UnderLine" Foreground="Blue"
Text="{Binding Email,UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, ValidatesOnExceptions=True, NotifyOnValidationError=True}">
</TextBox>
答案 0 :(得分:1)
我使用此方法发送我的电子邮件...请注意,这不是专门用于Outlook ...它将使用用户计算机上设置的默认电子邮件程序中的任何软件:
public bool SendEmail(List<string> toAddresses, List<string> ccAddresses, string fromAddress, string emailSubject, string emailBody, bool isBodyHtml)
{
MailMessage email = new MailMessage();
email.From = new MailAddress(fromAddress);
foreach (string address in toAddresses) email.To.Add(new MailAddress(address));
foreach (string address in ccAddresses) email.CC.Add(new MailAddress(address));
email.BodyEncoding = Encoding.UTF8;
email.IsBodyHtml = false;
email.Subject = emailSubject;
email.Body = emailBody;
email.Priority = MailPriority.Low;
SmtpClient smtpClient = new SmtpClient(Settings.Default.DefaultEmailServerPath);
smtpClient.Credentials = new NetworkCredential(Settings.Default.EmailNetworkCredentialUserName, Settings.Default.EmailNetworkCredentialPassword, Settings.Default.EmailNetworkCredentialDomain);
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.Host = Settings.Default.DefaultEmailServerPath;
smtpClient.UseDefaultCredentials = true;
try { smtpClient.Send(email); }
catch { return false; }
return true;
}
请注意,我已为此重载了方法,因此这个方法中包含所有选项...如果您愿意,可以自由删除多行。还有一种发送电子邮件的快捷方式:
System.Diagnostics.Process.Start("mailto:youremail@yourcompany.com");
基本上,我会在您的用户界面中添加HyperLink
控件或Button
Command
,然后从您的处理程序中调用此代码。您可以在MSDN的Hyperlink class页面上找到有关HyperLink
控件的更多信息,并在this post中找到一个很好的示例。
更新&gt;&gt;&gt;
你真的应该提供代码示例......我不知道你是如何设置你的TextBox
,你是否有约束力,参数的名称等等。因此,我只能假设您必须与自己的代码相关。
首先,在相同的位置添加Hyperlink
控件作为TextBox
:
<TextBox Grid.Row="0" Grid.Column="1" Name="EmailTextBox" Text="{Binding Email}"
Visibility="{Binding IsValidEmail, Converter={StaticResource
InverseBoolToVisibilityConverter}}" />
<TextBlock Grid.Row="0" Grid.Column="1">
<Hyperlink RequestNavigate="Hyperlink_RequestNavigate">
<TextBlock Text="{Binding Text, ElementName=EmailTextBox}" Visibility="{
Binding IsValidEmail, Converter={StaticResource BoolToVisibilityConverter}}" />
</Hyperlink>
</TextBlock>
您认为这里的基本想法是让两个控件共享一个UI位置,并根据TextBox
的值显示“轮流”。因此,当文本值是有效的电子邮件地址时,您需要添加一个bool
属性(在我的示例中为IsValidEmail
),并将其设置为true。然后,BoolToVisibilityConverter
会将{true}的真值转换为Visibility.Visible
,而Hyperlink
会将该假值转换为InverseBoolToVisibilityConverter
或Visibility.Collapsed
对于Visibility.Hidden
控件。我希望并相信你可以自己完成剩下的工作,因为我今天的时间有限。