未找到

未发布 2017年移动开发中优秀的10大框架
by Harriet666 keys 分享 1488161905996
框架被视为复杂的软件开发环境。它们包括许多子组件,其主要工作是帮助您创建应用程序。框架提供了许多工具集、调试器、编译器、不同的代码库,应用程序编程接口和其他组件。它们都是为了让应用程序开发人员工作变得更加容易。框架是APP开发的基础,它们可以使整个开发过程变得更简单、更令人兴奋。没有框架,开发人员将从头开始编写他们想要开发的每个应用程序。这将涉及大量的编码来让应用程序可以在不同的平台上工作。这里将列举出最好的框架来让你的开发更简单和更容易。

点击查看十大框架具体信息>>>

未发布 微软的dotnet-new工具可以使创建JavaScript Web 程序变得更简单
by Harriet666 keys 分享 1488337232319

Microsoft发布了一组工具,使用他们的dotnet-new工具和使用Node.js的灵活方法可以快速生成基于JavaScript的Web 应用程序。

dotnet-new工具是.NET Core工具的一部分,用于使用简单的命令启动一个新项目。作为ASP.NET Core JavaScript Services的一部分,Web开发人员现在可以使用相同的命令来启动新的单页应用程序(SPA)。

点击查看完整内容>>>

未发布 【推荐】2017年你应该了解的11款新型编程工具
by Harriet666 keys 分享 1503912408799
对于开发人员来说,工具是至关重要的。工具可以使开发人员的日常工作更加轻松、高效,因为只要关注最重要的事情即可。想要寻找到更好的替代工具往往比坚持使用熟悉的、过时的工具要困难得多。在这篇文章中,我们将列出你可以在日常工作中使用的一些新的编程工具。对在线流媒体感兴趣的许多开发人员也已经开始在其开发环境中使用这些新工具,因为这些工具与其陈旧的设施相比具有明显的优势。
 
你可能会想,如果旧的工具可以完成工作,那么是否还有必要去寻找新的替代工具呢?可以肯定的说,技术始终在变革,它正在不断地塑造、改变我们的工作方式,所以,它有必要保持更新。此外,新开发工具可以通过自动化在某些方面为你的工作增添更多价值,从而更好地帮助你控制你的工作流程。所以,如果你现在确信并准备好考虑使用市场上一些新的编程工具,请继续阅读本文,以找出其中最好的、最适合你的工具。
 

1. LiveEdu


LiveEdu 是开发人员和工程师经常光顾的好地方。它是一个基于项目的学习平台,服务于游戏开发、设计、数据科学、编程、增强现实、人工智能以及虚拟现实等方面的技能提升。学习的关键在于项目的真实性,而且 LiveEdu平台还提供了蕴含许多不同主题的项目教程,可以适用于任何人,包括初学者。
 

2.Standup


Standup 对于监控团队开发进度而言是一款非常好的工具。它可以很好地集成所有你已经在用的流行工具(例如Trello、BitBucket、GitHub等)。那么接下来,它是如何工作的呢?首先,它会根据开发团队成员的提交历史完全自动地生成工作报告。这有助于团队成员之间轻松地实现信息共享,也让团队成员之间形成了积极的竞争关系。这一想法是由Mesh Studio提出的,当时他们正在完成一个客户的严格的汇报需求的合同工作。
 

3. Cell 

Cell 自称是“自驱动的网页应用开发框架”。“框架”这一关键词应该会立刻让你想到,它应该包含APIs、方法、或其他框架应该具备的功能。但是,Cell却提供了一种全新的方式来查看如何编写HTML 代码。它适用于3个简单的规则,而且不运行任何函数就能够自主构建DOM。此外,Cell还提供了一种类似写小说的方式(a novel approach)来开发网页应用。
 

4. Osquery

Osquery 是 Facebook 通过 Query 语言揭示操作系统的方法。虽然乍看起来并不是很有趣,但它其实具有很多实际的用途。例如,它可以用于获取通过USB连接的硬件设备的列表。
 
对于那些想要保护自己的应用程序免受安全漏洞影响,或是能够更好地监视其应用程序在不同系统上的性能的Web开发人员来说,其中一个相对比较有效的方法就是不使用底层函数或API交互的能力。

 

5. React Native Firebase

React Native Firebase 可以帮助开发人员更加轻松地使用 React Native 和Firebase。利用RN Firebase,你可以 在Android和iOS系统上使用 JavaScript bridge轻松访问本地 eFirebase SDK。
 

6. Warp

Warp 是一款非常简单的工具。它可以让任何人分享他们的终端。共享终端就像输入一个 warp open 命令一样简单。这可以帮助开发人员或主机供应商轻松地分享彼此的终端。这款工具的关键特征在其“安全性”和“易于传输”。让分享变得前所未有地容易!你很快就会忘记SSH 的必要性,并使用该功能与远程团队和新成员进行互动。
 

7. Draft

Draft 是一款新工具,可以帮助开发人员轻松地在 Kubernet上构建应用程序。截至目前为止,在把应用移动到版本库之前,对应用程序进行测试仍然是一项耗时且艰巨的工作。但是,利用 Draft,开发人员就可以针对“内部循环”并在Kubernetes开发沙箱中对应用程序进行测试。沙箱可以通过公共URL轻松获得,并可以使用本地编辑器进行修改。
 

8. Docsify 

Docsify 是一个文档站点生成器工具。但是,它与其他的静态HTML文件生成器却是完全不同的。利用Docsify,你可以使用 Markdown 文件生成你的站点。这样一来,你就可以修改Markdown中的代码,并及时看到更新。这种差异性使它与其他流行工具(例如GitBook等)相比也能占据明显的竞争优势。


9. Prismic IO 

Prismic IO 是一个无头CMS系统的后台应用。多亏了API,让它可以与任何站点和应用程序一起使用,并可以轻松地与现有系统进行集成。此外,CMS 还为营销人员提供了一些现代化的发布和创作工具。


10. Javalin

Javalin 为Kotlin和Java提供了简单的REST API。该REST API非常易于使用,且API也是非常流畅的。它不是一个框架,因此不应该被混淆。其目的主要是提供一个非常简单易用的轻量级 REST API库。
 
以下是用Kotlin实现的 “Hello World”API的示例:
import io.javalin.Javalin
funmain(args: Array) {
    val app = Javalin.create().port(7000)
    app.get("/") { ctx -> ctx.result("Hello World") }
}


11. Bootsnap

我们都知道,速度对于一些应用程序而言有多重要。Ruby的性能可谓是臭名昭著。然而,Bootsnap尝试通过缓存很多Ruby方法并提高其整体性能来加快其速度。Bootsnap可以以gem的形式轻松地插入你的应用程序中,它目前可用于 MacOS 和 Linux 系统。
未发布 Essential Studio for JavaScript发布2017 v4版本,添加Essential JS 2工具包
by Harriet666 keys 分享 1516351007437
Essential Studio for JavaScript是首款专门用于LOB应用开发的JavaScript框架。包含40多种独特的、全新设计的控件,包括网格、图表、计量器、编辑器、树形视图、菜单、OLAP网格等等。
 

ESSENTIAL JS 2:企业级JAVASCRIPT UI工具包

Essential JS 2是一个现代的JavaScript UI工具包,具有轻量级、响应式和模块化的特点。它是用TypeScript编写的,完全支持Angular和React框架的完整支持。目前有以下组件可供使用:
  • Grid
  • Chart
  • Drop-Down List
  • Tree View
  • Date Picker
  • Dialog
  • Numeric Text Box
  • Tab
  • Toolbar
  • Circular Gauge
  • Linear Gauge
  • Form Validator
  • Combo Box
  • Autocomplete
  • Multiselect Drop-Down
  • Calendar
  • Date Range Picker
  • Button
  • Radio Button
  • Check Box
  • Text Box
  • Time Picker
  • Masked Text Box
  • List View
  • Tooltip
  • Context Menu
  • Accordion
