未找到

未发布 扫描识别控件Dynamic Web TWAIN 13.0发布,新增统一的Dynamsoft服务
by Harriet666 keys 分享 1498113059409
3fbc3fd1c68a47e882c9f1375c4badcbojpg我们很高兴地宣布Dynamic Web TWAIN(DWT)新版本v13.0已经发布,即跨浏览器、跨平台的Web扫描SDK。这个升级主要实现了一个新的设计 - 新的Dynamsoft服务加上不同的成像模块(扫描、摄像头捕获、PDF、条形码阅读器和OCR)。
使用新版本,你可以获得更轻松的安装和升级体验。
  1. 新的Dynamsoft服务只会处理最基本和最核心的功能,并相对稳定。安装后用户将很少需要升级。
  2. 所有模块的安装和未来的升级将变得“安静”。此外,你现在可以独立使用和升级所有模块。
  3. 用户可以在一台机器上运行多个版本的DWT。

Dynamic Web TWAIN 13.0更新内容

改进

  • [仅限HTML5]使用统一的Dynamsoft服务替换Dynamic Web TWAIN服务。更多信息 >
  • [仅限HTML5]使用Dynamsoft Barcode Reader SDK和Dynamsoft Camera SDK替换条形码附件和网络摄像头附件。更多信息 >
  • [仅限HTML5]授权提示现在支持多种语言。
  • [仅限HTML5]现在可以异步调用LoadImageFromBase64Binary方法。

修改

  • [仅限HTML5]将授权提示的默认行为更改为“始终隐藏”。

修复

  • 修复了当图像滚动时裁剪图像不会使用新坐标的错误。
  • 修复了当加载多页TIFF/PDF时会看到一个不必要的错误'TypeMismatchError'的问题。

注意

  • 此次版本升级中ActiveX版本将保持不变。

点击下载Dynamic Web TWAIN 13.0版本,体验新功能>>>
未发布 Google开源了Abseil,为C++和Python开发提供支持
by Harriet666 keys 分享 1507530171137
Google公开了其项目内部使用的一系列C++库,随后还会公开其Python库。

Abseil已在Google历经十多年的开发,它的目的是为Google编程人员在各种项目上的工作需求提供支持,这些项目包括Protocol Buffers、gRPC和TensorFlow等。Google评价Abseil为:
  • 它是从Google内部代码块中抽取出来的一系列最基础的软件库。作为基本的组成部分,这些软件库支撑了几乎全部Google在运行的项目。以前这些API是零零散散地嵌入在Google的大部分开源项目中,现在我们将它们规整在一起,形成这样一个全面的项目。
  • Abseil是Google代码库的最基本构建模块,其代码经过了生产环节测试,此后还会继续得到完全的维护。

最初,Abseil提供的抽象并非C++ 14或C++ 17的组成部分,但最终它们已被添加到C++标准中。例如,Google提供一个称为StringPiece的类型,随后C++ 17也添加了一个称为std::string_view的相近类型。为了与新的C++ 17类型具有一致的API,Google将StringPiece重构为absl::string_view。从底层机制上看,如果开发人员正在使用的是C++ 17,那么Abseil的string_view默认为标准实现;如果开发人员正在使用的是C++ 17以前的版本,那么string_view默认为Google的实现。
 
使用Abseil的优点在于可以访问一些目前依然尚未添加到标准中的C++特性,并且一旦这些特性被添加到C++标准中,Google保证会重构这些特性为默认使用标准实现。Google鼓励开发人员使用Abseil,并提及已有超过两亿五千万行的C++代码使用它,并且几乎所有从头开始构建的项目都使用了它。这意味着,Abseil已被Google广为使用,并出于与项目需求同步的考虑而得以频繁维护。
 
Abseil中包括如下的库:
  • base:初始化,以及其它的基础代码。 
  • algorithm:对C++的库的补充,并为原算法提供了基于容器的版本。 
  • container:提供了更多的STL类型容器。 
  • debugging:用于检查泄漏的调试库。 
  • memory:包括兼容C++ 11版本的std::make_unique()和内存管理。 
  • meta:包括兼容C++ 11版本的类型检查,在C++ 14和C++ 17版本的C++ 库中可用。 
  • numeric:兼容C++ 11的128位整数。 
  • strings:各种字符串工具。 
  • synchronization:并发原语和同步抽象。 
  • time:抽象了绝对时间点操作和时区操作。 
  • types:非容器工具的类型。 
Abseil的代码采用Apache许可,已发布在GitHub上。其Python版本的软件库将随后发布。
更多资讯>>>

未发布 MailBee.NET Objects显示HTML/纯文本邮件教程(二):在桌面应用程序中显示
by Harriet666 keys 分享 1502445139738
MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。
 
MailBee.NET Objects介绍和试用点击查看>>>
 
本文主要介绍了在桌面应用程序中显示HTML/纯文本邮件的代码示例。目前MailBee.NET Objects在线订购享75折优惠正在进行中,欢迎您下载试用版进行运用!
如果你需要在桌面应用程序中以纯文本控件(如Memo)显示HTML消息,则应将HTML文本转换为纯文本。
C#
msg.Parser.HtmlToPlainMode = HtmlToPlainAutoConvert.IfNoPlain;
VB.NET
msg.Parser.HtmlToPlainMode = HtmlToPlainAutoConvert.IfNoPlain
 
