未发布 MailBee.NET ObjectsL显示HTML/纯文本邮件教程(三):显示带嵌入图片的邮件 MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。
本文主要介绍了显示带嵌入图片的邮件的代码示例。目前MailBee.NET Objects在线订购享75折优惠正在进行中,欢迎您下载试用版进行运用!
包含嵌入图片(以及嵌入式脚本、CSS表和其他对象)的HTML邮件无法在不修改邮件正文的情况下呈现。这是因为嵌入对象的URL被表示为CID(Content-ID值)而不是真实的URL。HTML邮件正文中的CID参考如下所示:(IMG SRC =“cid:picture1”)。这是图像源是Content-ID值等于“picture1”的邮件附件的示例。在呈现HTML正文时,必须显示该图像代替(IMG SRC =“cid:picture1”)标签。因此,在呈现邮件的HTML主体之前,开发人员必须用相应图像的真实URL替换所有这些伪URL。例如,你可以将所有嵌入对象的附件保存到磁盘,并将相应的CID引用替换为保存的附件URL。但是,手动执行此操作非常复杂。
幸运的是,MailBee具有显示带有嵌入对象的HTML体的特殊功能。GetHtmlAndSaveRelatedFiles方法将所有嵌入的对象保存到临时位置,用其虚拟路
径替换所有CID,并返回准备好的HTML主体字符串。Web应用程序开发人员可以使用此方法在浏览器中显示带有嵌入图片的HTML格式的邮件。
使用此方法时,还应将WorkFolder物理位置设置为保存嵌入对象的附件。此物理位置必须与传递给GetHtmlAndSaveRelatedFiles方法的virtualPath值
相匹配。
C#
// We assume "C:\Inetpub\wwwroot" is a physical path to the location
// visible from Internet as "http://www.domain.com" (virtual path).
msg.Parser.WorkingFolder = @"C:\Inetpub\wwwroot";
Response.Write(oMsg.GetHtmlAndSaveRelatedFiles("http://www.domain.com", VirtualMappingType.Static,
MessageFolderBehavior.DoNotCreate));
VB.NET
' We assume "C:\Inetpub\wwwroot" is a physical path to the location
' visible from Internet as "http://www.domain.com" (virtual path).
msg.Parser.WorkingFolder = "C:\Inetpub\wwwroot"
Response.Write(oMsg.GetHtmlAndSaveRelatedFiles("http://www.domain.com", VirtualMappingType.Static,
MessageFolderBehavior.DoNotCreate))
因此,如果HTML格式的邮件体包含(IMG SRC =“cid:pic1”),并且该消息还具有ContentID(CID)“pic1”的嵌入式附件“picture.gif”,则调
用GetHtmlAndSaveRelatedFiles方法将替换“cid: pic1“与http://www.domain.com/picture.gif值。
如果你正在开发不使用虚拟路径的桌面应用程序,则可以将virtualPath设置为NonWeb值。在这种情况下,保存文件的物理路径将被用作URL。
C#
msg.Parser.WorkingFolder = @"C:\Temp";
Response.Write(msg.GetHtmlAndSaveRelatedFiles(null, VirtualMappingType.NonWeb, MessageFolderBehavior.CreateOnly));
VB.NET
msg.Parser.WorkingFolder = "C:\Temp"
Response.Write(msg.GetHtmlAndSaveRelatedFiles(Nothing, VirtualMappingType.NonWeb, MessageFolderBehavior.CreateOnly))
换句话说,嵌入式图片将由文件系统上的物理路径表示,这些路径将被放置在相应HTML标签的SRC元素中。例如(IMG SRC =“cid:pic1”)将被替换为(IMG SRC =“file:/// C:\ Temp \ picture.gif”>)。
未发布 【教程】Edraw Max(亿图图示)基本操作图文详解 Edraw Max亿图图示设计软件是一款功能十分强大的图形图表设计软件,使用方便、操作简单。如果你会用word,那么用亿图就绝对没有问题。如果你是新手,那么你也可以快速上手使用。本文以创建思维导图作为例,详细的介绍一下亿图软件的几个基本的操作方法吧!目前Edraw Max(亿图图示)在线订购享75折优惠活动正在进行中,欢迎您下载、购买进行运用!
一、快速创建图表
- 打开亿图软件,点击新建,在“预定义模板和例子”中选择所需的绘图类型。
- 从右侧模板和例子中,选择从模板或者例子中创建。
二、连接形状
在打开模板或者例子的时候,相关的符号库就会被打开。只需将您需要的形状符号拖拽到绘图页面即可开始绘图。
- 将左侧符号库中的图形拖拽至绘图页面,或者双击即可。
- 将鼠标移动至图形、符号上就会自动显示它的浮动按钮。
- 点击浮动按钮即可为形状添加主标题。
- 点击”主标题”形状四周的按钮即可快速添加副标题。
- 在思维导图中的形状会自动连接起来。
温馨提示:亿图根据图表的不同特点设计相应的形状。在绘制流程图的的时候,流程图的基本符号可以从图片显示的四个方向进行连接。
三、旋转图形
- 在流程图的相关图形、符号上方移动光标,直到显示蓝色的自动连接箭头。
- 点击朝向您需要连接图片方向的蓝色的箭头,点击图形、符号右上角的动作按钮,可以快速替换图形。
- 点击该图形,旋转图形上方的圆形控制点可以旋转图形。
- 拖拽绿色控制点改变大小。
注意: 选中的控制点就会变成橘红色。指针就会变成箭头显示方向。
四、为形状添加文本
- 双击需要添加文本的形状。
- 输入文本。
- 点击绘图页面的任意空白区域或者按 ESC 键完成输入文字。
- 同理,双击连接线也可添加文本。
温馨提示:有很多形状自带浮动按钮,点击便可以查看它的快捷功能。或者右击一个形状查看它的快捷菜单。比如组织构图,您就可以点击浮动按钮添加下级或者同级。这些形状会自动连接显示层级关系。
五、美化主题
- 打开“页面布局”菜单下的“主题”,即可一键切换页面主题风格。
- 在绘图页面底部移动光标到“颜色条”,可对图形或者线条的颜色快速进行修改。
- 软件右侧工具栏中,也可以对图图形填充和线条颜色进行修改。
- 思维导图菜单中,可以通过软件内置的“思维导图主题”快速美化主题。
PS:以上只是亿图所有功能中一些最基本的操作方法,如果您想要更深入的了解亿图的各种操作、使用方法,请继续关注。
未发布 【示例教程】如何通过leadtools读取二维码中的中文 在使用leadtools进行二维码识别的过程中,经常或碰到中文识别为乱码的情况,让人比较郁闷,本文教大家如何通过leadtools来读取二维码中的中文。
中文在编为二维码的时候,实际上是先按照一定的字符集编码被转换为了二进制编码,而我们如果需要正确的读取出二维码中的中文,就必须要确认编码字符集,如UTF8,UTF16,GB2312,GBK等等。
在确认了编码方式后,我们对通过BarcodeEngine 引擎读取出的BarcodeData ,不用value属性直接去获取它的对应字符串。因为这样默认是得到的按照ascii码编码来翻译出的字符串,自然会有各种乱码,leadtools提供了另一个方法GetData(),通过这个方法可以获取原始的byte[] 数据。然后按照对应的编码方式进行转换,即可得到对应的中文字符串。
下面的例子中是针对UTF8编码的中文二维码进行识别的代码,大家可以在编译以后,对文末的二维码进行识别。
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Forms;
using Leadtools.Barcode;
using Leadtools.ImageProcessing;
public void BarcodeData_GetDataExample()
{
string imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "Barcode2.tif");
// Create a Barcode engine
BarcodeEngine engine = new BarcodeEngine();
// Load the image
using (RasterCodecs codecs = new RasterCodecs())
{
using (RasterImage image = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1))
{
// Read the first QR barcode from the image
BarcodeData data = engine.Reader.ReadBarcode(image, LogicalRectangle.Empty, BarcodeSymbology.QR);
// Show the barcode data found (if any)
if (data != null)
{
Console.WriteLine("Raw data is:");
byte[] bytes = data.GetData();
if (bytes != null)
{
string text = System.Text.Encoding.UTF8.GetString(bc);
Console.WriteLine(text);
}
else
{
Console.WriteLine("Empty");
}
}
else
{
Console.WriteLine("No barcode found");
}
}
}
}

