我正在尝试创建一个XML文件,然后将其作为电子邮件发送,以及强制下载,问题是XML文档在其末尾包含一些随机数,使其无用
代码:
header('Content-Disposition: attachment;filename=License.xml');
header('Content-Type: text/xml');
$document = new DOMDocument('1.0');
$document->formatOutput = true;
$element_account = $document->createElement("Account");
$attr_name = $document->createAttribute("Username");
$attr_pass = $document->createAttribute("Password");
$attr_key = $document->createAttribute("Key");
$attr_name->value = $user;
$attr_pass->value = $pass;
$attr_key->value = $key;
$element_account->appendChild($attr_name);
$element_account->appendChild($attr_pass);
$element_account->appendChild($attr_key);
$document->appendChild($element_account);
$file_to_attach = 'tmp/License'.$user.'.xml';
$document->save($file_to_attach);
require '../PHPMailer/PHPMailerAutoload.php';
$pemail = new PHPMailer();
$pemail->From = 'donotreply@OGServer.net';
$pemail->FromName = 'OGServer Licensing';
$pemail->Subject = 'Your OGServer License has arrived!';
$pemail->Body = 'Thank you for registering your product, you will find your License attached to the e-mail, if you have any questions about how to set up your license, you can view the tutorial here: http://ogserver.net/licensing/tutorial.html';
$pemail->AddAddress( $email );
$pemail->AddAttachment($file_to_attach, 'License.xml' );
$pemail->Send();
$filepath = realpath($file_to_attach);
echo readfile($file_to_attach);
答案 0 :(得分:1)
在输出要附加的文件后输出这些数字。你这样做:
echo readfile($file_to_attach);
只是readfile
返回读取的字节数,然后您回显该数字。引用标题为返回值的部分:
返回从文件中读取的字节数。如果发生错误,则返回FALSE,除非函数被调用为@readfile(),否则将打印错误消息。
由于readfile
已将文件的内容输出到STDOUT,您只需添加文件大小的整数(readfile
读取的字节数)。
由于文件大小实际上并不大,因此在此处使用readfile
几乎没有什么好处,因为它要求您将文件放在磁盘上。
因此,您可以将XML存储到字符串中:
$licenseXml = $document->saveXML();
然后将其附在电子邮件中:
$pemail->AddStringAttachment($licenseXml, 'License.xml');
然后输出:
echo $licenseXml;
这应该同样做得好。