Backup2mail无法发送带有数据库备份的电子邮件..多个或格式错误的换行符?

时间:2015-09-27 16:54:39

标签: database-backups

直到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升级和改变了什么?我不是专家。

提前谢谢

1 个答案:

答案 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)))) . "";

它应该在这些变化之后起作用。 希望这能帮助你解决问题。