优化C#小程序集成实现python定时段批量下载电子邮箱附件的bug排除
Posted nanke_yh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化C#小程序集成实现python定时段批量下载电子邮箱附件的bug排除相关的知识,希望对你有一定的参考价值。
目录
继上一篇长文(python实现电子邮件附件指定时间段,批量下载以及C#小程序集成实现_nanke_yh的博客-CSDN博客)中所实现的程序之后,进行了相关的应用和测试,发现了一些bug,这些bug导致的问题比较严重,在这里进行排除和优化。
1、测试问题与现象
将程序拷贝至其他机器进行脱环境测试运行,发现存在秒运行结束现象,然后无文件输出。
2、排查和发现
首先怀疑是python开发的exe在新机器运行失败:直接使用cmd调用exe程序,发现运行结果正常;
再就是检查从c#端输入的参数是否正确:依次检查,发现默认截止日期,textBox5.Text上输出的日期为7位数,因为是月初,day位单数,那么其中的0被省略了。之前的代码:
textBox5.Text = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString();+ DateTime.Now.Day.ToString();;
那么会导致这种现象,但是并不是导致秒运行结束的原因。因为手动输入截止日期还是存在秒运行结束的问题。
最后再次检查发现是保存路径下其中有个文件夹名内使用了空格:更改路径后正常,如此定位该问题所在。
3、bug危害和改正措施
在上面发现了两个bug,第一是截止日期中单月单日会被省略0字符。这将会导致下载和遍历的邮件时间范围对应不上,甚至检索不到该时间范围的邮件。
为此,需要补全被省去的“0”,改动:
string tempmonth, tempday;
if (DateTime.Now.Month.ToString().Length != 2)
{
tempmonth = "0" + DateTime.Now.Month.ToString();
}
else
{
tempmonth = DateTime.Now.Month.ToString();
}
if (DateTime.Now.Day.ToString().Length != 2)
{
tempday = "0" + DateTime.Now.Day.ToString();
}
else
{
tempday = DateTime.Now.Day.ToString();
}
textBox5.Text = DateTime.Now.Year.ToString() + tempmonth + tempday;
第二个bug则比较致命,因为是传入参数给python的程序运行,只应该传入6个参数,然后由于路径中多了一个空格,使之判断为传入七参数,导致运行失败。为此加上路径判断和提示:
if (FilePath.IndexOf(" ") != -1)
{
MessageBox.Show("保存路径的文件夹名中存在空格会导致程序执行失败,请重新选择保存路径!", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
改正之后就都正常了,有兴趣的可以下载源码(内部包含.py文件和C#工程文件),自己尝试一下呀。 GetEmailFile.rar-C#文档类资源-CSDN文库https://download.csdn.net/download/nanke_yh/33245218
以上是关于优化C#小程序集成实现python定时段批量下载电子邮箱附件的bug排除的主要内容,如果未能解决你的问题,请参考以下文章