【问题标题】:php mailer attachmentsphp邮件附件
【发布时间】:2012-06-08 05:26:11
【问题描述】:

我一直在使用此脚本向某些员工发送电子邮件,但由于我的系统发生更改,我现在必须随电子邮件发送附件,我尝试了多种代码来完成此操作,但均未成功...我仍然收到电子邮件,但没有附件,这在这种情况下毫无意义,我已将我正在使用的脚本放在下面

我已经删除了我使用的真实地址和 smtp 服务器

    require("PHPMailer/class.phpmailer.php");

$mail = new PHPMailer();

$mail->IsSMTP();    // set mailer to use SMTP
$mail->Host = "SMTP.SErver.com";    

$mail->From = "From@email.com";    
$mail->FromName = "HCSC";  
$mail->AddAddress("To@email.com", "Example"); 
$mail->AddReplyTo("Reply@email.com", "Hcsc"); 

$mail->WordWrap = 50;    
$mail->IsHTML(false);    

$mail->Subject = "AuthSMTP Test";
$mail->Body    = "AuthSMTP Test Message!";
$mail->AddAttachment("matt.txt"); //this is basicly what i am trying to attach as a test but will be using excel spreadsheets in the production

if(!$mail->Send())
{
   echo "Message could not be sent. <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}

echo "Message has been sent";

我也尝试了其他一些附加文件的方法,但似乎都没有任何帮助,非常感谢

【问题讨论】:

    标签: php html email sendmail phpmailer


    【解决方案1】:

    您的代码看起来相当简单且语法正确。脚本是否返回任何错误消息?

    如果您收到的消息没有任何问题,那么问题似乎不在您的代码中。

    需要检查的几件事:

    • 确保文件“matt.txt”对您的网络服务器可读并且路径正确。文件的路径需要包含在 $mail->AddAttachment() 方法调用中,并且应该相对于脚本的位置。
    • 验证您的邮件服务器没有因为限制而删除任何附件和/或尝试发送不同的附件文件类型(尝试使用 .zip 或 .jpg 文件)
    • 如果您正在运行较新版本的 phpMailer,您可以尝试使用以下语法捕获任何抛出的异常(可能不会阻止消息发出,但只是阻止包含附件) : (taken from phpMailer Example Code)

      require 'PHPMailer/PHPMailerAutoload.php';
      $mail = new PHPMailer(true);
      try {
      
        $mail->IsSMTP();    // set mailer to use SMTP
        $mail->Host = "SMTP.SErver.com";    
      
        $mail->From = "From@email.com";    
        $mail->FromName = "HCSC";  
        $mail->AddAddress("To@email.com", "Example"); 
        $mail->AddReplyTo("Reply@email.com", "Hcsc"); 
      
        $mail->WordWrap = 50;    
        $mail->IsHTML(false);    
      
        $mail->Subject = "AuthSMTP Test";
        $mail->Body    = "AuthSMTP Test Message!";
        $mail->AddAttachment("matt.txt");
        echo "Message Sent OK<p></p>\n";
      
      } catch (phpmailerException $e) {
      
        echo $e->errorMessage(); //Pretty error messages from PHPMailer
      
      } catch (Exception $e) {
      
        echo $e->getMessage(); //Boring error messages from anything else!
      
      }
      

    【讨论】:

    • 是的,电子邮件发送时没有错误,所以你的意思是我需要包含路径,所以如果文件位于此处“D:\xampp\htdocs\excel\files\matt.txt”我需要包括在 AddAttachment("")..
    • 我已经尝试将完整路径添加到文件中,现在它似乎可以正常工作了,谢谢:D
    【解决方案2】:

    您需要提供文件的完整路径和文件名函数,除了两个/三个参数

    // Setup mail class, recipients and body
    $mailer->AddAttachment('/home/mywebsite/public_html/file.zip', 'file.zip');
    

    http://www.askapache.com/php/phpfreaks-eric-rosebrocks-phpmailer-tutorial.html#File_Attachments_PHP_Mail_PHPMailer

    【讨论】:

      【解决方案3】:

      好的,这还没有结束,所以我想既然我遇到了完全相同的问题,我会给你我的解决方案,它对我有用。 我相信以前的邮件是对的。您需要确定文件的绝对路径。这并不总是一件容易的事,特别是如果您在共享服务器上操作。无论如何,我在我的页面上嵌入了以下代码,它回显了该页面的确切路径。从那里开始,很容易弄清楚如何将关卡放入包含我要附加的文件的目录中。

        'var_dump(stream_resolve_include_path("Thankyou.php"));'
      

      只需复制并粘贴该行并将其放入您的页面中,插入您的页面名称并替换我插入的Thankyou.php(保留语音标记)。运行页面并检索您的绝对路径。只需在后面删除它并在 PHPMailer 的 AddAttachment 段中插入新路径。

      【讨论】:

        猜你喜欢
        • 2011-09-28
        • 2011-03-24
        • 2018-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-04
        相关资源
        最近更新 更多