如何发送带有Excel附件的电子邮件

时间:2014-01-28 09:49:11

标签: php excel email

我在我的服务器中将excel保存在文件夹中(注意excel正在保存在服务器中),我正在尝试使用保存在我的服务器中的excel附件发送电子邮件,但我没有收到附件的电子邮件(即:我收到的电子邮件没有附件),下面是我的代码,请指导我如何操作。

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save('/data/data/www/ms/pricelists/newxcelexample.xls');

$my_path ="/data/data/www/ms/pricelists/newxcelexample.xls";

include "class.phpmailer.php"; // include the class file name
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
//$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = "mail.xichlomobile.com";
$mail->Port = "25"; // or 587
$mail->IsHTML(true);
$mail->Username = "************";
$mail->Password = "**********";
$mail->SetFrom("**************");
$mail->Subject = Test;
$mail->Body = "Test";
$mail->AddAddress("*********");
$mail->AddAttachment($my_path);

 if(!$mail->Send()){
 echo "Mailer Error: " . $mail->ErrorInfo;
}
else{
 echo "<span style='font-size:45px;color:#000000;'>Message has been sent</span><br><br>";
}

1 个答案:

答案 0 :(得分:-1)

您是否已控制该文件确实存在并正确保存? Web服务器是否有权读取文件(通常可由用户www-data读取)?

也许尝试将文件名提供给AddAttachment:

$mailer->AddAttachment($my_path, basename($my_path));
// or
$mailer->AddAttachment($my_path, basename($my_path), "quoted-printable", "application/vnd.ms-excel") ;

如果您使用的是较新版本的PHPMailer,您还可以使用例外来查看正在发生的事情。也许它不会阻止邮件外出而是附加文件。

try {
    // preparing the email just before the mail->Send()
} catch (phpmailerException $e) {
    echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
    echo $e->getMessage(); //Boring error messages from anything else!
}

尝试一次发送另一个文件,例如a * .txt或* .zip(检查您是否对可以发送的文件类型有限制,这对excel文件不太可能。)