2010-03-20 1 views
2

У меня есть этот скрипт для создания HTML-страницы из загрузчика изображений. Единственная проблема заключается в том, что он перезаписывает себя при каждой загрузке, я бы хотел изменить его, чтобы получить отправил электронное письмо вместо этого.Преобразование html-генератора php-скрипта в автоматический сценарий электронной почты

Идеи?

<?php 

$destination_dir = "uploaded/"; 
$targetPath = dirname($_SERVER['SCRIPT_URI']) . "/"; 

$html_start = " 
<!doctype html public \"-//w3c//dtd html 4.0 transitional//en\"> 

<html> 
<head> 
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"> 
<title>Upload results</title> 
</head> 
<body> 
"; 

$html_end = " 
</body> 
</html> 
"; 

// Check if there are AdditionalStringVariable 
$result = "AdditionalStringVariable: " . $_POST["AdditionalStringVariable"]; 
$result .= "<br>"; 


// Process value of QIU_thumbnails_Imagedata field, this is JPEG-files array of generated thumbnails 
if($_FILES[QIU_thumbnails_Imagedata]) 
{ 
foreach ($_FILES[QIU_thumbnails_Imagedata][name] as $key => $value) 
{ 
    $uploadfile = $destination_dir . basename($_FILES[QIU_thumbnails_Imagedata][name][$key]); 


    if (move_uploaded_file($_FILES['QIU_thumbnails_Imagedata']['tmp_name'][$key], $uploadfile)) 
    { 

     $big_image_name = $_FILES[Imagedata][name][$key]; 

     $result .= "<a href='" .$big_image_name. "'>" . "<img border = '0' src='".$value . "'/></a><br><br>"; 
    } 
} 
} 
// 
$result .= "<br>"; 


// Process value of Imagedata field, this is JPEG-files array 

foreach ($_FILES[Imagedata][name] as $key => $value) 
{ 
$uploadfile = $destination_dir . basename($_FILES[Imagedata][name][$key]); 

if (move_uploaded_file($_FILES['Imagedata']['tmp_name'][$key], $uploadfile)) 
{ 
    $result .= "File uploaded: <a href='". $value . "'>" . $value . "</a><br>"; 
} 
} 


// 
$result .= "<br>"; 




// 
// Process GlobalControlData field, this is the array of serialized data for Global controls 
// the value for each control is: id|value 
if($_POST[GlobalControlData]) 
    { 
    foreach ($_POST[GlobalControlData] as $key => $value) 
{ 
    $globalControlExploded = explode("|", $value); 
    $result .= "\n" . "GlobalControlData:\n\t" . $globalControlExploded[0] ."\t:\t" . $globalControlExploded[1] . "<br>"; 
} 
} 

// 
// Process LocalControlData field, this is the array of serialized data for Local controls 
// value for each image is: image||id1|value1^id2|value2^id3|value3, where image - is picture name, id - is unique control ID , and a value - control value 
if($_POST[LocalControlData]) 
{ 
foreach ($_POST[LocalControlData] as $key => $value) 
{ 
    $exploded = explode("||", $value); 
    $parentFile = $exploded[0]; 

    $result .= "<br>" . $exploded[0] . "<br>"; 

    $explodedToControls = explode("^", $exploded[1]); 

    foreach ($explodedToControls as $cnt => $val) 
    { 
     $eachControl = explode("|", $val); 
     $result .= "\tcontrol:\t" . $eachControl[0] . ", value:\t" . $eachControl[1] . "<br>"; 

    } 
    // 
} 
} 
// 

$result = $html_start . $result . $html_end; 

// 
if(@$fp = fopen($destination_dir.'index.html', 'w')) { 
     fwrite($fp, $result); 
     fclose($fp); 
} 

132 echo $targetPath . $destination_dir; 
133 
134 ?> 

Я просто добавил это:

135 
136 $to = '[email protected]'; 
137 $subject = 'Baublet Order Received'; 
138 $headers = 'From: [email protected] '. "\r\n" . 
139   'MIME-Version: 1.0' . "\r\n" . 
140 'Content-type: text/html; charset=utf-8' . "\r\n"; 
141 mail($to, $subject, $result, $headers"); 
142 
143 ?> 
+0

Что вы пытаетесь отправить по электронной почте? Сообщение о том, что файл был записан? Само изображение? –

ответ

1

Я понимаю, что, вместо того, сохранение HTML на сервере, вы хотите, чтобы отправить его в качестве электронной почты где-нибудь. Это то, о чем вы просите? Если нет, отредактируйте/прокомментируйте свой вопрос, чтобы уточнить, что вам нужно.

Блок

if(@$fp = fopen($destination_dir.'index.html', 'w')) { 
     fwrite($fp, $result); 
     fclose($fp); 
} 

заботится о сочинительстве файла в файловой системе сервера, потенциально заменить что-то. Если вы не хотите сохранять HTML как файл на сервере, вам просто нужно избавиться от этого блока (удалить его или прокомментировать).

К этому моменту у вас уже есть сгенерированный HTML-код в переменной $result (если вы посмотрите ближе, это то, что исходный код сохраняет в файл); поэтому, если вы хотите отправить его по почте, у вас уже есть ваше тело. Выделите адреса «от», «до», «СС» (если есть) и «BCC» (если есть), а также тему для своей почты. «From» часто идет как литерал или константа, но также может быть полем ввода из POSTED-формы. Адрес «to» зависит от того, где вы хотите отправить почту. Затем использовать что-то вроде этого на самом деле отправить его:

$to = "here goes the destination address"; 
$subject = "here you put the subject line for the e-mail"; 
$headers = "From: " . $whatever_your_sender_address_is . "\r\n" . 
      "MIME-Version: 1.0\r\nContent-type: text/html; charset=utf-8\r\n"; 
mail($to, $subject, $result, $headers); 

Посмотрите на почту() документацию 's на http://ie2.php.net/manual/en/function.mail.php для получения более подробной информации о функции почты(). Обратите внимание, что в этом случае вам необходимо определить не менее 3 заголовков: «От» всегда должно быть указано (у некоторых почтовых приложений на стороне сервера может быть адрес по умолчанию «от», но всегда желательно наступать на прочную основу) , Заголовки «MIME-Version» и «Content-type» должны гарантировать, что почта отправляется как HTML, а не как текст. Вы можете добавить «Reply-to», «CC», «BCC» и другие заголовки в зависимости от ваших потребностей: в таком случае просто добавьте их в переменную $ headers, разделенную «\ r \ n», перед вызовом mail().

Надеюсь, это поможет.

+0

То для вашего времени ... вы поняли мой вопрос и результат работает. Потребовалось немного времени, чтобы письмо прибыло ... но это произошло. –

+0

Я только что изменил адрес электронной почты, и вдруг?> Не длинный красный, и он не работает ... какие-нибудь идеи, как правильно закрыть это? Michael Я отредактировал вопрос, чтобы показать позиционирование над надстройкой. –

+0

Вы только что добавили блок кода, как предлагает ваш обновленный пост? Во-первых, это оставляет часть «сохранить файл» там (это нормально, пока это то, что вы хотите), но более критически: на линии 134 у вас уже есть закрытие «?>»: Если вы хотите, чтобы после этого код обрабатывается как PHP, вам нужно удалить это или добавить новый «

Смежные вопросы