上面的代码将邮件转换为纯文本。然后你可以显示如下的纯文本正文(假设textBox1是表单上的文本控件):
C#
textBox1.Text += msg.BodyPlainText;
VB.NET
textBox1.Text += msg.BodyPlainText
未发布 百度正式开源其RPC框架brpc
by Harriet666 keys 分享 1506650334597
9月14日,百度正式在GitHub上基于Apache 2.0协议开源了其RPC框架brpc。brpc是一个基于protobuf接口的RPC框架,在百度内部称为“baidu-rpc”,它囊括了百度内部所有RPC协议,并支持多种第三方协议,从目前的性能测试数据来看,brpc的性能领跑于其他同类RPC产品。
 
brpc开发于2014年,主要使用的语言是C++和Java,是百度内部使用最为广泛的RPC框架,它经受了高并发高负载的生产环境验证,并支撑了百度内部大约75万个同时在线的实例。据了解,百度内部曾有多款RPC框架,甚至在2014年时还开源过另外一款RPC框架sofa-pbrpc。那brpc是在什么样的背景下诞生的?它有什么样的优势?又为何要开源?就这些问题,InfoQ记者采访了brpc负责人戈君。
 
Q:谈谈brpc的一些基本情况?什么时候开始研发的?经过了怎么样的迭代和升级?目前在内部应用情况如何?

戈君:brpc于2014年创建,在百度内部称为“baidu-rpc”。到目前为止,brpc一共进行了3000次左右的改动,现在仍在持续优化中,百度内的wiki上可以查询到每次改动的描述。brpc的主要语言是C++和Java,对其他语言的支持主要是通过包装C++版本,比如brpc的Python版包含C++版的大部分功能。
 
brpc目前支撑百度内部大约75万个同时在线的实例(不含client),超过500种服务(去年的统计,现在已不统计这类数据)。Hadoop、Table、Mola(另一种广泛使用的存储)、高性能计算、模型训练、大量的在线检索服务都使用了brpc。brpc第一次统一了百度内分布式系统和业务线的通信框架。
 
Q:为什么百度当时要研发brpc?

戈君:我们在实践中意识到,RPC作为最基础的通信组件,当时的百度已经不领先了。我当时的经理刘炀曾是Google的工程师,非常重视基础架构的建设,也愿意在这个方向投入资源。
 
我们在内部会更加深入地讨论这些问题。“好用”有时看起来很主观,但其实还是有据可循的,它的关键点是能不能真正地提高用户的效率:开发、调试、维护都要考虑到,如果用户效率真的被提高了,用户会想着你的,靠吹嘘或政令推广的东西得不了人心。我们创建brpc的初衷是解决百度业务所面临的实际挑战,同时也希望成为百度同学最喜爱的工具,哪怕离开百度也会怀念brpc。我们希望在提供了一个好用框架的同时,也展现了一种工作方法:注释怎么写,日志怎么打,ChangeLog怎么写,版本怎么发布,文档怎么组织,甚至对未来不在百度的同学的工作也有帮助,所以从这点来说brpc从一开始就是拥抱开源的。事实上,我们在口碑上做得还不错,brpc的wiki可能是百度内被点赞最多的内容之一。
 
Q:与其他的一些开源的RPC框架相比,brpc的优势是什么?

戈君:brpc主打的是深度和易用性。一方面我们没有精力像gRPC那样摊大饼,什么都做。另一方面我们也注意到gRPC(包括更早的Thrift)的深度和易用性并不够。技术方面的东西就是这样,看示例程序,文档非常牛逼,但实战中可能就是另一回事了,为什么各个公司都要造自己的轮子,一个隐藏原因就是表面高大上的东西在一些细节上让你无法忍受。

RPC真正的痛点是什么?是可靠性、易用性和定位问题的便利性。服务中不要出现不可解释的长尾,程序的可变项要尽量少,各种诡异问题要有工具支持快速排查。而这些在目前开源的RPC框架中做的并不好,它们大多看着很牛,但就是无法在自己组织中推广开来。回到前面那三点,brpc是如何做的呢?
  • 可靠性。这一方面是代码质量问题,通过为brpc团队设立很高的招聘门槛,以及在团队中深入的技术讨论,我们确保了稳固的代码基础。另一个问题是长尾问题,这是设计问题,brpc其实包含了很多模块,其中的bthread是一个M:N线程库,就是为了更好地提高并发避免阻塞。brpc中的读和写都是wait-free的,这是最高程度的并发。技术细节请点击链接查看。
  • 易用性。有种设计是什么选择都做成选项丢给用户,号称功能都有,但一旦出问题,则是用户“配置错了”。而且这样用户还非常依赖开发团队,没有开发团队的支持基本用不了,开发团队有足够的理由扩充团队。这么做其实非常不负责任,用户面对海量的选项也很难受。brpc对于增加选项非常谨慎,框架能自己做判断的绝不扔给用户,所有用户选项都有最合理的默认值,不设也能用。我们认为这对用户体验来说非常重要。
  • 定位问题的便利性。这点其它开源框架目前做的都不好,正常使用是可以的,但出问题就麻烦了。这个问题在百度内部其实也很严重,brpc之前用户排查问题都要拉RPC同学一起排查,RPC框架对用户是个黑盒,用户根本不知道里面发生了什么。按我们的经验,基本每天都有几个用户在群里问server卡顿,client超时之类的问题,排查问题是常态,人手必然不够。时间长了用户就觉得你这个框架各种问题,人还拽的不行很少回他们消息。brpc的解决办法是给server内加入各种HTTP接口的内置服务,通过这些服务,用户可以很快看到server的延时、错误、连接、跟踪某个RPC、CPU热点、内存分配、锁竞争等信息,用户还可以使用bvar来自定义各类统计信息,并在百度的运维平台NOAH上汇总。这样大部分问题用户可以自助解决。其实我们去看也是看这些,只是会更加专业。内置服务的具体说明可以看这里。
 
