2013-10-06 36 views
0

我正在向控制台应用程序发送电子邮件正文作为参数,事情是我只在控制台应用程序上看到前4个字符<div另一部分会发生什么?我可以将HTML电子邮件文本作为参数发送给控制台应用还有什么办法从控制台应用程序返回一个字符串[]数组?发送参数到控制台应用程序并返回字符串数组

我到目前为止下面的代码:

TestingConsoleApp检测发送n接收:

static void Main(string[] args) 
{ 
     string emailBody = System.IO.File.ReadAllText(@"C:\Users\ehsankayani\Desktop\email1Html.txt"); 
     CallProcess(emailBody); 
} 

static void CallProcess(string body) 
{ 
     string path = @"F:\Scrappers\emailParser_app\emailParser_app\bin\Debug\emailParser_app.exe"; 
     Process.Start(path, body); 
} 

主控制台应用程序:

static void Main(string[] args) 
{ 
      Console.WriteLine("EMAIL BODY = "); 
      string[] dataToReturn = new string[8]; 
      //string emailBody = System.IO.File.ReadAllText(@"C:\Users\ehsankayani\Desktop\email1Html.txt"); 
      string emailBody = args[0]; 
      Console.WriteLine(emailBody); 
      Console.WriteLine(emailBody.Length); 
      Console.ReadLine(); 
      var doc = new HtmlAgilityPack.HtmlDocument(); 
      doc.LoadHtml(emailBody); 
} 

有什么建议?

回答

1

上接收简单的HttpUtility.EncodeHtml(Emailbody),同时发送和HttpUtility.DecodeHtml(emailBody)做这项工作。

2

您正在传递body作为CallProcess中的参数集。所以如果身体是例如

​​

然后args [0]将只是xxxx。您需要在文本周围放置“”,并在文本中跳转“

更好的解决方案是设置您的进程以重定向stdin并将主体写入进程'标准输入。这将避免使用空格和引号的问题。看看http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardinput.aspx的详细信息,这样做。

+0

是的,你是正确的加入“”身体的工作,但它打破了; ..不确定你的意思是“进程重定向标准输入,并写入进程的身体”标准输入“? – confusedMind

+0

已更新我的答案以提供解释如何为进程执行stdin/stdout重定向的链接。 –

+0

使用HtmlDecodeand n HtmlEncode工作正常,但不工作时,我输入HtmlEncode并将其发送到mainapp它不会转换写在HtmlDecode.However但如果我把它放在同一个应用程序作为测试它转换罚款任何建议? – confusedMind

0

由于您提出了一些建议:对于复杂和/或大型数据,我宁愿只传递数据到被调用进程的数据,对于返回的数据也可以做同样的事情

这有几个积极的影响,这些数据越复杂,越大:您不必确保数据符合命令行限制,您不必分配大量内存来编码/解码这两个进程中的数据,并且您不需要实现逻辑来执行此操作。相反,将数据写入文件,共享内存区域(MMF)等并传递该地址。

几乎唯一的缺点是你必须考虑谁负责清理。

另一种可能的方法可能涉及进程间通信,但我认为这有点矫枉过正。

相关问题