在PCB行业中,工程系统是主要数据生产者,而这些数据不仅仅给自己系统使用呀,我们需要将数据传递到各系统,才达到各系统共同协作的目的。

这里以问答方式对实现方式进行讲解。呵呵呵!

后台自动集成问题解答:

一.工程系统中数据是主动推送还是被动拉取?

工程系统中的数据通常采用是主动推送到各系统中去的(MES,OMS,APS,ADD,ERP,集成平台)

二.工程系统与多少个系统集成,集成关系图是怎么的呢?

目前工程与6个系统有集成关系,集成关系图如下所示。

三.怎么实现后台自动集成的?

当工程MI流程指示上网或某一个节点的状态完成后,即开始将工程数据与状态节点信息等集成到公司各系统

我们制作了一个后台定时检测节点状态已完成了但数据集成未成功生产型号,

并将这些未集成成功的型号筛选出来放进待自动集成的订单池中,在后台定时任务进行跑集成.

四.采用什么的方式进行定时任务?

我们采用的是Windows任务计划程序,将集成的程序挂在任务计划程序上面,进行定时触发批量集成程序 ,由于此工具稳定可靠,所以采用了此方式实现。

五.由于数据集成是后台集成,是否有界面供用户可以可以查看集成状态呢?

那当然啦,这是系统上设计最基本的,我们增加了一个模块专用于所有监控集成的状态信息.

六.由于是后台自动集成,是否有预警功能,当集成失败后是否通知到对应的人处理?

有呀,目前设置的次数是:当集成失败次数大于3次时,后台自动发送邮件通知对应的人处理。

这是发送样例:

七.后台自动邮件用的哪种方式发送?

采用的是配置公司邮件主机IP与端口号的方式发送邮件

代码如下(不需要安装客户端):

   /// <summary>
/// 发送邮件
/// </summary>
/// <param name="mailSubjct">邮件主题</param>
/// <param name="mailBody">邮件正文</param>
/// <param name="mailFrom">发送者</param>
/// <param name="mailAddress">接收地址列表</param>
/// <param name="HostIP">主机IP</param>
/// <param name="filename">附件名</param>
/// <param name="username">用户名</param>
/// <param name="password">密码</param>
/// <param name="ssl">加密类型</param>
/// <returns></returns>
public static string sendMail(string mailSubjct, string mailBody, string mailFrom, List<string> mailAddress, string HostIP, string filename, string username, string password, bool ssl)
{
string str = "";
try
{
MailMessage message = new MailMessage
{
IsBodyHtml = false,
Subject = mailSubjct,
Body = mailBody, From = new MailAddress(mailFrom)
};
for (int i = ; i < mailAddress.Count; i++)
{
message.To.Add(mailAddress[i]);
}
if (System.IO.File.Exists(filename))
{
message.Attachments.Add(new Attachment(filename));
}
SmtpClient client = new SmtpClient
{
EnableSsl = ssl,
UseDefaultCredentials = false
};
NetworkCredential credential = new NetworkCredential(username, password);
client.Credentials = credential;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Host = HostIP;
client.Port = 0x19;
client.Send(message);
}
catch (Exception exception)
{
str = exception.Message;
}
return str;
}

八.为什么不采用OutLook邮件发送?

原因1:由于自动集成的任务布署在服务端,没有安装OutLook

原因2:哪怕服务端安装了OutLook客户端也不建议采用,后台自动推送邮件不适合用OutLook,

OutLook最佳应用场景:工程系统采用的是CS架构,在C端执行某个功能按钮后,需要发邮件通知对方,可以采用此方式实现。

并且可以在发件箱中查看已发送的邮件信息哦。

代码如下(需安装OutLook客户端):

        /// <summary>
/// OutLook发送邮件方法
/// </summary>
/// <param name="mailFrom">发件人,无实际效果</param>
/// <param name="sendTo">收件人</param>
/// <param name="copyTo">抄送,以字符';'分割</param>
/// <param name="subject">主题</param>
/// <param name="body">邮件内容</param>
/// <param name="isFj">是否有附件</param>
/// <param name="FjPath">附件地址</param>
/// <returns></returns>
public static string OutlookSendMail(string mailFrom, string sendTo, string copyTo, string subject, string body, bool isFj, string FjPath)
{
StringBuilder buff = new StringBuilder();
string[] mailccAddressList = copyTo.Split(';');
for(int i=;i< mailccAddressList.Length;i++)
{
buff.AppendFormat("{0}<{1}> ; ", "", mailccAddressList[i]);
}
Microsoft.Office.Interop.Outlook.Application outlookApp = new Microsoft.Office.Interop.Outlook.Application();
try
{
Microsoft.Office.Interop.Outlook.MailItem newMail = (Microsoft.Office.Interop.Outlook.MailItem)outlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
newMail.To = sendTo;
newMail.Subject = subject;
newMail.CC = buff.ToString();
newMail.Body = body;
if (isFj)
{
foreach (var FjPath_ in FjPath.Split(';'))
{
newMail.Attachments.Add(FjPath_);
} }
newMail.Send();
return "成功";
}
catch(Exception ex)
{
return ex.Message;
}
}

写到最后:事在人为,只要想去做,总有办法,不想去做总要理由