Q:作为公司内部的RPC框架,在服务治理方面有什么考虑?

戈君:百度内部RPC使用非常广泛,基本都是RPC调用,一些产品线还会通过local RPC隔离工程框架和策略代码。这么多年下来,服务周边的系统也比较全面了:编译是BCLOUD,发布是Agile,服务注册和发现是BNS,认证是Giano,监控和运维是NOAH。在百度内部,brpc和这些系统做了比较紧密的绑定,用户体验是一站式的。虽然在开源版本中,这些结合大都删掉了,但用户可以根据自己组织中的基础设施来进行定制:交互协议,名字服务,负载均衡算法都可以定制。对于其中一些特别通用的,我们希望用户反馈到开源版本中来以方便所有人。
 
Q:之前百度还开源过sofa-pbrpc,brpc与它的区别是什么?

戈君:sofa-pbrpc也是百度开发的一个比较早期的RPC框架,属于sofa编程框架的一部分,在搜索有应用。brpc相比sofa-pbrpc有如下优点:
  • 对协议的抽象更一般化,并统一了全百度的通信架构。bprc能容纳非常多的协议,基于Protobuf的,基于HTTP的,百度内的nshead/mcpack,开源的Redis/Memcached,甚至RTMP/FLV/HLS直播协议,brpc能逐渐地嵌入现有系统,而不需要彻底重构,但sofa-pbrpc则不具备扩展协议的能力。类似的,sofa-pbrpc也无法定制负载均衡算法,brpc默认提供round-robin、随机、一致性哈希,Locality-aware(局部性感知)四种算法,用户还能定制。
  • 多线程质量更好。多线程编程是非常困难的,看起来简单的RPC遍布多线程陷阱,比如处理超时的代码可能在RPC还没发出去时就运行了;发送函数还没结束,处理回复的回调就被运行了;一个回复还在被处理另一个回复回来了,诸如此类。另外,一个异步RPC的回调里发起一个同步RPC会发生什么,带着锁做同步RPC会发生什么。这些问题我们都不能在sofa-pbrpc中找到满意的答案。
  • 完备的调试和运维支持。解决这个问题的本质还在可扩展性,你如何让用户参与进来定制他们感兴趣的指标,为此我们设计了bvar,让用户能用比原子变量代价还小的方式自由地定制各种指标,用户能在浏览器上看到指标的变化曲线,或在运维平台NOAH看到汇总的监控数据。brpc还加入了大量内置服务方便用户调试程序,查看连接,在线修改gflags,追踪RPC,分析CPU热点,内存分配,锁竞争等一应俱全。
无需讳言,brpc在诞生之初和sofa-pbrpc在百度内部是有竞争关系的,但就像其他地方一样,这种竞争带来了活力。类似的,brpc和其他已经开源的RPC框架也是良性的竞争关系,在比拼谁能真正提高用户效率的过程中共同进步。每个用户都可以去对比代码、文档质量,接口设计,易用程度,扩展能力等,投出自己的一票。
 
Q:谈谈brpc的整体架构?

戈君:技术栈无外乎是从传输层垒到应用层,就略过不讲了,具体可以去看下开源出来的文档。brpc在架构上强调“在不牺牲易用性的前提下增强可扩展性”,比如brpc支持非常多的协议,在百度内部一个brpc server同端口可以支持二十几种协议,这对于服务的平滑迁移就非常好用。

Client端的协议也非常多,用户用brpc和bthread用得很爽,所以希望我们最好能统一所有的客户端,像对Redis和Memcached的客户端支持也是在这个背景下做的,这两个客户端比官方Client好用多了,感兴趣的读者可以去尝试一下。但这么多协议的配置非常简单,填个字符串就行了,比如HTTP就是把ChannelOptions.protocol设为“http”,Redis就是“redis”。Server端甚至不用设,它会自动判断每个client的协议,怎么做到的开源文档里也有。

名字服务、负载均衡也都可以定制。但为了对用户负责,我们也不鼓励“太自由”的定制,比如一点点需求的变化就要搞个新的,这时更需要想清楚本质区别是什么。这个事情我们在百度内的支持群里每天都在做,我们是开放的”乙方”,但我们也是严厉的”乙方”。
 
Q:brpc的性能如何?这么高的性能是怎么做到的?

戈君:性能是我们非常看中的一点,它和用户体验也是紧密联系的。好用但性能不行,或不好用但性能很牛,用户会很难受,我们不希望用户纠结。从另一个角度来看,在推广初期,我们要说服产品线用brpc靠什么?最直观的就是性能提升。而且这儿的性能不能停留在benchmark的图片上,而是能在真实应用中体现出来。开放出来的案例文档中或多或少都包含了性能提升,具体如下:
  • 百度地图API入口
  • 联盟DSP
  • ELF学习框架
  • 云平台代理服务
 
Q:为什么要将brpc开源?接下来在开源项目的迭代方面有什么计划吗?

