Структура базы данных: Это всего лишь псевдо sql, чтобы показать вам, что вы можете использовать для своей структуры таблицы ..
CREATE table `emails`
id int auto_increment primary_key
email_to varchar 255
email_cc varchar 255
email_bcc varchar 255
email_from varchar 255
email_subject varchar 255
email_message text
customer_id int
user_id int
#use this field to flag the email to be sent
#i use a cron task that sends x emails per x minutes
#to avoid spam filtering and black listing
email_flag ENUM (0,1) default 0
email_sent_timestamp int
email_created_timestamp int
email_has_attachments ENUM (0,1) default 0
#this will be a serialized field of filenames
#using a naming convention as such: user_id_timestamp.pdf
#that you could use php to split and return.
#IE: 13_15648461867.pdf;14_5186484834.jpg
email_attachments text
Загрузка файла: iлично я бы не рекомендовал использовать mysql для хранения файлов, особенно если они довольно большие.Гораздо проще использовать php и его файл interactiosn для загрузки в каталог до отправки электронного письма.
хранить файлы в папке chmod 777
с именем /uploads
Пример файлаupload. Загружает как временное имя файла и проверяет, существует ли он.Поиск Google предоставил этот фрагмент.http://www.tizag.com/phpT/fileupload.php
<?php
$target_path = "/uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['uploadedfile']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}
?>
Сохраните имя файла в таблице базы данных .. используйте PHP split и foreach при отправке электронного письма для прикрепления документов.
<?php
$attachments = split(";", $email_attachments);
foreach ($attachments as $a){
// attachments code here, see php mail()
// http://www.php.net/manual/en/function.mail.php#105661
}
//create a script that doesn't have web access
//to be initiated via cron that connects to the `emails` table
//and retrieves all emails that are email_flag=0
//put them into array, and loop through 10 at a time for every 5 minutes
//send out the email
//set email_flag to 1
?>
ЕСЛИ вам нужен реальный кодобразцы, дайте мне знать.И я могу привести рабочий пример вместе.