c# - 打开包含附件的默认邮件管理器 (Windows)

标签 c# .net vb.net email

我需要通过默认邮件管理器打开一封带有附件的新邮件(没有 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...

最佳答案

这不可能?!
我提供了使用 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 响应的,但是,如果用户在邮件仍在发送的情况下关闭主应用程序窗口,它将被抢占。

关于c# - 打开包含附件的默认邮件管理器 (Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10088361/

相关文章:

vb.net - 如何使我的 VB.NET 表单应用程序启动方法成为 Program.vb 中的 Sub Main()?

c# - 如何在c#和vb.net中获取客户端机器的MAC地址

.net - InvokeMember 给出与直接调用不同的结果

c# - Windows 8.1 统一项目中的 Automapper 启动异常

c# - 如何使用 NServiceBus 避免 READPAST 锁定警告

c# - 尝试实现自定义格式化程序,但从未调用 ICustomFormatter.Format

.net - 并发垃圾回收如何与并行计算一起工作?

c# - 有没有其他方法可以在不使用 WebRequestMethods.Ftp.ListDirectory 方法的情况下测试 FTP 服务器的连接?

c# - 什么时候使用弱事件?

c# - C# 和 PHP 上的三重 DES 加密产生不同的结果