戈君:因为马上还有不少依赖RPC的百度系统要开源啊。RPC作为最基础的组件,开源不仅仅是为了自身,也是为其它开源项目铺路,比如说我们马上还会开源基于brpc的RAFT库,搭建高可用分布式系统非常方便;以及使用brpc的bigflow,让流式计算变得很顺手。这些年百度对开源的认识也在不断加深,开源看似曝光了百度的核心技术,但带来的生态影响力更重要。从Apollo、PaddlePaddle开始,百度真的开始拥抱开源了。brpc的开源版和内部版很接近,只是去掉了对百度内部独有的一些基础设施的支持,我们在内网写的深入分析RPC技术细节的文档也都一并开源了,后续也会及时推送改动,请大家放心。这是一个活项目,不会拉个开源分支就不管了。
查看更多资讯>>>

未发布 客户端开发包OPC Data Client更新至v5.51,支持Visual Studio 2017
by Harriet666 keys 分享 1516698671953
制造自动化软件的领先供应商,Software Toolbox®宣布发布OPC Data Client的2017.2(5.51)版本。2017.2(5.51)版本中的新增功能包括支持Visual Studio 2017,支持安全策略Basic256Sha256,改进的HTTPS支持以及改进的连接浏览器!
 
OPC Data Client新版本下载>>>
 
新版本更新重点:
  • 支持安全策略Basic256Sha256
  • 支持Visual Studio 2017
  • 改进HTTPS支持
 
Targeting
  • 操作系统:不再支持带有SP1的Microsoft Windows Server 2008 R2(x64)。
  • 操作系统:不再支持Microsoft Windows 10(x86或x64)2015年11月更新(1511)。
  • 开发工具:Visual Studio 2017添加到主要开发工具列表中。
 
技术
  • 该产品现在主要使用Visual Studio 2017进行开发。
 
安装和卸载
  • 设置组件“开发库(COM)”的说明已更改为“类型库(COM)”,其名称已从“devlibs”更改为“typelibs ”。
  • 与OPC UA应用程序及其行为相关的参数已从UAClientEngineParameters移至新类型UAClientApplicationParameters,并且UAClientEngineParameters现在具有包含这些参数的ApplicationParameters属性。这允许更多的逻辑组织参数。受影响的属性是AllowClientCertificatePrompt,ApplicationCertificateStore,ApplicationCertificateSubject(obsolete),ApplicationName,ApplicationUriString和ProductUriString。             
 
用户界面
  • 在浏览对话框和控件时,OPC UA端点的“节点信息”框现在包含用户标识的信息。如果用户身份不是“匿名”,则文本以粗体显示。
  • OPC-UA服务器实例证书未验证通知现在包含“查看证书”按钮,允许用户显示一个对话框,其中包含证书及其关联证书链的属性。
 
工具
  • 连接浏览器
  • 新增文件 - > 重新启动命令(重新启动应用程序)。    
  • “参数编辑器”窗口现在具有“重置”按钮,允许用户快速将所选点类型的参数恢复为其默认值。
 
文档
  • “用户指南与参考”主要提供了COM组件的分离参考文档。
  • COM组件的参考文档现在只能在线(不包含在Visual Studio集成帮助中)。
 
删除
  • 代码合同程序集已被删除。
更多完整更新内容,请参考更新列表。
未发布 MailBee.NET Objects发送电子邮件(SMTP)教程四:发送包含文本和html的电子邮件
by Harriet666 keys 分享 1493805065916
MailBee.NET Objects介绍和试用点击查看>>>
 
在单行代码中快速发送电子邮件的最简单的方法是使用SMTP对象的QuickSend方法。在这种情况下,开发人员甚至不需要创建一个新的SMTP对象实例。只需要指定其基本属性(如From、To、Subject、Body等):
C#:
MailBee.SmtpMail.Smtp.QuickSend("from@me.com", "to@you.com", "Subject", "Message Body");         
VB.NET:
MailBee.SmtpMail.Smtp.QuickSend("from@me.com", "to@you.com", "Subject", "Message Body")
开发人员还可以使用QuickSend方法发送带有附件的电子邮件,如下所示:
C#:
MailBee.SmtpMail.Smtp.QuickSend("From Me (Company Info)",
                                "To you ",
                                "Subject", "Plain text body",
                                "HTML-formatted body",
                                null, @"C:\My Documents\report.doc");      
VB.NET:
MailBee.SmtpMail.Smtp.QuickSend("From Me (Company Info)", _
                                "To you ", _
                                "Subject", "Plain text body", _
                                "«html»HTML-formatted body«/html»", _
                                Nothing, "C:\My Documents\report.doc")
