2017-03-18 91 views
1

这是我的电子邮件发送php文件,电子邮件发送但附件不工作。文件就在那条路上。问题是我需要从一个linux命令获取文件名并存储在一个变量中。当我调用变量附件不起作用时。PHPmailer文件附件不起作用

<?php 

require_once('phpmailer/class.phpmailer.php'); 
$mail = new PHPMailer(); 
$file_name1 = shell_exec('sed "1q;d" /tmp/file.txt'); 
$file = "/home/user/.$file_name1"; 
echo $file; 


//set Address data 
$mail->Subject = "Acknowledgement Files ".date("m-d-Y:h:i:s")." "; 
$mail->MsgHTML(" Acknowledgement Files are here attached"); 
$mail->AddAttachment($file) 


if($mail->Send()) { 
     echo "Message sent!"; 
} else { 
     echo "Mailer Error: " . $mail->ErrorInfo; 
} 

?> 

如果我要使用完整路径类似

$file = "/home/user/filetxt"

这个工作,但我想打电话给变量和回波显示正确的名称。 有什么想法?

+0

你尝试realpath($ path_of_file)? –

+0

'$ file =“/ home/user /.$ file_name1”;'使用'$ file =“/ home/user/$ file_name1”;'或'$ file =“/home/user/".$ file_name1;' –

+0

检查你的文件路径,请参阅https://github.com/PHPMailer/PHPMailer –

回答

1

把你的变量报价外,像这样:

$file = "/home/user/".$file_name1; 
+0

我已经尝试过,但它没有奏效。 – abaid778

0

所以,我发现问题和解决方案,以及。所以当我们在linux上运行任何命令时,如ls /path/的输出是result\n。它也增加了新的线性字符。所以我改变了这一行

$file_name1 = shell_exec('sed "1q;d" /tmp/file.txt');

$file_name1 = trim(shell_exec('sed "1q;d" /tmp/file.txt'));

去除新线。现在它工作