完整的包可以从npmGitHub中获得。
查看演示
2d0ee79c3c0b40b781b46b85c269d443ojpg
 

支持ANGULAR 5

用于Angular组件的基本JavaScript已经升级到无缝支持Angular 5。
 

组合框

新的控件
组合框组件允许用户输入一个值或从预定义选项列表中选择一个选项。单击此组件的箭头图标时,下拉列表将显示用户可以从中选择的值列表。
 
主要特征
  • 数据绑定:允许绑定和访问本地或服务器端数据源的项目列表。
  • 分组:支持将单个或特定类别下的逻辑相关项目进行分组。
  • 排序:支持按字母顺序(升序或降序)排序列表项。
  • 过滤:允许根据组件中输入的字符过滤列表项目。
  • 模板:允许自定义列表项目、选定的值、页眉、页脚、类别组页眉。
  • 可访问性:内置的可访问性支持有助于通过键盘、屏幕阅读器或其他辅助技术设备访问所有组件的功能。
 

媒体播放器

新的控件
JavaScript的媒体播放器提供了一个简单而强大的视频和音频播放器,内置控制选项。它支持HTML5标准音频和视频格式,如MP4、MP3、WebM和Ogg。
 
主要特征
  • 支持HTML5标准视频。
  • 支持YouTube视频。
  • 内置控制栏,用于桌面和移动设备的所有基本操作,包括播放/暂停、下一首、上一首、音量控制和全屏。
  • 时间轴滑块,便于导航。
  • 标题栏。
c9b384463e464f0b9e59dfe642f91166ojpg
 

CHART

轴标签
支持显示多行轴标签。

 
显示外部数据标签
现在可以在图表区域内显示部分可见的数据标签。
 

数据管理器

防伪
防伪令牌可用于帮助保护应用程序免受跨站请求伪造。它生成一个隐藏的表单字段(防伪造标记),在提交表单时进行验证。
 
额外的数据操作
提供了IN和NotIN过滤器操作用于在WHERE过滤器中指定多个值。
 

DIAGRAM

对齐
支持定制用户手柄的位置。

 
端口增强
现在可以拖动端口来重新定位端口。

 
对称布局
对称布局是用于以圆形和对称方式排列图的自动布局。

 
标签交互
已经为标签提供了交互支持。他们可以被选中、拖动、调整大小和旋转。
 

AUTOCOMPLETE

搜索索引多栏弹出
现在可以区分多列AUTOCOMPLETE控件中的显示格式和搜索字段,允许用户在列表中搜索任意数量的字段,而无需修改所选的文本格式。
 

条码

EAN
条形码控制器现在支持EAN-8和EAN-13条形码。
 

计算

27个新的Excel公式
支持以下Excel公式:
ASINH,ATANH,AVERAGEIF,AVERAGEIFS,BASE,BESSELI,BESSELJ,BESSELK,BESSELY,COUNTIF,MMULT,MOD,NORMSDIST,NORMDIST,ODD,POWER,PV,RADIANS,RAND,ROUND,ROUNDUP,ROUNDDOWN,SECH,SUMPRODUCT,TEXT, VLOOKUP和STDEV。
 

下拉列表

服务器过滤
在搜索框中输入文本时,此功能将过滤数据源。过滤是基于包含来自整个数据源的匹配项。
 
服务器过滤:远程数据
 
服务器过滤:本地数据
 

文件管理器

支持鼠标选择
支持在文件资源管理器控件中使用鼠标管理文件/文件夹。
 

KANBAN

外部拖放
KANBAN控件现在支持与其他控件之间的拖放操作。
 
没有数据源的KANBAN列
KANBAN列可以在不绑定数据源的情况下显示。
 

滑块

添加按钮
添加了一个可以隐藏的按钮,允许增加和减少滑块的值。
 

甘特图

 
资源分配视图
甘特图控件支持资源分配视图。使用该视图,用户可以解释在同一日期发生的任务以及项目中资源的过度分配。
2820158d42a74615b57182485b50c1eaojpg
 