开发人员可以直接使用一个SMTP对象的实例,该实例提供了广泛的方法和属性来调整消息发送的过程。C#应用程序中的SMTP对象的新实例可以创建如下:
C#:
Smtp oMailer = new Smtp();      
VB.NET:
Dim oMailer As New Smtp()
如果SMTP服务器不需要任何身份验证,那么指定的主机名或相同的IP地址就可以连接到此SMTP服务器,如下所示:
C#:
oMailer.SmtpServers.Add("smtp.domain.com");   
VB.NET:
oMailer.SmtpServers.Add("smtp.domain.com")
或者
C#:
oMailer.SmtpServers.Add("127.0.0.1");     
VB.NET:
oMailer.SmtpServers.Add("127.0.0.1")
另一方面,如果SMTP服务器需要身份验证,开发人员应该确定该服务器上的帐户名称和相应的密码:
C#:
oMailer.SmtpServers.Add("smtp.domain.com","login","password");      
VB.NET:
oMailer.SmtpServers.Add("smtp.domain.com","login","password")
或者
C#:
oMailer.SmtpServers.Add("127.0.0.1","login","password");        
VB.NET:
oMailer.SmtpServers.Add("127.0.0.1","login","password")
然后,开发人员应确定邮件发件人的电子邮件地址,如下所示:
C#:
oMailer.From.AsString = "Dan Brown (Company Info)";         
VB.NET:
oMailer.From.AsString = "Dan Brown (Company Info)"
或者
C#:
oMailer.From.AsString = "Dan Brown ";        
VB.NET:
oMailer.From.AsString = "Dan Brown "
或者
C#:
oMailer.From.AsString = "dan@domain.com";       
VB.NET:
oMailer.From.AsString = "dan@domain.com"
添加To、Cc、Bcc或Reply-To,开发人员应使用SMTP对象的相应属性,如下所示:
C#:
oMailer.To.AsString = "Bill Smith (Remarks), Kathy@mail.com ";
oMailer.Cc.AsString = "Joe Black , Joseph ";
oMailer.Bcc.AsString = "t.jay@domain.com, s.connor@domain.com";
oMailer.ReplyTo.AsString = "john@domain.com, Barbara Jones ";      
VB.NET:
oMailer.To.AsString = "Bill Smith (Remarks), Kathy@mail.com "
oMailer.Cc.AsString = "Joe Black , Joseph "
oMailer.Bcc.AsString = "t.jay@domain.com, s.connor@domain.com"
oMailer.ReplyTo.AsString = "john@domain.com, Barbara Jones "
要指定邮件主题,开发人员应使用SMTP对象的Subject属性,如下所示:
C#:
oMailer.Subject = "Test message";         
VB.NET:
oMailer.Subject = "Test message"
此外,邮件可能没有主题。
开发人员还应该确定信息的正文。如果是纯文本,开发人员应该使用BodyPlainText属性:
C#:
oMailer.BodyPlainText = "This is a test e-mail message.";        
VB.NET:
oMailer.BodyPlainText = "This is a test e-mail message."
如果开发人员要使用HTML格式的正文,那么应该设置BodyHtmlText属性:
C#:
oMailer.BodyHtmlText = @"
Test HTML message.



        
        


        This is a test HTML mes-sage.
        


        

        www.afterlogic.com";​
VB.NET:
oMailer.BodyHtmlText = "
Test HTML message.


" & vbCrLf & _
        "" & vbCrLf & _
        "

" & vbCrLf & _
        "This is a test HTML mes-sage." & vbCrLf & _
        "

" & vbCrLf & _
        "
" & vbCrLf & _
        "www.afterlogic.com"
开发人员也可以将这两种类型同时使用。在这种情况下,邮件客户端的设置会影响显示哪个正文。
要将任何文件附加到电子邮件中,开发人员应使用AddAttachment方法,该方法只需要开发人员指定此文件的完整路径。要添加多个附件,开发人员应重复调用AddAttachment方法,如下所示:
C#:
oMailer.AddAttachment(@"C:\annual_reoprt.xls");
oMailer.AddAttachment(@"C:\deposits.doc");       
VB.NET:
oMailer.AddAttachment("C:\annual_reoprt.xls")
oMailer.AddAttachment("C:\deposits.doc")
要发送信息,开发人员应调用SMTP对象的Send方法。由于此方法可能会引发异常,开发人员可以按如下方式处理这些异常:
C#:
try
{
    oMailer.Send();
    Console.WriteLine("The message has been successfully sent.");
}
catch (MailBeeSmtpRefusedRecipientException e)
{
    Console.WriteLine("The following recipient was refused by SMTP server: " + e.RefusedRecipientEmail);
}        
VB.NET:
Try
    oMailer.Send()
    Console.WriteLine("The message has been successfully sent.")
Catch e As MailBeeSmtpRefusedRecipientException
    Console.WriteLine("The following recipient was refused by SMTP server: " + e.RefusedRecipientEmail)
End Try
示例代码:
摘要:以下示例创建一个包含纯文本和HTML格式主体的邮件,并添加.xls文档附加。然后将邮件发送给两个指定的收件人。
在使用MailBee.NET Objects之前,请确保它已解锁。
C#:
using System;
using MailBee;
using MailBee.SmtpMail;
namespace EmailApp
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            Smtp oMailer = new Smtp();
            oMailer.From.AsString = "John Doe (Company Info)";
            oMailer.To.AsString = "Bill Smith , Kathy Ritchie (Company Info)";
            oMailer.Subject = "Test e-mail";
            oMailer.BodyPlainText = "This is a test e-mail message.";
            oMailer.BodyHtmlText = @"
Test HTML message.



            
           


            This is a test HTML mes-sage.
           


           

            www.afterlogic.com";
            oMailer.AddAttachment(@"C:\annual_reoprt.xls");
            oMailer.SmtpServers.Add("127.0.0.1", "login", "password");
            oMailer.SmtpServers[0].AllowRefusedRecipients = false;
            try
            {
                oMailer.Send();
                Console.WriteLine("The message has been successfully sent.");
            }
            catch (MailBeeSmtpRefusedRecipientException e)
            {
                Console.WriteLine("The following recipient was refused by SMTP server: "+
                e.RefusedRecipientEmail);
            }
        }
    }
}
    
