我试图建立一些工资系统,可以发送一个pdf文件工资单文件到指定的人只使用保存按钮,我使用fpdf生成pdf,我如何发送这个pdf文件,而我生成它不保存到webserver?或者我应该先保存然后再发送?
fzsnzjdm1#
如果您使用的是像zend这样的框架,那么就可以很容易地将mime部分附加到电子邮件中,而不必首先将其保存到磁盘。这里的示例使用 file_get_contents() 要读取pdf的内容,但如果您已经将数据作为字符串,请忽略该部分:在使用zend\u mail时添加pdf附件编辑:@catcon我假设op正在使用某种框架…但他没有具体说明,也没有回来澄清。另外,你关于使用邮件服务发送文件的评论并不能真正回答这个问题。他想知道他是否可以将文件内容附加到电子邮件中,而不必先将其保存到磁盘—我的回答是:“是的—你可以。如果你使用的是zend这样的框架,那就更简单了。”如果他不使用框架,只使用纯php mail() ,他仍然可以建立一个 Content-Type: multipart/mixed 通过设置适当的邮件头来发送邮件,并且发送邮件时不必首先将pdf文件保存到磁盘。例子:假设$content是表示pdf的二进制字符串:
file_get_contents()
mail()
Content-Type: multipart/mixed
// base64 encode our content and split/newline every 76 chars $encoded_content = chunk_split(base64_encode($content)); // Create a random boundary for content parts in our MIME message $boundary = md5("whatever"); // Set message headers header to indicate mixed type and define the boundary string $headers = "MIME-Version: 1.0\r\n"; $headers .= "From:".$from."\r\n"; // Sender's email $headers .= "Reply-To: ".$reply_to."\r\n"; // reply email $headers .= "Content-Type: multipart/mixed;\r\n"; // Content-Type indicating mixed message w/ attachment $headers .= "boundary = $boundary\r\n"; // boundary between message parts // Text of the email message $body = "--$boundary\r\n"; $body .= "Content-Type: text/plain; charset=ISO-8859-1\r\n"; $body .= "Content-Transfer-Encoding: base64\r\n\r\n"; $body .= chunk_split(base64_encode($message)); // PDF attachment $body .= "--$boundary\r\n"; $body .="Content-Type: application/pdf; name=yourbill.pdf\r\n"; $body .="Content-Disposition: attachment; filename=yourbill.pdf\r\n"; $body .="Content-Transfer-Encoding: base64\r\n"; $body .="X-Attachment-Id: somerandomstring\r\n\r\n"; $body .= $encoded_content; // Attaching the encoded file with email // Send the message w/ attachment content $result = mail($recipient, $subject, $body, $headers);
1条答案
按热度按时间fzsnzjdm1#
如果您使用的是像zend这样的框架,那么就可以很容易地将mime部分附加到电子邮件中,而不必首先将其保存到磁盘。这里的示例使用
file_get_contents()
要读取pdf的内容,但如果您已经将数据作为字符串,请忽略该部分:在使用zend\u mail时添加pdf附件编辑:
@catcon我假设op正在使用某种框架…但他没有具体说明,也没有回来澄清。另外,你关于使用邮件服务发送文件的评论并不能真正回答这个问题。他想知道他是否可以将文件内容附加到电子邮件中,而不必先将其保存到磁盘—我的回答是:“是的—你可以。如果你使用的是zend这样的框架,那就更简单了。”
如果他不使用框架,只使用纯php
mail()
,他仍然可以建立一个Content-Type: multipart/mixed
通过设置适当的邮件头来发送邮件,并且发送邮件时不必首先将pdf文件保存到磁盘。例子:假设$content是表示pdf的二进制字符串: