2013-08-21 3 views
0

Я работаю над приложением wpf, и у меня есть раздел Информация о клиенте, где я могу записывать информацию о своих клиентах. В этом разделе я использую адрес электронной почты для записи текстового поля. Но теперь я хочу сделать гиперссылку адреса электронной почты и связать адрес электронной почты с помощью электронной почты Outlook, скажем, если я нажму адрес электронной почты, он автоматически откроет Outlook Outlook, чтобы я мог отправлять электронную почту через Outlook. Оцените образцы. Благодарю.напишите адрес электронной почты и отправьте электронное сообщение по адресу

То, что я хочу, является меткой или текстовым блоком, текст которого по электронной почте слева (не нужно связывать текст с текстовым полем), текстовое поле справа, где вы можете ввести адрес электронной почты. После ввода правильного адреса электронной почты в текстовое поле вы можете щелкнуть адрес электронной почты, и он автоматически откроет внешний вид. В To кругозора, адрес электронной почты является то, что вы ввели в.

<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

См. Ответ, предоставленный Sheridan, по ссылке http://stackoverflow.com/questions/18378707/hyperlink-email-address-in-textbox-and-send-it-via-outlook. – DanielXu

ответ

0

Я использую этот метод, чтобы отправить свою электронную почту ... обратите внимание, что это не специально для 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:[email protected]"); 

В принципе, я хотел бы добавить, либо HyperLink контроля, или Button, который имеет Command в ваш пользовательский интерфейс, а затем вызывать этот код из обработчика. Вы можете узнать больше об элементе управления HyperLink на странице Hyperlink class в MSDN и есть хороший пример, найденный в this post.

UPDATE >>>

Вы действительно должны привести примеры кода ... Я понятия не имею, как вы настроили ваш 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> 

Вы видите, основная идея здесь иметь два средства управления разделяют одно местоположение пользовательского интерфейса и «по очереди», чтобы быть видимый в зависимости от значения TextBox. Поэтому вам нужно добавить свойство bool (IsValidEmail в моем примере), которое вы установили в true, когда текстовое значение является действительным адресом электронной почты. Затем BoolToVisibilityConverter преобразует это истинное значение в Visibility.Visible для управления Hyperlink, а InverseBoolToVisibilityConverter преобразует это ложное значение в Visibility.Collapsed или Visibility.Hidden для управления Hyperlink. Я надеюсь и верю, что вы можете справиться с остальными, поскольку мое время ограничено сегодня.

+0

Привет, Шаридан. Спасибо за ваше быстрое повторное развертывание. Я уже прочитал сообщение и получил аналогичный пример отправки электронной почты с помощью wpf. Но это не то, что я хочу. Теперь я хочу сделать гиперссылку на адрес электронной почты, и после того, как я наберу адрес электронной почты и нажмите ее, страница электронной почты Outlook будет отображаться автоматически, чтобы можно было отправить электронное письмо. – DanielXu

+0

@ DanielXu, последняя ссылка, которую я вам предоставил, приведет вас к сообщению в StackOverflow, где создается и используется «Гиперссылка» ...просто то, что вы хотите. – Sheridan

+0

Я хочу, чтобы после ввода сообщения электронной почты был указан гиперссылка. Затем я нажимаю адрес электронной почты и открывает Outlook. Сообщение позволяет мне написать текстовую гиперссылку, и адрес электронной почты исправлен, скажем «Click Me», после того, как вы нажмете «Click Me», внешний вид открыт, и квитанция - это то, что вы настроили первым (исправлено). – DanielXu