VB.NET:
Imports System
Imports MailBee
Imports MailBee.SmtpMail
 
Namespace EmailApp
    Class Class1
         _ 
        Shared  Sub Main(ByVal args() As String)
            Dim oMailer As New Smtp() 
 
            oMailer.From.AsString = "John Doe (Company Info)"
 
            oMailer.To.AsString = "Bill Smith , Kathy Ritchie (Company Info)"
 
            oMailer.Subject = "Test e-mail"
 
            oMailer.BodyPlainText = "This is a test e-mail message."
 
            oMailer.BodyHtmlText = "
Test HTML message.


" & vbCrLf & _
            "" & vbCrLf & _
            "

" & vbCrLf & _
            "This is a test HTML mes-sage." & vbCrLf & _
            "

" & vbCrLf & _
            "
" & vbCrLf & _
            "www.afterlogic.com"
 
            oMailer.AddAttachment("C:\annual_reoprt.xls")
 
            oMailer.SmtpServers.Add("127.0.0.1", "login", "password")
 
            oMailer.SmtpServers(0).AllowRefusedRecipients = False
 
            Try
                oMailer.Send()
                Console.WriteLine("The message has been successfully sent.")
            Catch e As MailBeeSmtpRefusedRecipientException
                Console.WriteLine("The following recipient was refused by SMTP server: "+
                e.RefusedRecipientEmail)
            End Try
        End Sub
    End Class
End Namespace
未发布 扫描识别工具Dynamic Web TWAIN使用教程:建立一个“Hello World”扫描页面
by Harriet666 keys 分享 1511504073281
Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。
 
本文教你Dynamic Web TWAIN中只需3个步骤在5分钟内创建一个Web扫描应用程序的方法!
 
注意:开始之前,请确保您已经下载并安装了最新版本的Dynamic Web TWAIN。如果还没有安装,请在这里下载Dynamic Web TWAIN最新版

步骤一:启动一个Web应用程序

1.1 将Dynamsoft的Resources文件夹复制到您的项目中
Resources文件夹通常在C:\Program Files (x86)\Dynamsoft\Dynamic Web TWAIN SDK {Version Number} {Trial}\
image003
 
1.2 创建一个空的HTML页面
请将空的html页面与Resources文件夹放在一起,如下所示:
image004
 
步骤二:将Dynamic Web TWAIN添加到HTML页面
2.1 包含两个Dynamsoft JS文件
 
2.2 添加一个Dynamic Web TWAIN容器
1
<div id="dwtcontrolContainer"></div>
 
注意: “dwtcontrolContainer”是div的默认ID。如有必要,您可以在文件dynamsoft.webtwain.config.js中更改它。
 
步骤三:使用Dynamic Web TWAIN
3.1 添加一个扫描按钮和最小的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<input type="button" value="Scan" onclick="AcquireImage();">
<script type="text/javascript" data-filtered="filtered">
    var DWObject;
    function Dynamsoft_OnReady(){
        DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
    }
    function AcquireImage(){
        if(DWObject) {
            DWObject.IfDisableSourceAfterAcquire = true;
            DWObject.SelectSource();
            DWObject.OpenSource();
            DWObject.AcquireImage();
        }
    }
</script>
 
3.2 查看完成的代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<title data-filtered="filtered">Hello World</title>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.initiate.js" data-filtered="filtered"> </script>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.config.js" data-filtered="filtered"> </script>
 
 
<input type="button" value="Scan" onclick="AcquireImage();">
<div id="dwtcontrolContainer"> </div>
<script type="text/javascript" data-filtered="filtered">
        var DWObject;
        function Dynamsoft_OnReady(){
            DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
        }
        function AcquireImage(){
            if(DWObject) {
                DWObject.IfDisableSourceAfterAcquire = true;
                DWObject.SelectSource();
                DWObject.OpenSource();
                DWObject.AcquireImage();
            }
        }
    </script>
 
3.3 查看正在运行的扫描页面
如果你打开项目中的Hello World页面,它应该是这样的:
image005
 
现在,您可以点击“扫描”按钮选择一个设备,如下所示:
image006
 
注意:
  • 选择来源对话框中只列出了TWAIN兼容设备。如果连接的扫描仪没有显示在列表中,请按照这篇文章排除故障。
  • 如果您手边没有扫描仪,则可以安装虚拟扫描仪 - 由TWAIN工作组开发的扫描仪模拟器 - 用于测试目的。

扫描完成后,图像将显示在内置的Dynamic Web TWAIN查看器中:
image007
 
如果您安装了Dynamic Web TWAIN的30天试用版,您可以在C:\Program Files (x86)\Dynamsoft\Dynamic Web TWAIN SDK {Version Number} {Trial}\Samples\Getting Started\获取完整的Hello World应用程序。
image008
 
本次教程到此结束,希望能对Dynamic Web TWAIN的用户带来帮助,接下来还会有更多的相关教程,敬请期待!
未发布 全新的Microsoft Office 2016发布,以更少步骤更快地执行工作
by Harriet666 keys 分享 1491535680003

