2

私が使用しているデフォルトのメール マネージャー (SMTP コードなし) を使用して、添付ファイル付きの新しいメールを開く必要があります。

System.Diagnostics.Process.Start(String.Format("mailto:{0}", txtEmail.Text)) 

アタッチメントの追加も可能ですか?


私はこれを試すことができました

http://www.codeproject.com/Articles/17561/Programmatically-adding-attachments-to-emails-in-C

しかし、クライアント コンピューターには常に Microsoft Outlook が必要であることを理解しておく必要があります...

4

1 に答える 1

0

それは不可能だ ?!
System.Net.Mail 名前空間を使用してそれを行う詳細な方法を提供しました。

private void button1_Click(object sender, EventArgs e)
{
    SmtpClient smtpserver = new SmtpClient();
    smtpserver.Credentials = new NetworkCredential("email@domain", "passphrase");
    smtpserver.Port = 587;
    smtpserver.Host = "smtp.live.com";
    smtpserver.EnableSsl = true;

    MailMessage mail = new MailMessage();
    mail.From = new MailAddress("email@domain");
    mail.To.Add("recipient@domian");
    mail.Subject = "testing";

    string pathTOAttachment;
    string _Attachment = pathToAttachment;
    Attachment oAttch = new Attachment(_Attachment);
    mail.Attachments.Add(oAttch);

    mail.Body = "message body";

    ThreadPool.QueueUserWorkItem(delegate
    {
        try
        {
            smtpserver.Send(mail);
        }
        //you can get more specific in here
        catch
        {
            MessageBox.Show("failure sending message");
        }
    });
}

注目すべき (このコード サンプルでは考慮されていません):

  1. 一部のISPは添付ファイルのサイズ制限を課している場合があり、電子メールを送信する前に必ず確認してください.
  2. smtp ホスト/ポートは異なる場合があります。最も効率的な方法は、定期的に更新されるデータベースに対してチェックするか、ユーザーが自分で設定できるようにすることです。
  3. スレッド部分はすべて UI の応答性に関するものですが、メールがまだ送信されている状態でユーザーがアプリのメイン ウィンドウを閉じると、メールはプリエンプトされます。
于 2012-09-03T13:07:18.143 に答える