解析电子邮件和将附件保存到目录中的问题

时间:2013-02-08 17:34:58

标签: php

我正在使用此脚本(http://stuporglue.org/mailreader-php-parse-e-mail-and-save-attachments-php-version-2/)在我的服务器上保存电子邮件附件。您还可以在此处查看浏览器上的完整脚本:http://stuporglue.org/downloads/mailReader.txt

一切正常,但这里有两个问题。

1)我保存到目录中的图像的文件名不是图像:1360341823_test_jpg

How to convert the file name from 1360341823_test_jpg to 1360341823_test.jpg 
in the script?

2)保存在目录中的文件的权限为600.

How to make it default 755 or 775?

我相信这是在脚本中转换图像的功能。:

function saveFile($filename,$contents,$mimeType){
global $save_directory,$saved_files,$debug;
$filename = preg_replace('/[^a-zA-Z0-9_-]/','_',$filename);

$unlocked_and_unique = FALSE;
  while(!$unlocked_and_unique){
    // Find unique
    $name = time()."_".$filename;
      while(file_exists($save_directory.$name)) {
        $name = time()."_".$filename;
      }

    // Attempt to lock
    $outfile = fopen($save_directory.$name,'w');
      if(flock($outfile,LOCK_EX)){
        $unlocked_and_unique = TRUE;
      } else {
        flock($outfile,LOCK_UN);
        fclose($outfile);
      }
  }

fwrite($outfile,$contents);
fclose($outfile);

  // This is for readability for the return e-mail and in the DB
  $saved_files[$name] = Array(
    'size' => formatBytes(filesize($save_directory.$name)), 
    'mime' => $mimeType
  );
}    

任何帮助?

1 个答案:

答案 0 :(得分:1)

原始脚本使用数据存储在数据库中,但我认为您正在尝试将其保存在文件中。您正在创建没有扩展名的文件:

 // Attempt to lock
    $outfile = fopen($save_directory.$name,'w');

将行后面的.jpg添加为:

 #outfile.=".jpg";

其他方式如果您不想更改脚本,则可以使用:

 $contents = file_get_contents($save_directory.$name);
 $outfile = fopen($save_directory.$new_name,'w');
 write($outfile,$contents);
 fclose($outfile);

这将解决您的第一个问题,第二个问题请使用提供的FTP或控制面板来访问文件以更改所有权。如果您不知道任何事情,那么您可以联系您的虚拟主机服务提供商以分享从755到775的所有权