微软在旧版Office基础上对软件做了升级,打造了全新的 Office 2016 办公软件,Office 2016新功能包括附带的Office移动应用程序,其中包括家庭版、个人版及专业版等多个Office版本。全新的 Office 2016 功能众多。你可以借助 Office 365,立即完成作业。新功能有助于以更少步骤更快执行工作、轻松与他人协同创作,并可随时随地获取文档。

Microsoft Office 2016应用的新增功能

                                                                                                                                                                                           

                         
简化协同作业
利用 Office 2016,可更轻松地共享文档并同时与他人协作。
协同处理文档
通过在 Word、PowerPoint 和 OneNote 中共同创作,查看其他人的编辑内容。提升后的版本历史记录让你可以在编辑进程的过程中回顾文档快照。
简化共享
只需单击按钮即可直接从文档中共享。还可使用 Outlook 中的新式附件(从 OneDrive 中附加文件),并在不退出 Outlook 的情况下自动配置权限。
Office 跨所有设备运行
跨任何设备查看、编辑、分析和演示 Office 2016 文档,从电脑或 Mac 到 Windows 和 Apple®,再到 Android™ 电话和平板电脑均可实现。
Office 满足你的需求
使用 Office 2016 以全新更快的方式持续执行任务,达到期望结果。
借助 Tell Me 查找命令
只需告知 Word、Excel 或 PowerPoint 所希望的操作,Tell Me 功能即可引导你找 到命令。
使用 Bing 支持的“智能查找”实现实施核查
“智能查找”使用高亮显示的术语和文档的其他上下文信息,以提供来自 Web 的搜索结果,一切操作均在文档中完成。
更少点击即可查看见解
使用一键式预测将历史数据迅速转变为未来趋势分析。全新图表有助于直观显示复杂数据。
                                                                                        

                                                                                                                                                                                   

                      
Office 随你而动
从工作到钟爱的咖啡店,始终在所有设备上跟进重要信息(朋友、家人和项目)。
Office 应用经过优化可实现触控
通过触控进行阅读、编辑、缩放和导航。使用数字墨迹记笔记或进行注释。
利用 OneDrive 云存储空间实现所有功能
轻松保存到云存储空间,并在设备间切换而无任何错误。无论你使用的是哪种设备,Office 应用都会恰好在你中断的位置继续操作。
完美适用于 Windows 10
Office 2016 和 Windows 10 的组合是执行作业的全球最完整解决方案。
Hello
只需说一次“Hello”,Windows 即会将你登录到电脑和 Office — 只需一步全部完成。
Cortana
将 Cortana 引入 Office,以帮助你执行操作。让带 Office 365 集成的 Cortana 帮助处理会议准备等任务。
Office 移动应用
Windows 10 上的 Office 移动应用支持触控、反应迅捷,并且经过优化,实现了随时随地可用。

 

                                                         
 

                                                                                                                

                            
Office 最佳价值
利用 Office 365 灵活订阅计划,可挑选适合你的选项。选择个人计划或使用整个家庭的计划。
获取已安装的 Office 应用程序
Office 365 包括适合电脑和 Mac 的全新 Office 2016 应用,例如 Word、Excel、PowerPoint、Outlook 和 OneNote。
1 TB 的 OneDrive 云存储空间
OneDrive 让你在任意设备上随时随地始终跟进重要信息(朋友、家人、项目和文件)。
获取免费技术支持
在使用 Office 2016 方面需要帮助?每位 Office 365 订阅者都可从受过培训的 Microsoft 专家处获得免费技术支持。

 
Microsoft Office 专业版 2016 

使用 Office 更智能地工作 - 最适合希望在一台 PC 上使用包含了 Outlook、Publisher 和 Access 的 Office 的用户。

像专家一样工作

     

扩展 Office

 

轻松共享文件

获取像专家一样创建、演示、发送 和发布内容所需的工具 — Word、Excel、PowerPoint、OneNote、Outlook、Publisher 和 Access。                           

 

可使用 Office Online 实时查看、编辑以及与他人协作处理在线存储的文件。可从任何运行受支持浏览器且连接了 Internet 的设备访问内容。

 

在线存储文件以在外出时访问它们,你还可以快速邀请他人查看或编辑这些文件。

Office 专业版 2016 包括:






Office 套件                       
  • Word 2016、Excel 2016、PowerPoint 2016、OneNote 2016、Outlook 2016、Publisher 2016 和 Access 2016。

  • 使用键盘、笔或触摸屏,以最适合你的方式记录灵感。

  • 成为强大的 Office 用户 — 这很简单,只需在功能区上新增的“操作说明搜索”框中键入你需要获得帮助的问题即可获得操作方法。

  • 新主题使你能够选择适合你的 Office 体验。“深色”和“深灰色”主题提供让双眼感到更加舒适的高对比度,“彩色”主题提供在各设备间保持一致的现代外观。

  • 使用由必应提供支持的“见解”可增强你的阅读体验,该功能可在你阅读 Office 文件时显示来自网络的相关信息。

  • 借助“开始”屏幕中的模板完成大部分设置和设计工作,使你能够将精力放在创意和数据上。

  • 在 Word 文档中跟踪批注,并使用新的回复按钮将批注标记为完成。

  • 将 PDF 中的内容直接提取到 Word 中。如同在熟悉的 Word 文档中一样,打开 PDF 并编辑段落、列表和表。

  • 节省在 Excel 中设置信息格式的时间,以便更快地从数据中获得见解。新工具可识别你的模式并自动填充数据。

  • Excel 中新增的现代图表和图形提供更多借助你的业务数据探索和介绍经典案例的方式。Excel 能够推荐最适合你的数据的图表,并让你能够预览数据呈现外观。

  • 在 Excel 中,现在只需单击一下即可创建基于你的数据系列的预测,以便直观地呈现未来趋势。

  • 通过发送指向 PowerPoint 演示文稿的链接或使用免费的 Office Presentation Service 传递该演示文稿,在 Web 上共享该演示文稿,以便你的受众能够从任何位置进行访问。

  • OneNote 笔记本中可嵌入 Excel 电子表格、图表、音频剪辑、视频和几乎任何其他类型的文件。可以保存和搜索笔记,并将其同步到其他设备上的 OneNote 应用,从而能够从任何位置使用或共享它们。

  • 使用内联答复功能更快速地进行答复 - 在 Outlook 中的原始邮件正文处进行答复。只需在“阅读”窗格中键入答复内容。

  • 使用 Publisher 中的在线照片打印选项,节省时间。

  • 在 Access 中列出和汇总相关表中的数据或进行快速查询。只需单击一个项目即可打开该项目的详细视图。

  • 最适合家庭企业和超小型企业

 
