我想把我的备份压缩文件附加到我的gmail上。大约300 to的压缩文件iam试图使用这个代码
<?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的问题。有什么帮助吗?
发布于 2019-04-03 21:53:30
确保使用SSL发送电子邮件,并为您的域签名证书。来自:应该有您的域,这解决了您的IP,您从其中发送,并有一个有效的SPF记录。谷歌发现你的电子邮件是垃圾邮件。如果它不在你的垃圾邮件文件夹中,谷歌只是封锁了它。检查您的邮件日志(在/var/ log * mail中的某个位置),它应该有一个指向google页面的链接,上面有关于如何使您的邮件被删除的说明。
发布于 2019-04-04 06:47:12
一次调试一件事。考虑到您的消息实际上正在到达,这不是您需要担心的发送过程。如果您生成附件并发送它,它失败了,您不知道是生成的还是发送的不愉快,所以再次检查您的下一代首先工作,自己。
如果您完全确定您的备份是正确生成的(我注意到您的备份函数没有返回一个值,因此无法检查它是否失败),请检查附件操作是否有效。如果附件失败,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的所有生成的参数。
https://stackoverflow.com/questions/55504757
复制相似问题