我正在尝试将备份zip文件附加到我的gmail。 约300kb的zip文件 我试图使用此代码
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'Exception.php';
require 'PHPMailer.php';
require 'SMTP.php';
$mail = new PHPMailer(true);
try {
$mail->IsHTML(true);
$mail->SetFrom('info@myDomain.net', 'ADMIN');
$mail->Subject = 'mysite - Backup Files - ' . date('d-M-Y');
$mail->Body = 'This is your backup files date: ' . date('d-M-Y');
$mail->AddAddress( 'myMail@gmail.com' );
$mail->addAttachment('secret-backup-03-Apr-2019-2105361.zip');
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
?>
我的zip存档是使用以下php代码创建的:
<?php
function backup()
{
$name = "";
$name = "./backup/backup-".date('d-M-Y').'-'.date('His').".zip";
shell_exec("zip -q -e -9 -P 12345678 -r " . $name . " /home/user/public_html/* -x /home/user/public_html/CMD/backup/**\*");
$secretname = "";
$secretname = "./backup/secret-backup-".date('d-M-Y').'-'.date('His').".zip";
shell_exec("zip -q -e -9 -P 12345678 -r " . $secretname . " " . $name);
if (file_exists($secretname)) {
unlink($name);
}
}
backup();
?>
但是邮件没有到达我的Gmail
我将文件从secret-backup-03-Apr-2019-2105361.zip
更改为testfile.rtf
,并使用与邮件附带的附件完全相同的代码!
任何帮助吗?!
编辑: 根据A4L answer的说法,我尝试使用相同的代码发送到mymail@outlook.com,邮件成功到达。
现在是Gmail问题。 有帮助吗?
答案 0 :(得分:1)
确保使用SSL发送电子邮件并为您的域签名证书。发件人:应具有您的域,该域名将解析为您要从中发送的IP,并且还具有有效的SPF记录。 Google发现您的电子邮件为垃圾邮件。如果它不在您的垃圾邮件文件夹中,则Google只是阻止了它。检查您的邮件日志(在/ var / log * mail中的某个地方),它应该具有指向Google支持页面的链接,其中包含有关如何使您的邮件被骗的说明。
答案 1 :(得分:1)
一次调试一件事。鉴于您的消息实际上已经到达,因此您不必担心发送过程。 如果您生成附件并将其发送失败,那么您将不知道是附件的生成还是发送的请求不满意,因此请仔细检查,您的附件首先可以单独工作。
如果您完全确定正确生成了for的备份(我注意到您的备份函数没有返回值,那么就无法检查其是否失败),请检查附件操作是否正常。如果附件失败,addAttachment()
返回布尔值false
,因此请检查:
if (!$mail->addAttachment('secret-backup-03-Apr-2019-2105361.zip')) {
throw new Exception('Attachment failed');
}
我还建议您通过SMTP而不是mail()
(您当前正在使用)发送邮件,因为SMTP更快,更安全且更容易调试:
$mail->isSMTP();
$mail->Host = 'localhost';
$mail->SMTPDebug = 2;
您的备份函数看起来可能不安全:请确保将escapeshellarg()
应用于传递给shell的所有生成的参数。