未发布 UI组件库jQWidgets更新至v5.2.0,新增Angular枢轴网格丨附下载
by Harriet666 keys 分享 1504691512134
jQWidgets是一个基于jQuery JavaScript的综合性和创新性的HTML5 UI组件库,旨在帮助开发者创建专业、跨平台的Web应用程序,并最大限度的节省开发时间。jQWidgets包含30多种UI组件,是最快的JavaScript UI框架之一。

【最新版jQWidgets v5.2.0点击下载>>>】

jQWidgets v5.2.0更新内容:
新增:
  • Angular枢轴网格
  • React枢轴网格
  • 枢轴网格自定义元素
 
改进:
  • jqxTabs和jqxRibbon light主题。
 
修复:
  • 修复jqxListBox和jqxDropDownList中关于enableSelection属性动态设置时的问题。
  • 修复jqxCheckBox和jqxRadioButton中事件发生时关于event.args.type成员的问题。
  • 修复jqxPivotGrid中当鼠标在滚动条上释放时鼠标选择的问题。
  • 修复jqxPivotGrid中关于命中测试功能的问题。
  • 修复jqxTabs中关于Tabs在IFrame内删除事件侦听器的问题。
  • 修复jqxGrid中当点击垂直和水平滚动条之间的区域时鼠标选择的问题。
未发布 LEADTOOLS v19更新发布文档和医疗功能,增加Visual Studio 2017兼容性!
by Harriet666 keys 分享 1490165179812

LEAD Technologies发布了LEADTOOLS v19 SDK的重大更新,本次更新侧重于文档和医疗功能,其中一些功能在商业SDK市场中是前所未有的。包括第一个完整的商业Hanging Protocol SDK解决方案、大图像(以TB为单位)支持、文档格式支持以及更新各种识别技术,包含OCR、表单、OMR、条码、信用卡读卡器和Visual Studio 2017的兼容性。

LEADTOOLS v19 (Windows、Linux、IOS/macOS、Android)下载>>>

LEAD Technologies总裁Rich Little表示:“这次更新是LEAD继续加强LEADTOOLS以解决现实问题的一个很好的例子。我们非常高兴能够拥有第一个商业医疗查看器SDK,包括完整的DICOM Hanging Protocol、优化的大图像加载和一个新的超快速表单识别算法。26年前我和Moe创建LEAD时,我们从来没有想过可以加载1TB的图像。”

以下是一些主要更新内容:
  • 第一个商业性DICOM Hanging Protocol SDK
  • HTML5 Zero-footprint 医疗Web浏览器 - 新的功能和增强
  • DICOM存储服务器 - 新功能
  • 更高效地处理DICOM Pixel数据
  • SDK识别技术 - 增强对OCR、表单 & OMR以及新的复合条形码的识别
  • 文档查看器 - 新的功能和增强
  • 文档格式 - 功能增强
  • 信用卡读卡器SDK - 支持更多平台
另外,本次更新后LEADTOOLS v19可以与Visual Studio 2017实现兼容!
点击查看具体功能更新日志>>>

 近期热门 - 点击最多
  1. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  2. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  3. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  4. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  5. React Native使用fetch发送http登陆验证请求失败:无法读取set-cookie并显示network request failed
  6. 克服Redux的缺点在React/Native中使用消息队列,pubsub-js更加简洁的组件间通信和状态传递方法
  7. Springboot+Gradle+Mysql+Jpa最简单实例教程
  8. SpringBoot+Spring6入门指南: 使用命令行快速搭建restful web api模板
  9. 如何通过 winax 的 ActiveXObject 或 Excel.Application 往 excel 中插入一张图片
  10. node.js用activex/com+自动化读写excel时查询接口、参数的调试方法

  全端社区 - 最新回复
  1. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  2. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  3. Node.js 打印vite react+go项目目录树
  4. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  5. Windows与Mac通过git ssh和rsync实现文件共享互传
  6. Windows与Mac通过git ssh和scp实现文件共享互传
  7. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  8. 使用PubSub-JS时ReactNative在后台运行一段时间唤醒后,组件无法scribe到publish的事件,typescript实现一个事件订阅发布组件
  9. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  10. ReactNative获取Android/iOS的MAC/IP地址: react-native-device-info模块的安装与使用

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA