Отправить письмо с wpf - PullRequest
       2

Отправить письмо с wpf

4 голосов
/ 21 января 2011

Привет, я пытаюсь отправить электронное письмо в приложении wpf, но я застрял;я показываю свой код xaml

 <Grid>
    <Button     Style="{DynamicResource ShowcaseRedBtn}"  CommandParameter="test@ygmail.com" Tag="Send Email" Content="Button" Height="23" HorizontalAlignment="Left" Margin="351,186,0,0" Name="button1" VerticalAlignment="Top" Width="140" Click="button1_Click" />
    <TextBox Height="23" HorizontalAlignment="Left" Margin="92,70,0,0" Name="txtSubject" VerticalAlignment="Top" Width="234" />
    <TextBox AcceptsReturn="True" AcceptsTab="True"   Height="159" HorizontalAlignment="Left" Margin="92,121,0,0" Name="txtBody" VerticalAlignment="Top" Width="234" />
</Grid>

и здесь в коде:

 private void button1_Click(object sender, RoutedEventArgs e)
    {
        Button btn = sender as Button;
        if (btn == null)
            return;
        string url = btn.CommandParameter as string;
        if (String.IsNullOrEmpty(url)) 
            return;
        try
        {
            // here i wish set the parameters of email in this way 
            // 1. mailto = url;
            // 2. subject = txtSubject.Text;
            // 3. body = txtBody.Text;
            Process.Start("mailto:test@gmail.com?subject=Software&body=test ");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
        }
    }

моя цель - установить параметры электронного письма, связывающего данные из формы: // 1.mailto = url;// 2. subject = txtSubject.Text;// 3. body = txtBody.Text;

У вас есть идеи, как выполнить этот шаг?

Большое спасибо за ваше внимание.

Приветствия

Ответы [ 3 ]

11 голосов
/ 21 января 2011

Вы можете отправлять почту напрямую, используя класс System.Net.MailMessage.Посмотрите на следующий пример из документации MSDN для этого класса:

public static void CreateTimeoutTestMessage(string server)
        {
            string to = "jane@contoso.com";
            string from = "ben@contoso.com";
            string subject = "Using the new SMTP client.";
            string body = @"Using this new feature, you can send an e-mail message from an application very easily.";
            MailMessage message = new MailMessage(from, to, subject, body);
            SmtpClient client = new SmtpClient(server);
            Console.WriteLine("Changing time out from {0} to 100.", client.Timeout);
            client.Timeout = 100;
            // Credentials are necessary if the server requires the client 
            // to authenticate before it will send e-mail on the client's behalf.
            client.Credentials = CredentialCache.DefaultNetworkCredentials;

      try {
              client.Send(message);
            }  
            catch (Exception ex) {
              Console.WriteLine("Exception caught in CreateTimeoutTestMessage(): {0}", 
                    ex.ToString() );              
          }
        }
1 голос
/ 22 апреля 2015

Я разместил похожий и намного более простой ответ здесь

, но для акцента

<Button Content="Send Email" HorizontalAlignment="Left" VerticalAlignment="Top" Height="50">
  <i:Interaction.Triggers>
    <i:EventTrigger EventName="Click">
      <ei:LaunchUriOrFileAction Path="mailto:example@stackoverflow.com?subject=SubjectExample" />
    </i:EventTrigger>
  </i:Interaction.Triggers>
</Button>
1 голос
/ 21 января 2011

Если вы используете codebehind, вам не нужно связывать - хотя это не очень хороший шаблон, он, конечно, будет работать.

Почему бы вам просто не назвать свои текстовые поля (urlTextBox, subjectTextBox и т. Д.) И использовать эти имена в событии нажатия кнопки?

        Process.Start(string.Format("mailto:{0}?subject={1}&body={2}", urlTextBox.Text, subjectTextBox.Text, ... ));

Конечно, это может легко потерпеть неудачу, если пользователь вводит недопустимые значения.

Использование привязок - это еще один способ, но в этом простом случае я считаю это чрезмерным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...