如何使用phpMailer library将下载的excel文件发送到邮件?

维奈·尼沙尔

我有一个从 mysql 数据库生成 excel 文件并下载文件的代码。下载文件后,我想在我的电子邮件中发送该文件。我正在使用 PHPMailer 库来执行此操作。我单独测试了 PHPMailer 模块,它的工作正常,邮件正在发送,但是当我将该模块与我现有的代码附加在一起时,excel 文件正在下载它没有按预期工作。它给我错误“无法访问该站点”。如果我从我的代码中删除附件行,它工作正常。下载文件并发送邮件。但我希望该文件附加在我的电子邮件中。这是我正在使用的代码

<?php
    require("PHPMailer/src/SMTP.php");
    require("PHPMailer/src/PHPMailer.php");

    use PHPMailer\PHPMailer\SMTP;
    use PHPMailer\PHPMailer\PHPMailer;

    $mail = new PHPMailer();

    $conn = new mysqli('localhost', 'root', 'root');
    mysqli_select_db($conn, 'dailyplay');

    $setSql = "SELECT id, name, description FROM genres";
    $setRec = mysqli_query($conn, $setSql);


    $columnHeader = "ID"."\t"."Name"."\t"."Description";


    $setData = '';

    while ($rec = mysqli_fetch_row($setRec)) {  
        $rowData = '';
        foreach ($rec as $value) {
            $value = '"' . $value . '"' . "\t";  
            $rowData .= $value;  
        }  
        $setData .= trim($rowData) . "\n";  
    }  

    header("Content-type: application/octet-stream");  
    header("Content-Disposition: attachment; filename=INTRANSIT_Report.xls");  
    header("Pragma: no-cache");
    header("Expires: 0");  

    echo ucwords($columnHeader) . "\n" . $setData . "\n";  
    sleep(5);
    try {
       //Server settings
        $mail->SMTPDebug = SMTP::DEBUG_OFF;                      
        $mail->isSMTP();          
        $mail->Host       = 'smtp.gmail.com';                     
        $mail->SMTPAuth   = true;                                   
        $mail->Username   = 'USERNAME_HERE';                     
        $mail->Password   = 'PASSWORD_HERE';                               
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;            
        $mail->Port       = 587;                                    

        //Recipients
        $mail->setFrom('EMAIL_HERE', 'USERNAME_HERE');  
        $mail->addAddress('RESIPIENT_HERE', 'USERNAME_HERE');     

        $mail->addAttachment('/home/winningcodie/Downloads/INTRANSIT_Report.xls', 'Report.xls');    

        //Content
        $mail->isHTML(true);                                  //Set email format to HTML
        $mail->Subject = 'Here is the subject';
        $mail->Body    = 'This is the HTML message body <b>in bold!</b>';

        $mail->send();
        echo 'Message has been sent';
    } catch (Exception $e) {
        echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
    }

?>

其余代码工作正常。该文件以excel格式下载。如果我取消注释邮件附件行,它会给我错误“无法访问该站点”。

扎容奇

您动态生成文件并将其发送到浏览器,浏览器将其保存在同一个磁盘上,而脚本尝试将文件作为同一进程的一部分读取 - 恐怕它不起作用(正如您所看到的它没有)。

不要立即将文件发送到浏览器。首先将其保存在磁盘上,然后在电子邮件发送过程中读取它,然后将其返回到浏览器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用phpmailer通过位置选择将邮件发送到多个邮件地址?

如何将SFTP文件下载发送到后台?

如何使用laravel将附件文件发送到电子邮件

如何使用PHPMailer(CodeIgniter 3)将QRCode发送到Gmail

如何在php中使用PHPMailer将两个不同的电子邮件发送到两个不同的电子邮件地址

使用 Outlook VBA 将邮件类别数据发送到 Excel

如何将zip文件发送到前端以在DRF中下载

如何将徽标附加到 pdf 文件并发送到邮件

使用Google表格将压缩的Zip文件夹发送到电子邮件

使用 Ajax/XMLhttprequest 将数据发送到具有邮件功能的 php 文件

使用PHPMailer格式化Gmail API的MIME邮件时,如何发送到密件抄送地址?

使用bat文件将文件发送到电子邮件地址而不暴露电子邮件信息?

如何将结果javascript发送到php邮件?

使用python将邮件发送到IP地址

如何将 excel 范围发送到表中并发送电子邮件到列表

如何使用 Python 将 XML 文件发送到 RabbitMQ?

如何使用骆驼将大文件发送到ActiveMQ

如何使用Ajax将图像发送到PHP文件?

如何使用flask将JSON发送到HTML文件?

如何使用ajax打开将数据发送到的文件?

如何使用 JQuery 将文件发送到操作?

MVC 5-如何将Excel文件发送到客户端?

如何使用PHPMailer发送FPDF文档

使用Java Servlet将Excel文件发送到客户端

如何使用php将邮件从数据库发送到多个电子邮件列表

如何使用PhpMailer和WAMP发送电子邮件

如何在使用phpmailer发送的邮件中添加脚本?

如何使用的PHPMailer发送电子邮件的x个?

如何使用phpmailer并从ckeditor以html格式发送邮件