未发布 3D造型引擎3D ACIS Modeling 发布2018.1.0版本 3D ACIS® Modeler (ACIS) 是 Spatial 久负盛名的 3D 造型引擎,为超过 350 种客户应用程序所采用,全球应用量超过 150 万套。ACIS 采用面向对象的开放 C++ 架构,拥有强大的 3D 造型能力。ACIS 集成了线框、曲面和实体造型的功能,支持流形和非流形拓扑,具备非常丰富的几何运算集,因此非常适用于构建具有混合造型功能的 3D 应用程序。
ACIS不仅具备非常完善的 3D 造型功能,而且灵活性强,可满足各种应用程序要求。此外,3D Modeling 的 ACIS 扩展功能还能满足特定的应用需求,其中包括隐藏线去除、可变形造型、高级遮盖和特征去除。
试用、下载、了解更多产品信息请点击"咨询在线客服"
未发布 多比图形控件教程:基于Flex/Javascript的网页绘图控件 1.概述
多比矢量图控件是一个在Web上绘图的组件,适用于需要在网页中/编辑流程图、图表、网络图和普通矢量图形的Web应用程序组件。多比控件提供充分的编程接口,可以非常容易的和ASP.NET、JavaWeb技术集成。
【最新多比图形控件(Web)v3.5点击下载>>>】
1.1 技术特征
多比矢量图控件采用最新的AJAX技术,他以Flex和Javascript为基础,可以很方便的在网页中展现绚丽的矢量图形。相比传统的技术,多比矢量图控件有以下的突出优点。
- l 只需要安装Flash播放器,不需要其他第三方插件, 不依赖任何插件供应商。很多国有企业、政府部门、军工企业,由于安全性等原因,环境往往不能安装浏览器插件。
- l 标准的Web技术,非常容易和Java或.NET集成。
- l 可扩展,可修改,可配置。和ActiveX控件不同,多比控件很容易修改和扩展,只需要很少的脚本代码,就可以实现和默认行为不一样的功能。
1.2 应用领域
多比图形控件是一款基于Web的矢量图形控件, 类似于网页上的Visio控件,是目前国内外最佳的基于web的工作流设计器、工作流流程监视器解决方案。 可广泛应用于包括:电力、军工、煤炭、化工、科研、能源等各种监控软件、web工作流设计器、asp.net工作流设计器、电力、化工、煤炭、工控组态软件、仿真、地理信息系统、工作流、复杂报表 工业SCADA系统、ERP流程设计系统、图形管理、图形拓扑分析、GIS地理信息系统系统、工程制图等领域。目前已经为全球20多个国家的数千家客户采用。
1.3运行一下例子
首先, 你需要到多比的官方网站上下载最新版的多比控件。你可以直接到这个链接下载 http://www.duobee.com/Page-d-key-visio_download。
下载完成后,你需要将现有的包解压,并且发到IIS或者TOMCAT下的某个目录,然后通过http://localhost/download/testing这种方式打开。 请不要直接双击打开(file:///),这种方式将导致flash文件加载不正确。
未发布 ASP.NET控件Web CAD SDK发布v12版本,支持DWG 2018丨附下载 Web CAD SDK为ASP.NET控件,可用于通过Internet、Intranet、Sharepoint、Office 365 及其他在线 HTML5 启用技术查看DWG和其他CAD文件。该产品不要求安装 AutoCAD® 或其他第三方应用程序或组件,提供该产品时附带 C# 示例。
ASP.NET控件Web CAD SDK发布v12版本,用于在Internet,Intranet,SharePoint及其他在线 HTML5 启用技术上查看DWG和其他CAD文件。
支持DWG 2018(最新的DWG版本)是主要的改进之一。这意味着现在你的Web项目能够显示最新的图纸。
此外,Web CAD SDK功能已经变得更加广泛。现在你不仅可以在web上查看图纸,还可以在视觉上进行自定义。例如,你可以以黑白模式显示文件,合并图纸进行比较,并将绘图显示区域以BMP形式复制到剪贴板进行进一步处理。

