2017-03-18 100 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'));

去除新線。現在它工作