0

我将电子邮件正文作为参数发送到控制台应用程序,问题是我<div在控制台应用程序上只看到前 4 个字符,另一部分会发生什么?我可以将 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);
}

有什么建议么?

4

3 回答 3

2

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

xxxx yyyy ....

那么 args[0] 将只是 xxxx。您需要在文本周围加上“”,并在文本中的“”中转义。

一个更好的解决方案是设置您的流程以重定向标准输入并将正文写入流程的标准输入。这将避免空格和引号的问题。查看http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardinput.aspx了解有关执行此操作的详细信息。

于 2013-10-06T11:13:31.310 回答
1

发送时简单的 HttpUtility.EncodeHtml(Emailbody) 和接收时的 HttpUtility.DecodeHtml(emailBody) 就可以完成这项工作。

于 2013-10-06T11:27:25.460 回答
0

由于您寻求建议:对于复杂和/或大型数据,我宁愿仅将在何处找到数据的信息传递给被调用的进程。对返回的数据也可以这样做

这有几个积极的影响,这些数据越复杂越大:您不必确保数据与命令行限制匹配,您不必分配大量内存来编码/解码数据这两个过程,你不需要实现逻辑来做到这一点。相反,将数据写入文件、共享内存区域 (MMF) 等并传递该地址。

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

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

于 2013-10-06T12:02:36.363 回答