php邮件附件

时间:2012-06-04 04:10:28

标签: php html email sendmail phpmailer

我一直在使用这个脚本向某些员工发送电子邮件,但由于我的系统发生了变化,我现在必须通过电子邮件发送附件,我已经尝试了多种代码来实现这一目标但是却没有成功......我仍然收到电子邮件,但没有附件,这是毫无意义的,在这种情况下,我已经放置了我正在使用的脚本

我删除了我正在使用的真实地址和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";

我还尝试了一些附加文件的其他方法,但似乎没有任何帮助是非常适用的

3 个答案:

答案 0 :(得分:5)

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

如果您收到的邮件没有任何问题,那么问题就不会出现在您的代码中。

要检查的一些事项:

  • 确保您的网络服务器可以读取文件“matt.txt”并且路径正确。该文件的路径需要包含在 $ mail-&gt; 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!
    
    }
    

答案 1 :(得分: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

答案 2 :(得分:1)

好的,这还没有关闭,所以我想,因为我有完全相同的问题,我会给你我的解决方案,对我有用。 我相信以前的邮件说得对。您需要确定文件的绝对路径。如果您在共享服务器上运行,这并不总是一件容易的事情。无论如何,我在我的页面上嵌入了以下代码,它回显了该页面的确切路径。从那里可以很容易地找出如何将一个级别放入包含我想要附加的文件的目录中。

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

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