首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHPMailer不发送带有附加压缩文件的邮件

PHPMailer不发送带有附加压缩文件的邮件
EN

Stack Overflow用户
提问于 2019-04-03 21:42:51
回答 2查看 886关注 0票数 0

我想把我的备份压缩文件附加到我的gmail上。大约300 to的压缩文件iam试图使用这个代码

代码语言:javascript
运行
复制
<?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代码创建的:

代码语言:javascript
运行
复制
<?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的问题。有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-03 21:53:30

确保使用SSL发送电子邮件,并为您的域签名证书。来自:应该有您的域,这解决了您的IP,您从其中发送,并有一个有效的SPF记录。谷歌发现你的电子邮件是垃圾邮件。如果它不在你的垃圾邮件文件夹中,谷歌只是封锁了它。检查您的邮件日志(在/var/ log * mail中的某个位置),它应该有一个指向google页面的链接,上面有关于如何使您的邮件被删除的说明。

票数 2
EN

Stack Overflow用户

发布于 2019-04-04 06:47:12

一次调试一件事。考虑到您的消息实际上正在到达,这不是您需要担心的发送过程。如果您生成附件并发送它,它失败了,您不知道是生成的还是发送的不愉快,所以再次检查您的下一代首先工作,自己。

如果您完全确定您的备份是正确生成的(我注意到您的备份函数没有返回一个值,因此无法检查它是否失败),请检查附件操作是否有效。如果附件失败,addAttachment()将返回布尔false,因此请检查:

代码语言:javascript
运行
复制
if (!$mail->addAttachment('secret-backup-03-Apr-2019-2105361.zip')) {
    throw new Exception('Attachment failed');
}

我还建议通过SMTP发送,而不是使用mail() (您目前正在使用的),因为SMTP更快、更安全,而且更易于调试:

代码语言:javascript
运行
复制
$mail->isSMTP();
$mail->Host = 'localhost';
$mail->SMTPDebug = 2;

备份函数看起来可能不安全:确保将escapeshellarg()应用于传递给shell的所有生成的参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55504757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档