2012-10-30 29 views
1

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

是否有任何(好?)的方式来做到这一点?

+0

我们结束了对它的使用mandrillapp.com。它可以代表其他人发送,并且仍然可以通过大多数垃圾邮件过滤器;) –

+0

我猜测它不是Lotus Notes应用程序,只是您的最终用户可能拥有Lotus Notes邮件客户端。那是对的吗? –

+0

这是正确的。问题在于找到一种解决方案,让我们的应用程序以用户的身份发送电子邮件,以便用户可以获得所有回复。而我们目前的SMTP服务只是删除了任何“伪造”From或Reply-To头。 –

回答

0

我没有办法知道。据我所知,“mailto:”URL不能指定您想要的每个附加文件。

要做到这一点的Lotus Notes,你将不得不使用IBM提供的OLE类,从CreateObject(“Notes.NotesSession”)和CreateObject(“Notes.NotesUIWorkspace”)开始。这显然不适用于任何其他邮件客户端。

0

通过代理创建并发送服务器级别的电子邮件。

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

0

你试试这个用于带附件的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; 
      } 
     } 
+0

我明确表示我们不想使用任何内部库。 –

+0

这看起来像是直接的,不可知的Java代码,不是使用内部库的东西。或者你是否说要在不使用任何代码的情况下执行此操作? –

相关问题