4

添付ファイルを取得できる非常にシンプルなWebサイトフォームがあります。GmailのSMTPを使用してGmailアドレスに送信します。ファイルが「noname」として到着することを除いて、すべてがうまく機能しています-ファイル名や拡張子はありません。添付ファイルをダウンロードして正しいファイル名に変更すると、ファイルは正常に開きます。

ファイルタイプやファイル名などの引数をaddAttachment()に追加しようとしましたが、メールに表示されません。Gmailで[オリジナルを表示]をクリックすると、添付ファイルのセクションに表示されるのはこれだけです(どの引数を使用しても、まったく変更されません)。

Content-Transfer-Encoding: base64
Content-Type: application/octet-stream
Content-Disposition: attachment

これが私のコードの関連部分です:

require_once 'Mail.php';
require_once 'mime.php';

$ToEmail = '***@***.com'; 
$EmailSubject = '*** contact form';
$Filename = basename($_FILES['uploaded_file']['name']);

$host = "ssl://smtp.gmail.com";
$port = "465"; 
$username = "***@***.com";
$password = "***";

$MESSAGE_BODY = "Blah blah blah";

$Uploads_folder = "../uploads/";
$Filepath = $Uploads_folder.$Filename;
$tmp_path = $_FILES["uploaded_file"]["tmp_name"];

if(is_uploaded_file($tmp_path)) {
    if(!copy($tmp_path, $Filepath)) {
        echo 'Sorry, there was an error in uploading the file. Please go back and try  again.';
        exit();
    }
}

$headers = array ('From' => $username,
    'To' => $ToEmail,
    'Subject' => $EmailSubject);

$mime = new Mail_mime();
$mime->setHTMLBody($MESSAGE_BODY);
$mime->addAttachment($Filepath);

$body = $mime->get();
$headers = $mime->headers($headers);

$smtp = Mail::factory('smtp',
    array ('host' => $host,
        'port' => $port,
        'auth' => true,
        'username' => $username,
        'password' => $password));

$mail = $smtp->send($ToEmail, $headers, $body);

どんな助けでも大歓迎です!

4

2 に答える 2

0

引数リストContent-Typeに変数を追加しようとしましたか? addAttachment()たとえば、ユーザーが .pdf ドキュメントをアップロードしていることがわかっている場合は、次のようにします。

$Filepath = $Uploads_folder.$Filename;
$content_type = "Application/pdf";
$mime->addAttachment($Filepath, $content_type);
于 2011-07-16T18:34:10.443 に答える