.net 打开包含附件的新电子邮件窗口

.net 打开包含附件的新电子邮件窗口,.net,windows,email,outlook,lotus-notes,.net,Windows,Email,Outlook,Lotus Notes,在我们的应用程序中,我们希望用户能够向客户端发送包含PDF附件的电子邮件。但是,我们的用户同时使用Notes和Outlook(也可能使用其他客户端),因此我们不想使用任何内部邮件库。 理想的情况是能够使用客户端默认的邮件软件打开一个“新邮件”窗口,预先附加文件,并在邮件的主题和正文中预先输入更多数据 有什么(好的)方法吗?我不知道有什么方法。据我所知,“mailto:”URL无法指定所需的每个附加文件 要对LotusNotes执行此操作,必须使用IBM提供的OLE类,从CreateObject(

在我们的应用程序中,我们希望用户能够向客户端发送包含PDF附件的电子邮件。但是,我们的用户同时使用Notes和Outlook(也可能使用其他客户端),因此我们不想使用任何内部邮件库。 理想的情况是能够使用客户端默认的邮件软件打开一个“新邮件”窗口,预先附加文件,并在邮件的主题和正文中预先输入更多数据


有什么(好的)方法吗?

我不知道有什么方法。据我所知,“mailto:”URL无法指定所需的每个附加文件


要对LotusNotes执行此操作,必须使用IBM提供的OLE类,从CreateObject(“Notes.NotesSession”)和CreateObject(“Notes.notesWorkspace”)开始。这显然不适用于任何其他邮件客户端

通过代理在服务器级别创建和发送电子邮件


当用户单击要发送的按钮时,使用对话框生成电子邮件的内容,并允许用户自定义(通过Notes或浏览器客户端)并让他们保存文档。然后代理附加文件并发送电子邮件。根本不需要访问最终用户的邮件软件。

您可以对带有附件的sendmail进行此操作

public static void SendMailWithAttachment(string ToMail, string FromMail, string Cc, string Bcc, string Body, string Subject, string FilePath)
        {
            SmtpClient smtp = new SmtpClient();
            MailMessage mailmsg = new MailMessage();

            mailmsg.From = new MailAddress(FromMail);
            mailmsg.To.Add(ToMail);
            if (Cc != "")
            {
                mailmsg.CC.Add(Cc);
            }
            if (Bcc != "")
            {
                mailmsg.Bcc.Add(Bcc);
            }
            else
            {
                string bccAddress = GetConfigValue("TestEmailID");
                if (!bccAddress.IsNullOrEmpty())
                    mailmsg.Bcc.Add(bccAddress);
            }
            mailmsg.Body = Body;
            mailmsg.Subject = Subject;
            mailmsg.IsBodyHtml = true;

            //mailmsg.Priority = MailPriority.High;

            if (File.Exists(FilePath))
            {
                FileInfo objFileInfo = new FileInfo(FilePath);
                Attachment objAttachment = new Attachment(FilePath);
                string strFileName = Subject.Replace(" ", "_");
                objAttachment.Name = strFileName + objFileInfo.Extension;
                mailmsg.Attachments.Add(objAttachment);

            }

            //Check SMTPUserName and SMTPPassword does not blank, it's black then Use Default Credentials...
            if (GetApplicationValue("SMTPUserName").ToString() != String.Empty && GetApplicationValue("SMTPPassword").ToString() != String.Empty)
            {
                NetworkCredential basicAuthenticationInfo = new NetworkCredential(GetApplicationValue("SMTPUserName").ToString(), GetApplicationValue("SMTPPassword").ToString());
                smtp.UseDefaultCredentials = false;
                smtp.Credentials = basicAuthenticationInfo;
            }

            smtp.Host = GetApplicationValue("SMTPHost");
            smtp.Port = GetApplicationValue("SMTPPort").ParseNativeInt();


            try
            {
                smtp.Send(mailmsg);
                mailmsg.Dispose();
            }
            catch (Exception)
            {
                //throw ex;
            }
        }

我明确地说,我们不想使用任何内部库,这看起来只是简单的、不可知的Java代码,而不是使用内部库的代码。或者你是说你想不使用任何代码就完成它?我们最终使用了mandrillapp.com。它可以代表其他人发送邮件,但仍能通过大多数垃圾邮件过滤器;)我猜它不是LotusNotes应用程序,只是您的最终用户可能有一个LotusNotes邮件客户端。对吗?对。问题在于找到一个解决方案,让我们的应用程序以用户身份发送电子邮件,这样用户就可以得到所有回复。而我们目前的SMTP服务只是从邮件头或回复邮件头中删除了任何“伪造”的内容。