排序
现在可以根据行顺序显示具有序列号的任务。
9735e84a7c5d43b5bb25c29d3b1b1f89ojpg
 
多行选择
现在可以选择多行并执行缩进和负缩进操作。
6a44aceda37444c7b23b6d97d3180658ojpg
 
列过滤
现在可以过滤甘特图控件中的特定字段或列。
 
展开/折叠记录
甘特图控制现在支持扩展和折叠特定的记录。
未发布 网络通讯组件包Red Carpet Subscriptions 2017 v2发布,升级整个代码库
by Harriet666 keys 分享 1501060223518
Red Carpet Subscriptions 2017 v2包括整个产品线的升级代码库,拥有迄今为止最佳的性能、质量和可用性。还包括许多安全更新,支持最新的开发工具,新组件等。我们已将所有组件升级到2016版本。

更新重点


整个产品线的升级

  • 每个产品都已升级到新的代码库,提供更强大的安全性、更好的性能和改进的API。
  • .NET版本支持Microsoft Visual Studio 2017。
  • Delphi和C ++ Builder版本支持Embarcadero RAD Studio 10.2 Tokyo。
  • 默认的签名算法已经更新到SHA-256。

IP*Works! Encrypt安全更新

  • 组件通过了Google的Wycheproof测试。
  • 新的Rijndael组件支持NIST标准。
  • OpenPGP默认签名算法更新为SHA-256。
  • 添加了对SHA-512/256和SHA-512/224的Hash支持。

Cloud Storage Integrator的更多选项

  • 支持Google Drive API v3。
  • 新的AzureBlob组件允许你使用Azure Blob存储。

改进X12和EDI积分器

  • 新的X12Translator组件可轻松将X12转换为XML,反之亦然。
  • 增强API、文档解析和JSON编程功能。

使用TCP与IP*Works! SNMP

  • 新组件(SNMPTCPMgr,SNMPTCPTrapMgr和SNMPTCPAgent)允许你使用SNMP。

IP*Works! SSH的新隧道功能

  • SSHReverseTunnel组件现在具有智能重新连接的功能。

新订阅优惠:选择版本的源代码

  • 为了帮助你在任何Linux系统上进行编译,无需依赖共享对象文件,Red Carpet Subscription包含访问macOS、iOS、C ++ for Linux、PHP和Node.js版本的混淆源代码。

细节


所有产品

  • 支持Micosoft Visual Studio 2017
  • 支持Embarcadero RAD Studio 10.2 Tokyo
  • 默认签名算法更新为SHA-256

IP*Works! Encrypt

  • 新的Rijndael组件。
  • OpenPGP默认签名算法更新为SHA-256。
  • 支持SHA-512/256和SHA-512/224。

IP*Works! SNMP

  • TCP的新组件 - SNMPTCPMgr、SNMPTCPTrapMgr、SNMPTCPAgent。
  • SysUpTime属性支持64位整数集。

X12 Integrator

  • 新的X12翻译器组件 - 轻松将X12转换为XML,反之亦然。
  • API更新为标准化输入/输出选项并提供更一致的体验。
  • 用于可视化和解析文档结构的附加功能。
  • 使用RSSBus JSON模式时可以使用改进的可读值。

IP*Works! SSH

  • SSHReverseTunnel智能重连。

EDI Integrator

  • AS2事件的日志记录。
  • AS2默认签名算法更新为SHA-256。
  • 增加OFTPClient AcceptFile事件。
  • AS4默认加密算法更新为AES128-GCM。
  • OFTP LocalFile添加到Transfer和EndTransfer事件。
  • 添加了RNIF SignatureAlgorithm属性。
  • GISB默认使用内部PGP提供程序。

EDIFACT Integrator

  • API更新为标准化输入/输出选项,并提供更一致的体验。
  • 用于可视化和解析文档结构的附加功能。
  • 使用RSSBus JSON模式时可以使用改进的可读值。

IP*Works! S/MIME

  • API更新为标准化输入/输出选项,并提供更一致的体验。

