Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法通过mail()函数将Excel(转换为HTML/PHP)文档发送到电子邮件_Php_Html_Excel_Email - Fatal编程技术网

无法通过mail()函数将Excel(转换为HTML/PHP)文档发送到电子邮件

无法通过mail()函数将Excel(转换为HTML/PHP)文档发送到电子邮件,php,html,excel,email,Php,Html,Excel,Email,我将Excel电子表格转换为PHP(使用另存为HTML将.xls转换为“往返”HTML),这样我就可以在电子表格中填写使用HTML表单填写并存储在数据库中的数据。项目的这一部分运行良好(尽管仍需改进) 不幸的是,我遇到了两个问题(但它们相互关联)。首先,当我将文档转换为HTML时,它创建了大量CSS—这是必需的,以便HTML文档在查看或打印时看起来与原始Excel文档相同。问题是CSS严重膨胀了代码。那么,有没有一种方法可以将所有CSS移到外部样式表中,并在通过mail()函数发送代码时仍然引用

我将Excel电子表格转换为PHP(使用另存为HTML将.xls转换为“往返”HTML),这样我就可以在电子表格中填写使用HTML表单填写并存储在数据库中的数据。项目的这一部分运行良好(尽管仍需改进)

不幸的是,我遇到了两个问题(但它们相互关联)。首先,当我将文档转换为HTML时,它创建了大量CSS—这是必需的,以便HTML文档在查看或打印时看起来与原始Excel文档相同。问题是CSS严重膨胀了代码。那么,有没有一种方法可以将所有CSS移到外部样式表中,并在通过mail()函数发送代码时仍然引用它?这就引出了我的第二个问题

这里有一个指向JSFIDLE中代码的链接:

下面是呈现的样子(注意:没有填充任何数据,因为它无法连接到数据库,即使可以,PHP代码也没有在JSFIDLE中呈现):

如何通过电子邮件发送所有这些代码,以便电子邮件接收者将代码作为附件获取?最好将文档转换回工作excel文档,但我意识到这可能是一个延伸。因此,一个既可查看又可打印的附加HTML或PHP页面(看起来与原始Excel文档一模一样)也是可以接受的最终格式。我希望HTML作为附件包含,而不是直接在电子邮件中呈现

目标是将会计部门陈旧的费用系统从纸质系统转变为电子系统。目前,员工必须填写一份包含里程和费用的excel电子表格,打印并邮寄至会计部。我正在尝试升级该流程,以便员工在网页上填写他们的费用,然后通过点击“提交会计”以电子方式发送表格。通常我只会在电子邮件中发送表单的值(就像你处理联系人表单一样),但是会计部不想更改他们的记录保存系统。他们希望数据看起来和以前一样,就像打印的excel电子表格一样。这就是为什么我创建了一个自动填充的PHP版本的excel页面(通过一个通过HTML表单填充的数据库)。现在我只需要弄清楚如何通过电子邮件直接发送给会计部


提前感谢您的帮助

从技术上讲,电子邮件附件只是电子邮件数据的一部分,通过MIME内容边界与其他部分分开,并有自己的标题。我确信有一些php库可以帮助实现这一切(不幸的是,我不知道一个现成的库,但它必须存在)

您可以在您的电子邮件客户端中查看电子邮件的结构-通常有“查看原始源”或类似的选项。您通常会看到电子邮件本身的内容为html和纯文本(前两个MIME部分),如果有任何附件,它们将出现在以下部分中

在任何情况下,如果你想发送一些不需要编辑的、看起来像打印文档的东西,那么我建议你应该使用PDF文件。毕竟,这就是PDF的用途。或者,您可以使用HTML和外部CSS文件作为电子邮件本身的内容。然后,会计人员只需直接在他们的电子邮件客户端中查看工作表,而无需在Excel中打开附件

如果您确实需要一个附件,并且它必须在Excel中打开,我会使用XML而不是HTML。Excel可以导出为XML,因为这只是数据的一种表示,而HTML需要更多地将所有内容嵌入到HTML的工作方式中。另外,我不知道Excel是否能够用外部CSS文件打开HTML文件

如果您想使用XML,可以这样做:将Excel文件保存为XML,并查看文件的内容。那里仍然会有很多额外的数据,但是很多数据都没有用,所以看看在Excel无法正确打开之前,您可以删除多少数据。然后你就有了一个很好的模板。不难理解这一切是如何进行的。最后,您应该得到一个Excel易于读取的文件,而不是需要从HTML转换的文件


我知道这不是一个真正的答案,但也许它可以给你一些想法

无论如何,如果你想发送一些不需要编辑的、看起来像打印文档的会计信息,那么我建议你应该使用PDF文件来代替。
有没有一种简单的方法可以将其转换为PDF格式并通过电子邮件发送?如果是这样,那就行了。会计不会被编辑。至于直接在浏览器中查看,出现问题的唯一原因是它显示为一张8.5x11的整张纸,但它只有800像素宽,因此文本很小。我将尝试XML方法,看看它是否保留了格式。我没想到。谢谢@泰勒:有几种方法可以做到这一点,但我必须承认,我从来没有玩过它;我从来没有用PHP制作过PDF。但有一些解决办法。至少有一个是基于PHP扩展()的,因此需要在服务器上安装(如果还没有安装的话)。但是也有一些是纯PHP的,比如这个:——但是我不能告诉你选择什么。看看你有什么选择,也许问问别人做了什么。