通过 .NET/C# 发送传真

Posted

技术标签:

【中文标题】通过 .NET/C# 发送传真【英文标题】:Sending Fax through .NET/C# 【发布时间】:2011-04-09 11:10:32 【问题描述】:

如何在 .NET 中发送传真?我们有一个传真服务器,我们需要通过它向客户传真文件。由于我们有传真服务器,我不认为我必须在我的机器上配置传真调制解调器,对吧?它只会通过传真服务器吗?

有没有好的免费(或便宜)传真 API?在我的研究中,我遇到了 FAXCOMEXLib、FaxMan 和 Windows 传真服务,但文档似乎有限,所以我希望这里有人能指出我正确的方向。

谢谢!

【问题讨论】:

您的传真服务器应提供一种通过电子邮件、FTP 或其他网络协议向其发送传真的方法。它正在运行什么软件? 好问题,我已将其转发给我们的网络人员。那么,如果它允许我们通过电子邮件发送传真,我只需将文档通过电子邮件发送到传真服务器? 是的。我处理的一个应用程序会通过电子邮件向传真服务器发送一条带有特殊格式主题行的消息,其中包括要使用的传真号码,以及要传真的一个或多个 PDF 附件。但是,详细信息将取决于您拥有的传真服务器。 @Jeff 谢谢,我希望我能有类似的东西......将不得不等待并找出答案。 【参考方案1】:

据我所知,.NET 没有内置任何东西来直接支持通过传真服务器发送传真。如果不这样做,您可能希望使用传真服务器的 COM 接口。基本上,您创建一个 FaxServer 对象并调用其 Connect 方法来连接到传真服务器。然后调用 FaxServer 的 CreateDoc 方法来创建一个传真文档对象。 FaxDoc 对象具有(大量)属性,用于指定更多关于收件人和文档的信息,超出任何理智的人的想象,但其中两个主要属性是 FileName 和 FaxNumber。一旦你设置了这些(连同你想要的任何其他),你调用它的 Send 方法将该文档发送到该传真号码。

我上次玩这个是几年前的事了,所以我可能会跳过一些东西。大多数情况下,我记得 FaxServer 创建了一个您填写的空白 FaxDoc,然后要求自己发送,这似乎很奇怪,并且有 很多 文档涵盖了最初看起来像的“东西”是必要的,但结果证明完全无关紧要,至少对于我正在做的事情(回想起来,可能通常是这样)。

【讨论】:

谢谢。我实际上只是尝试过这个(使用 FaxComLib),我得到这个错误“hresult e_fail 已从对 COM 组件的调用中返回”。谷歌搜索后,似乎在连接到传真服务器而不是本地计算机上配置的调制解调器时抛出此错误。 @Prabhu:我将它与传真服务器一起使用,而不是本地传真调制解调器,所以我确信这是可能的,或者至少是。如果没记错的话,这是一个 XP 客户端和 Win2K3 服务器。我试图记住——模糊地似乎实际上有几个不同的传真组件,其中只有一个有效。快速浏览 MSDN 表明有一个“扩展 COM 对象”,这可能是要使用的东西。【参考方案2】:

根据您的预算,您可以考虑使用传真到电子邮件服务。许多服务都有与 .NET 兼容的 API,而且价格合理。

这可能比实际与传真服务器交互更容易(因此也更便宜)。

【讨论】:

实际上这是针对一家公司的,出于隐私原因,这是不可能的。那么,与传真服务器交互真的那么难吗?我要做的就是将一些 pdf 文件发送到传真服务器而不是打印机。 此外,通过这种服务,国际传真可能会更便宜、更可靠。 我并不是说很难;如果没有一些研究,我不知道要这样做,但这就是我要做的。出于隐私原因,我会相信你的话,因为我不知道影响你的法律,但我知道许多英国企业为此目的使用传真 API,即使是机密文件。 谢谢...如果涉及到它,我将不得不考虑这一点。 当然,如果隐私真的是个问题,那么通过公共电话网络发送未加密的内容可能不是您的最佳选择。 :-)【参考方案3】:

如果您不想使用任何 3rd 方 API,例如 interfax,则必须使用 Faxman 或 FAXCOMEXLib。但是从今年开始,www.data-tech.com 没有响应提供了faxman 或faxman jr SDK 用于发送传真。 faxman jr 产品无法在 windows 10 上运行。虽然他们宣布它将在 windows 10 PC 上运行,但它无法运行。

http://www.data-tech.com/blog/post/FaxMan-SDK-Version-5-Upgrade-Available.aspx

我不确定,但可能是数据技术停止了他们的服务,因为上次我多次给他们发电子邮件,但他们没有回复任何内容。所以你可以使用faxcomlib,这是一个非常简单的发送传真。

请查看链接以获取使用 FAXCOMEXLib 的示例。

https://code.msdn.microsoft.com/C-Send-Fax-using-fax-Modem-357aca81/

【讨论】:

FAXCOMEXLib 不存在 @MahmodAbuJehad 您需要在项目中添加对 c:\windows\syswow64\fxscomex.dll 的引用。添加后,您应该会在项目的引用列表中看到对faxcomexlib 的引用。

以上是关于通过 .NET/C# 发送传真的主要内容,如果未能解决你的问题,请参考以下文章

Powershell使用边界MIME将pdf文件上传到RightFax Web服务

基于OMAPL138+FPGA射频直接采样气象传真接收机的设计与实现

传真机传真外地拨号后提示号码不正确问题

Linux命令应用大词典-第34章 打印与传真

使用不同的 Outlook 电子邮件地址从 Access 发送电子邮件

使用 C# 实现 EDI X12