IP*Works! Auth

  • 添加OneTimePassword组件。
  • ClaimsAuth现在是SAML。
  • 用于用户和组信息的Active Directory方法。
未发布 扫描识别工具Dynamic Web TWAIN使用教程:如何自定义Web TWAIN对象
by Harriet666 keys 分享 1511773524429
Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。
本文教你在Dynamic Web TWAIN中如何自定义Web TWAIN对象,欢迎收藏。
 
Dynamic Web TWAIN最新版免费下载>>>

命名Dynamic Web TWAIN对象

默认情况下,(第一个)Dynamic Web TWAIN对象会被命名为“ DWObject ”。您应该在使用任何其他Dynamic Web TWAIN属性或方法之前设置它。内置函数Dynamsoft_OnReady是一个有效方法。例如,在我们的Hello World示例中:
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>
ID为“dwtcontrolContainer”的div是Dynamic Web TWAIN的占位符。它的名称和大小可以在在文件dynamsoft.webtwain.config.js 中定义,如下所示。您可以根据需要进行修改。
1
Dynamsoft.WebTwainEnv.Containers = [{ContainerId:'dwtcontrolContainer',Width:270,Height:350}];
 

更改查看器的大小

您可以简单地在dynamsoft.webtwain.config.js中更改内置查看器的大小。这里可以使用数字或百分比。例如
1
Dynamsoft.WebTwainEnv.Containers = [{ContainerId:'dwtcontrolContainer',Width: '50%',Height:350}];
 

更改安装提示的样式

如果未安装Dynamic Web TWAIN,则会看到提示用户安装SDK的内置界面。
image015
 
在大多数情况下,您可能需要修改“Dynamsoft标志”。“标志”是在文件\Resources\reference\hint.css中定义的:
1
2
3
4
5
6
.DYNLogo
    {
    background:url(logo.gif) left top no-repeat;
    width:159px;
    height:39px;
    }
图像 (\Resources\reference\logo.gif)是需要更改的文件。最简单的方法是用自己的标志替换它,但需要保持相同的名称和大小。image016
 
如果您想进一步更改此提示的样式,可以更改上面提到的css或更改文件\Resources\dynamsoft.webtwain.install.js中的代码:
1
2
3
4
5
6
7
8
9
10
11
12
function OnWebTwainNotFoundOnWindowsCallback(ProductName, InstallerUrl, bHTML5, bIE, bSafari, bSSL,
strIEVersion) { }
    /* This callback is triggered when Dynamic Web TWAIN is not installed on a PC running Windows */
    function OnWebTwainNotFoundOnMacCallback(ProductName, InstallerUrl, bHTML5, bIE, bSafari, bSSL,
strIEVersion) { }
    /* This callback is triggered when Dynamic Web TWAIN is not installed on a MAC */
    function OnWebTwainOldPluginNotAllowedCallback(ProductName) { }
    /* This callback is triggered when Dynamic Web TWAIN is disabled by a non-IE browser */
    function OnWebTwainNeedUpgradeCallback(ProductName, InstallerUrl, bHTML5, bMac, bIE, bSafari, bSSL,
strIEVersion) { }
    /* This callback is triggered when Dynamic Web TWAIN installed on the machine is older than the //one on
the server and upgrade is needed */

本次教程到此结束,希望能对Dynamic Web TWAIN的用户带来帮助,接下来还会有更多的相关教程,敬请期待!

未发布 微软:Visual Studio 2017是迄今为止最高效的版本
by Harriet666 keys 分享 1489998441630
Visual Studio 2017 全面上市。欢迎大家即刻下载体验全新的 Visual Studio 2017!我们还为整个 Visual Studio 产品系列进行了更新,让 Visual Studio 订阅用户和 Visual Studio Dev Essentials 的会员收获更多价值。

Visual Studio 2017:迄今为止最高效的版本

我们针对 Visual Studio 2017 的多个关键领域进行了重点研发——包括改进基础部件、提供五星级的云和移动开发体验,以及提升 DevOps 功能,以确保 Visual Studio 2017 可以助力每一位开发者在各种平台上开发各类应用。

