直到6月18日我在Gmail上收到我的备份数据库的所有日子没有问题,我终于找到了解决方案。但6月18日之后,数据库的电子邮件将被停止。我没有收到正常的电子邮件,只有日志文件txt ..我现在没有收到。
我使用Backup2mail http://www.backup2mail.com/
PHP Version 5.6.13,Ubuntu Linux 14.04.1
数据库备份文件在服务器上完美创建,但无法向Gmail发送更多内容。
我在Backup2mail的index.php文件中有这个错误:
警告:mail():在>中的additional_header中找到多个或格式错误的换行符第119行/srv/users/serverpilot/apps/myappname/public/backuptomail/index.php 数据库未发送!请检查您的邮件设置。 发送?否
第119行有:
if (mail($send_to, $subject, $body, $headers)) {
$sent = 'Yes';
echo ($file_is_db ? 'Backup file' : 'Report') . ' sent to ' . $send_to . '.<br />';
if ($file_is_db) {
if ($delete_backup) {
unlink($file);
echo 'Backup file REMOVED from disk.<br />';
} else {
echo 'Backup file LEFT on disk.<br />';
}
}
} else {
echo '<span style="color: #f00;">' . ($file_is_db ? 'Database' : 'Report') . ' not sent! Please check your mail settings.</span><br />';
}
echo 'Sent? ' . $sent;
问题出在哪里? :(也许从6月18日PHP升级和改变了什么?我不是专家。
提前谢谢
答案 0 :(得分:1)
问题是PHP最近的更新。在此更新下,标头中不再有多个(\n
)新行。因此,您需要在几个地方删除换行符。
找到以下行并删除尾随\ n(只留一个):
$body = 'Database backup file:' . "\n" . ' - ' . $file . "\n\n";
$headers .= 'Content-Transfer-Encoding: base64' . "\n\n";
但是,您还需要删除以下行中的\ n:
$headers .= chunk_split(base64_encode(implode('', file($file)))) . "\n";
将其更改为:
$headers .= chunk_split(base64_encode(implode('', file($file)))) . "";
它应该在这些变化之后起作用。 希望这能帮助你解决问题。