Web CAD SDK v12的主要改进功能:
支持AutoCAD® DWG 2018
文本搜索
合并图纸与颜色变化
将显示的图像复制到剪贴板
黑白显示模式
改进打印设置
未发布 Oracle正式发布Java 9,引入新的Java编程组件 Java SE 9.0于2017年9月21日发布。
JDK 9的核心变化就是引入了一种新的Java编程组件,也就是模块,按照Oracle的说法,它是一个可命名的、自描述的代码和数据集合。模块技术的核心目标是减少Java应用和Java核心运行时环境的大小与复杂性。为此,JDK本身进行了模块化,Oracle希望通过这种方式提升性能、安全性和可维护性。为了支持Java 9的模块,引入一种新的模块化JAR文件形式,按照这种形式会在其根目录中包含一个module-info.class文件。Oracle同时提供了工具,允许我们组合和优化一组模块,形成自定义的运行时镜像(image),这样的镜像不必将整个Java运行时包含进来。模块化所带来的其他变化包括从Java运行时镜像中移除了rt.jar和tools.jar。 Java社区进程(JCP)执行委员会的成员Ben Evans认为最急需重构的应用恰好就是最适合进行模块化的应用。如果你已经备受Lava Flow/God Class/Stovepipe System地狱的折磨,而且你的利益相关方明确知道这一点,那么你可能更容易说服他们进行一次完整的底层重构,通过渐进式的努力形成一个完成的模块解决方案(而不是简单重构并迁移至Java 8)是值得去做的。
Oracle宣布Java 8会是一个长期支持的发布版本,会一直支持到2022年,因此Evans认为很多的应用将会停留在Java 8上,根本不会升级到Java 9。Evans补充说,有些应用可能会让开发和构建工具链使用Java 8版本,而在生产环境使用Java 9的运行时。
对特定类型的应用来说,这是很有帮助的。例如,我曾经见到有的电子商务网站具有非常大的堆空间,其中包含了大约40G的字符串数据。Java 9的ompact Strings技术能够将这种类型的内存使用减半。这反过来又会对GC的性能带来积极的影响。对于有些应用来说(这可能就包括大型的Solr安装环境及类似场景),单单这一项收益就值得将运行时升级到Java 9。
Java 9使用G1作为默认的垃圾收集器,替代了之前默认使用的Parallel GC。Evans对这项变化的评论:
这项变更是很重要的,因为相对于Parallel来说,G1会在应用线程上做更多的事情,而Parallel几乎没有在应用线程上做任何事情,它基本上完全依赖GC线程完成所有的内存管理。这意味着切换到G1将会为应用线程带来额外的工作,从而直接影响到应用的性能。
在很多(甚至可以说大多数)场景中,这种额外的性能损耗都不是什么问题。但是,在这方面,我确实也曾经见过从Parallel切换到G1时,有一定比例的工作负载会引起性能的下降。对于这些应用来说,这种性能下降是无法接受的,所以他们无法切换至G1收集器。随着G1成为默认的收集器,这将会影响到升级至Java 9的每个应用。
JClarity的CEO Martijn Verburg认为大型的代码库需要重构为模块的形式。Verburg给出了一些通用的模块化建议,并且指出了开发人员在采用Java 9模块系统时,需要注意的一些事情:
- 阅读Paul和Sander的图书“Java 9 modularity”:它是本权威指南,提到了所有需要注意的地方,阐述了模块、包以及JAR之间如何运行的关联关系;
- 在模块边界的地方,使用定义良好的接口并且针对这些接口编程;
- 不要拆分包(split package),也就是说一个包不要分散到两个模块中。Adopt OpenJDK有个探测工具,我们可以用它来探测已有的代码;
- 确保不要存在循环依赖(Jigsaw不允许这样);
- 模块在源码的布局上与我们已习惯的方式有所不同,需要确保构建工具能够进行对应的处理;
- Jigsaw不支持多版本。
按照Verburg的说法,核心要点在于处理循环依赖、拆分包的问题,并确保针对接口进行编码。在尝试使用Jigsaw模块化重构之前,针对已有的代码库,这些工作需要预先完成。他还澄清了一个误解,那就是只有模块化的应用才能在Java 9上运行。
由于误解,在这方面有一种FUD(恐惧、不确定和怀疑)情绪,有人误认为在Java 9上运行的必须是模块化的应用。事实并非如此,我们可以将已有的基于类路径的应用直接在Java 9上运行。这里会有一些新的安全限制,因此我们需要设置一些特定的运行时标记(除非你重构代码,使用更安全的方式来访问Java的内部资源),即便如此,默认的行为也只是警告,而不是完全阻止我们(Java 10的限制会更严格)。
Verburg认为Jigsaw会是一个基石,会让Java的演进更快,这要归功于Mark Reinhold、Alan Bateman、Mandy Chung以及Jigsaw团队的其他成员多年来不知疲倦的工作,正是他们的努力使这一切得以实现。
Java 9还引入了jshell工具。这个命令行环境为Java平台带来了读入-求值-打印-循环(Read-Eval-Print-Loop,REPL)功能。它的目的在于以即时结果和反馈的形式,简化原型的实现并帮助我们探索语言在编码时的可选项。
Verburg和Evans看到Java 9中包含了jShell都非常兴奋,但令他们失望的是,HTTP/2只是作为Java 9的一个孵化模块(incubator module)提供的。鉴于社区对这项特性的兴趣和提供的帮助,Evans认为Oracle应该投入足够的工程资源,将HTTP/2交付为GA版本。
JDK 9完整的变更列表可以在Oracle的站点上查阅。Oracle宣布会按照每六个月一次的节奏进行发布,意味着Java 9是最后一次“keystone”特性驱动的版本发布,这反映出了Oracle目前管理Java的特点。Java下一阶段的演化将会按照更短的发布周期并且会按照更加面向特性的方式来发布。Java是否依然能够在服务端技术中占据领导者地位尚有待观察。
更多资讯点击查看>>>
未发布 信息化JavaScript甘特图AnyGantt v8.0.0发布,新增时间轴标签设置方法 AnyGantt是完全跨浏览器和跨平台的,可用于ASP.NET、ASP、PHP、JSP、ColdFusion、Ruby on Rails或简单的HTML页面。有了AnyGantt你可以从任何地方可视化数据:从文本、Excel、CSV格式中的文件到MySQL、MS SQL以及Oracle数据库服务器。(重要推荐:AnyGantt已加入在线订购,超值特价低至¥368起!)
AnyGantt v8.0.0更新:
模块化系统
模块化系统是AnyChart 8的核心。它允许您仅连接实际使用的图表类型和功能,大大减少了在网页上运行的大小。基于模块化的AnyChart与流行的捆绑工具(如Webpack,Browserify等)完全兼容。使用我们的JS Builder轻松生成自定义构建。
自定义JavaScript Builds
自定义JavaScript Builder专门用于组装一个仅包含需要使用的功能和图表类型的JavaScript文件。AnyChart 8.0.0版包含30个模块和 16个主题。您还可以创建含许可证密钥的文件 。
Node.js服务器端渲染
Node.js服务器是一个轻量级的Web服务器,提供用于生成矢量图形(PDF,SVG或PS)、位图图像(PNG,JPG或TIFF)、PDF报告和CSV和XLSX(Excel)中的数据的API。它使用JavaScript代码以及JSON和XML配置作为输入数据。服务器非常易于安装和自定义,您可以在任何主要平台上运行:Linux,Windows和macOS。它是创建通过电子邮件或社交网络共享工具发送图表的报表系统的理想选择。
无数据标签功能
无数据标签功能是用于通知图表查看器数据不可用的API。由于默认情况下缺少数据,或者通过“数据更新API”,“排除数据点”功能或通过交互性删除数据,则可能会丢失数据。
重做CSV/Excel导出
根据需求,我们重新编制了为图表准备的CSV/Excel数据的算法。现在,它考虑到图表类型的特定功能,并允许您为不同的系列使用多个数据集。
图表导出设置
现在,您可以自定义每个图表的导出设置:在Facebook上共享的链接和说明、图像导出选项等。
上下文菜单自定义API
我们大大简化了上下文菜单定制的过程。现在,上下文菜单中的每个项目都被分配了一个DI,可以访问相应的字段和设置以及添加自定义ID。我们还添加了本地化上下文菜单的选项。
一般的API改进
我们大大改进了第八代JavaScript图表库中的AnyChart JS Charts API。 界面设置、网格设置、数据映射设置现在变得很容易。为了方便和简化从
AnyChart 7到AnyChart 8的转换,我们创建了允许大多数用户以半自动模式切换到新版本的迁移工具。
时间轴标签设置
甘特时间线文本格式属性现在非常灵活。我们添加了以下方法:baseLabels(), baselineLabels(), parentLabels(), milestoneLabels(), progressLabels()。我们还重新编写了方法labels(),可以用它来设置任何类型的标签默认值。
【慧都十四周年庆预热开启!全场满额送七级豪礼,AppleMac笔记本电脑、iwatch、iPad等您来拿!】
活动时间:10月1日-10月31日