在发展 Visual Studio 2017 这一全新版本时,我们将云和移动开发置于最重要的位置。为了简化云开发流程,内置的各项工具将为您提供有关.NET Core、Azure 应用、微服务、容器等应用开发的完整集成功能,甚至现在可以更轻松地由 IDE 直接开发和部署 Azure 应用和服务。Visual Studio 2017 with Xamarin 让你能够通过先进的调试和分析工具更加快速地为安卓、iOS 和 Windows 平台开发移动应用。

我们也重视聆听用户心声,并清楚地了解到用户希望 Visual Studio 变得更为快速、更精简,即使所面对的应用开发和项目愈加庞大。因此,我们将为用户提供全新的安装体验,让一切变得轻便而模块化。为提高 Visual Studio 的性能,我们还增强了多项功能。Visual Studio 2017 还将交付多项全新特性,帮助开发团队能够轻松地实践现代化的 DevOps 做法,更为快速而持续地应对市场变化。为了帮助开发者更好地把自己的数据库嵌入 DevOps,加速发布周期,Redgate Data Tools 工具现已加入 Visual Studio Enterprise 2017 服务当中。

未发布 MailBee.NET Objects退回邮件教程(二):POP3部分
by Harriet666 keys 分享 1503567760428
MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,
简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。

MailBee.NET Objects介绍和试用点击查看>>>
 
 
本文主要介绍了SMTP服务器退回邮件的代码示例。目前MailBee.NET Objects在线订购享75折优惠正在进行中,欢迎您下载试用版进行运用!
 
在上期的SMTP部分中,我们将退回的电子邮件发送到指定的单个电子邮件地址。
 
每封退回的电子邮件都包含失败的电子邮件地址(以及其他信息)。这个失败的地址是我们想知道的。这个任务看起来很简单 - 你需要做的是扫描退回的
邮件以确定地址的典型字段。但是有一个隐藏的危险:每个邮件服务器都有自己的邮件退回格式。虽然它们几乎具有相同的“From”和“主题”字段,但是退回地址可以在邮件的任何位置。MailEnable服务器的典型退回邮件如下所示:
From: POSTMASTER@domain.com
To: jdoe@domain.com
Subject: Message Delivery Failure

MailEnable: Message Delivery Failure.

The following recipient(s) could not be reached: 

Recipient: [SMTP: bill@domain.com] Reason: The message could not be delivered because the domain name (domain.com) does not appear 

to be registered.

函数GetInvalidEmailAddressME()检查邮件是否被退回,并从退回的邮件中提取失败的地址。由于退回邮件格式不同,此功能仅对MailEnable服务器有效。例如,如果你正在使用Communigate Pro服务器,则退回消息如下所示:
From: MAILER-DAEMON@domain.local
To: jdoe@localhost Subject:
Undeliverable mail:

Failed to deliver to ''
 
正如你所看到的,这个退回的邮件与前一个几乎相同。使用哪个服务器并不重要,退回信息总是有From,To和Subject字段,退回信息在其正文中有失败的地址。函数GetInvalidEmailAddressCP()与前一个函数几乎相同; 区别仅在于检查邮件字段并搜索失败的地址。支持尽可能多的退回电子邮件格式至关重要。这就是为什么你需要修改GetInvalidEmailAddress()函数,以适应服务器使用的退回电子邮件格式。
 
注意:在某些情况下,你可能需要扫描退回的电子邮件以获取其他信息。如果由于暂时的问题,退回的邮件到达,则不要删除电子邮件地址:邮箱超过配
额,邮件服务器关闭等。退回邮件可以分为两种类型:硬邮件和软邮件。如果是不存在的帐户或域,则会发生硬性退回。其他故障,如完整的邮箱或暂时
不可用的域,则是软性退回。你可以为数据库中的每个地址进行计算。也许下一次尝试发送邮件到具有一些软性退回的地址时将成功。
 