PCB 后台自动系统集成与邮件推送实现的更多相关文章

  1. 解决.NET Core中MailKit无法使用阿里云邮件推送服务的问题

    在博问中(.net core怎么实现邮件发送)知道了MailKit无法使用阿里云邮件推送服务发送邮件的问题,自已实测也遇到同样的问题,而用自己搭建的邮件服务器没这个问题. 于是,向阿里云提交了工单.. ...

  2. Laravel 下结合阿里云邮件推送服务

    最近在学习laravel做项目开发,遇到注册用户推送邮件的问题,之前用java做的时候是自己代码写的,也就是用ECS推送邮件,但是现在转php的laravel了就打算用php的邮件发送功能来推送邮件, ...

  3. 用ASP.NET Core 1.0中实现邮件发送功能-阿里云邮件推送篇

    在上篇中用MailKit实现了Asp.net core 邮件发送功能,但一直未解决阿里云邮件推送问题,提交工单一开始的回复不尽如人意,比如您的网络问题,您的用户名密码不正确等,但继续沟通下阿里云客户还 ...

  4. RedMine项目管理系统邮件推送设置(Windows环境)

    RedMine项目管理系统有邮箱推送功能,当Bug,安全漏洞等内容被修改.解决.评论的时候,系统会通过邮件 及时的通知你的团队和客户.邮件通知的环节.形式.时间.接受人均可定制,功能十分实用. 下面是 ...

  5. Android 后台应用保活、消息推送

    3.针对以往Android版本的各种保活技术回顾 Android P之前为了搞定客户的投诉:“为什么微信能收到消息而你们的IM却不能?”,为了解决这个“痛点”,广大的Android开发者们只能让各种黑 ...

  6. wordpress使用阿里云邮件推送服务实现发送邮件

    之前用腾迅云时,配置了wordpress是可以使用邮件服务的,然而到了阿里云,却无法使用了,有人说是因为阿里云关了25端口,但腾迅好像也关了. 百度看看有没有其他方法,最终让我找到个方法,可惜不是很完 ...

  7. Delphi阿里云邮件推送【支持单一发信、邮件批量发送和获取指定条件下的发送数据】

    作者QQ:(648437169) 点击下载➨Delphi阿里云邮件推送               阿里云api文档 [Delphi阿里云邮件推送]支持SingleSendMail(单一发信接口). ...

  8. 记一次邮件推送的坑,c#基于smtp使用腾讯企业邮箱发送邮件总是失败的原因

    今天在弄企业邮箱推送的东西,原版代码是这样的 public void SendEmail(string title, string content) { try { MailMessage mailM ...

  9. SpringBoot 简易实现热搜邮件推送,妈妈再也不用担心我不了解国家大事了

    1.前言 上班的时候,无聊的时候,偶尔跑去百度看下热搜,所以就萌生出这种想法,通过邮件推送的方式实现效果,首先找到百度热搜的页面 热搜,话不多说,直接开干. 2.环境准备 因为是个SpringBoot ...

随机推荐

  1. (转)淘淘商城系列——初始SolrCloud

    http://blog.csdn.net/yerenyuan_pku/article/details/72944611 本文我只是简单介绍一下SolrCloud,如果大家要是感兴趣的话,可以参考Sol ...

  2. post发送 ArrayBuffer

    // 用 POST 方法将 ArrayBuffer 发送到服务器 ); var longInt8View = new Uint8Array(myArray); ; i< longInt8View ...

  3. 【转载】文件上传Expected MultipartHttpServletRequest: is a MultipartResolver错误解决

    引入包commons-fileupload-*.jar,版本号可以根据项目情况调整: 在spring mvc配置文件中增加配置,文件大小限制可根据项目情况调整: <!-- 上传文件拦截,设置最大 ...

  4. Attention-based Model

    一.Attention与其他模型 1.LSTM.RNN的缺点:输入的Memory长度不能太长,否则参数会很多. 采用attention可以输入长Memory,参数不会变多. 2.Sequence to ...

  5. Django - 模版语言循环字典

    1.可以对传入字典参数做循环显示 views.py中代码: urls.py中代码: html中代码: 在模版语言中,可以对字典进行类似python中的操作(keys,values,items),需要注 ...

  6. 关于while((c=getchar()))的一些应用与思考

    最近做题发现一个特别牛逼又特别神奇的读取入字符串的方法 while((c=getchar())!=....) { //do something } 为什么说强大呢,首先这个表达式对空格回车都不怕,他不 ...

  7. 使用Python的Flask框架,结合Highchart,动态渲染图表(Ajax 请求数据接口)

    参考链接:https://www.highcharts.com.cn/docs/ajax 参考链接中的示例代码是使用php写的,这里改用python写. 需要注意的地方: 1.接口返回的数据格式,这个 ...

  8. python 函数编写指南

    #函数编写指南:1.给函数指定描述性名称,且只在其中是用小写字母和下划线 2.每个函数都应包含简要的阐述其功能的注释,该注释应紧跟在函数定义后面,且采用文档字符串格式 3.给形参指定默认值时,等号两边 ...

  9. bug的分类和等级

    一.bug的定义 软件的bug,狭义指软件程序的漏洞或缺陷,广义指测试工程师或用户提出的软件可改进的细节.或与需求文档存在差异的功能实现等 对应三个测试目的:(3个为了) 1.为了发现程序的代码或业务 ...

  10. Django——1 环境搭建

    Django 什么是Django 使用前的准备工作 新建项目 开启服务器 新建APP 简单实战 什么是Django框架 http服务器:用来接受用户请求,并将请求转发给web应用框架进行处理.Web应 ...