代码示例:
在此示例中,我们从指定的帐户中检索退回的电子邮件,然后从每个退回的电子邮件中提取失败的电子邮件地址。失败的地址传递给RemoveEmailFromDatabase子程序,该子程序必须从数据库中删除失败的地址。应用程序还会从服务器中删除退回的电子邮件,以避免下次处理。
C#:
// Create POP3 object
Pop3 pop = new Pop3();

// Enable logging to file
pop.Log.Enabled = true;
pop.Log.Filename = @"C:\log.txt";
pop.Log.Clear();

// Connect to POP3 server
pop.Connect("mail.domain.com");
pop.Login("bounce", "secret");

// Download headers and bodies of all messages.
MailMessageCollection msgs = pop.DownloadMessageHeaders(1, -1, -1);
                        
// Loop through all messages in the mailbox
foreach (MailMessage msg in msgs)
{
        string strLine = msg.BodyPlainText;
        Console.WriteLine("From: " + msg.From.Email);
                                
        // Get failed email address
        string str_invalid_email =  GetInvalidEmailAddressME(msg);

        // If str_invalid_email is non-empty then failed email 
        // address was found
        if (str_invalid_email.Length > 0)
        {
                // Remove failed email from database
                RemoveEmailFromDatabase(str_invalid_email);

                // Display invalid adress
                Console.WriteLine("Invalid email: " + str_invalid_email);                

                // Delete bounced email from server to avoid
                // processing it next time
                pop.DeleteMessage(msg.IndexOnServer);
        }
}

// Disconnect from POP3 server
pop.Disconnect();

// The function checks whether the message is bounced and extracts 
// failed address 
// from bounced message. Valid only for MailEnable servers
static string  GetInvalidEmailAddressME(MailMessage msg)
{
        string str_invalid_email = msg.BodyPlainText;

        // Check if this is a bounced message report
        if (msg.Subject.IndexOf("Delivery Failure") == -1)
{ 
                return "";
        }
        if (msg.From.ToString().IndexOf("POSTMASTER") == -1)
        {
                return "";
        }

        // Now we're sure this is a bounced message report
        int i_start;
        i_start = str_invalid_email.IndexOf("SMTP:");

        // Check if bounced message report contains "Recipient:" field
        if (i_start == -1)
        {
                return "";
        }
                        
        // Get failed address
        i_start += 5;
        i_end = str_invalid_email.IndexOf("]",i_start);
        str_invalid_email.Substring(i_start, i_end);
                        
        return str_invalid_email;
}

// The function checks whether the message is bounced and extracts 
// failed address 
// from bounced message. Valid only for Communigate Pro servers
static string  GetInvalidEmailAddressCP(MailMessage msg)
{
string str_invalid_email = msg.BodyPlainText;

        // Check if this is a bounced message report
        if (msg.Subject.IndexOf("Undeliverable mail") == -1) 
        {
                return "";
        }
        if (msg.From.ToString().IndexOf("MAILER-DAEMON") == -1) 
        {
                return "";
        }

        // Now we're sure this is a bounced message report
        int i_start;
        i_start = str_invalid_email.IndexOf("to '<");

        // Check if bounced message report contains 
        // "Failed to deliver to " field
        if (i_start == -1)
        { 
                return "";
        }
                        
        // Get failed address
        i_start += 5;
        i_end = str_invalid_email.IndexOf("]",i_start);
        str_invalid_email.Substring(i_start, i_end);
                        
        return str_invalid_email;
}

// This function must remove (or disable) specified
// email address from mailing list
static void RemoveEmailFromDatabase(string str_invalid_email)
{
// TODO: Add your code here                        
}
 
VB.NET:
Dim pop As New Pop3

' Enable logging to file
pop.Log.Enabled = True
pop.Log.Filename = "C:\log.txt"
pop.Log.Clear()

' Connect to POP3 server
pop.Connect("mail.domain.com")
pop.Login("jdoe", "secret")

' Download headers and bodies for all messages.
Dim msgs As MailMessageCollection = pop.DownloadMessageHeaders(1, -1, -1)

' Loop through all messages in the mailbox
Dim msg As MailMessage
For Each msg In msgs
        Dim strLine As String = msg.BodyPlainText
        Console.WriteLine("From: " + msg.From.Email)

        ' Get failed email address
        Dim str_invalid_email As String = GetInvalidEmailAddressME(msg)

        ' If str_invalid_email is non-empty then failed email 
        ' address was found
        If str_invalid_email.Length > 0 Then
                'Remove failed email from database
                RemoveEmailFromDatabase(str_invalid_email)

                ' Display invalid address
                Console.WriteLine("Invalid email: " & str_invalid_email)

                ' Delete bounced email from server to avoid
                ' processing it next time
                pop.DeleteMessage(msg.IndexOnServer)
        End If
Next
Console.ReadLine()

' Disconnect from POP3 server
pop.Disconnect()

' The function checks whether the message is bounced and extracts 
' failed address 
' from bounced message. Valid only for MailEnable servers
Function GetInvalidEmailAddressME(ByVal msg As MailMessage) As String
        Dim str_invalid_email As String = msg.BodyPlainText

        ' Check if this is a bounced message report
        If msg.Subject.IndexOf("Delivery Failure") = -1 Then
                Return ""
        End If
        If msg.From.ToString().IndexOf("POSTMASTER") = -1 Then
                Return ""
        End If

        ' Now we're sure this is a bounced message report
        Dim i_start As Integer, i_end As Integer
        i_start = str_invalid_email.IndexOf("SMTP:")

        ' Check if bounced message report contains "Recipient:" field
        If i_start = -1 Then
                Return ""
        End If

        ' Get failed address
        i_start += 5
        i_end = str_invalid_email.IndexOf("]", i_start)
        str_invalid_email.Substring(i_start, i_end)

        Return str_invalid_email
End Function

' The function checks whether the message is bounced and extracts 
' failed address 
' from bounced message. Valid only for Communigate Pro servers
Function GetInvalidEmailAddressCP(ByVal msg As MailMessage) As String
        Dim str_invalid_email As String = msg.BodyPlainText

        ' Check if this is a bounced message report
        If msg.Subject.IndexOf("Undeliverable mail") = -1 Then
                Return ""
        End If
        If msg.From.ToString().IndexOf("MAILER-DAEMON") = -1 Then
                Return ""
        End If

        ' Now we're sure this is a bounced message report
        Dim i_start As Integer, i_end As Integer
        i_start = str_invalid_email.IndexOf("to '<")

        ' Check if bounced message report contains 
        ' "Failed to deliver to " field
        If i_start = -1 Then
                Return ""
        End If

        ' Get failed address
        i_start += 5
        i_end = str_invalid_email.IndexOf("]", i_start)
        str_invalid_email.Substring(i_start, i_end)

        Return str_invalid_email
End Function

' This function must remove (or disable) specified
' email address from mailing list
Sub RemoveEmailFromDatabase(ByVal str_invalid_email As String)
        ' TODO: Add your code here                        
End Sub
未发布 全新的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 中列出和汇总相关表中的数据或进行快速查询。只需单击一个项目即可打开该项目的详细视图。

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

 
未发布 邮件客户端WebMail Pro v7.7.4发布,在线订购限时75折优惠!
by Harriet666 keys 分享 1496393211510

AfterLogic WebMail Pro是基于网页并以脚本开发的邮件客户端。能以前端模式与现有的邮件服务器或内置邮件服务器工作。

WebMail Pro最新版下载>>>

WebMail Pro


V7.7.4更新内容:

  • 更新Tenants REST API。
  • 更新法语翻译。
  • 正确处理多个IMAP-quota值(webmail.default-imap-quota-name)。
  • 语言自动检测现在可用作配置选项。
  • 修复了Helpdesk客户端屏幕的错误。
  • 修复首次登录时提示“上次登录”信息的错误。
  • 修复其他Bug。

试用、下载、了解更多产品信息请点击"咨询在线客服"   


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