30
мая
2007
Приведем функцию на PHP использующую регулярные выражения для проверки корректности e-mail:
function CheckEmail
($email)
{
if(eregi('^([a-z0-9_]|\\-|\\.)+'.
'@'.
'(([a-z0-9_]|\\-)+\\.)+'.
'[a-z0-9]{2,4}$',
$email)):
{
return true;
};
else:
{
return false;
};endif;
}
Категория PHP |
Версия для печати
30
мая
2007
Нижеследующий пример показывает как средствами PHP отправить по e-mail письмо с прикрепленным нему файлом.
<?
// Функции. Можно вынести в дpугой файл.
class html_mime_mail
{
var $headers;
var $multipart;
var $mime;
var $html;
var $parts =
array();
function html_mime_mail
($headers=
"") {
$this->headers=
$headers;
}
function add_html
($html=
"") {
$this->html.=
$html;
}
function build_html
($orig_boundary,
$kod) {
$this->multipart.=
"--$orig_boundary\n";
if ($kod==
"w" ||
$kod==
"win" ||
$kod==
"windows-1251") $kod=
"windows-1251";
else $kod=
"koi8-r";
$this->multipart.=
"Content-Type: text/html; charset=$kod\n";
$this->multipart.=
"BCC: del@ipo.spb.ru\n";
$this->multipart.=
"Content-Transfer-Encoding: Quot-Printed\n\n";
$this->multipart.=
"$this->html\n\n";
}
function add_attachment
($path=
"",
$name =
"",
$c_type=
"application/octet-stream") {
if (!
file_exists($path.
$name)) {
print "File $path.$name dosn't exist.";
return;
}
$fp=
fopen($path.
$name,
"r");
if (!
$fp) {
print "File $path.$name coudn't be read.";
return;
}
$file=
fread($fp,
filesize($path.
$name));
fclose($fp);
$this->parts
[]=
array("body"=>
$file,
"name"=>
$name,
"c_type"=>
$c_type);
}
function build_part
($i) {
$message_part=
"";
$message_part.=
"Content-Type: ".
$this->parts
[$i]["c_type"];
if ($this->parts
[$i]["name"]!=
"")
$message_part.=
"; name = \"".
$this->parts
[$i]["name"].
"\"\n";
else
$message_part.=
"\n";
$message_part.=
"Content-Transfer-Encoding: base64\n";
$message_part.=
"Content-Disposition: attachment; filename = \"".
$this->parts
[$i]["name"].
"\"\n\n";
$message_part.=
chunk_split(base64_encode($this->parts
[$i]["body"])).
"\n";
return $message_part;
}
function build_message
($kod) {
$boundary=
"=_".
md5(uniqid(time()));
$this->headers.=
"MIME-Version: 1.0\n";
$this->headers.=
"Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
$this->multipart=
"";
$this->multipart.=
"This is a MIME encoded message.\n\n";
$this->build_html
($boundary,
$kod);
for ($i=
(count($this->parts
)-1);
$i>=
0;
$i--
)
$this->multipart.=
"--$boundary\n".
$this->build_part
($i);
$this->mime =
"$this->multipart--$boundary--\n";
}
function send
($server,
$to,
$from,
$subject=
"",
$headers=
"") {
$headers=
"To: $to\nFrom: $from\nSubject: $subject\nX-Mailer: The Mouse!\n$headers";
$fp =
fsockopen($server,
25, &
$errno, &
$errstr,
30);
if (!
$fp)
die("Server $server. Connection failed: $errno, $errstr");
fputs($fp,
"HELO $server\n");
fputs($fp,
"MAIL FROM: $from\n");
fputs($fp,
"RCPT TO: $to\n");
fputs($fp,
"DATA\n");
fputs($fp,
$this->headers
);
if (strlen($headers))
fputs($fp,
"$headers\n");
fputs($fp,
$this->mime
);
fputs($fp,
"\n.\nQUIT\n");
while(!
feof($fp))
$resp.=
fgets($fp,
1024);
fclose($fp);
}
}
// *************************************************************************
//
// В качестве аттача пpисоединяем html-письмо (открывается автоматически).
// Второй аттач - некоторый файл из каталога.
// Вот так вызывать все то, что написано выше:
//
// *************************************************************************
$mail=
new html_mime_mail
();
$mail->add_html
("<html><body><center><h2>Пpивет!<br><br>".
"<br>Посылаю файл [/bin/ls] ...".
"</h2></center></body></html>");
$mail->add_attachment
("sites.rar",
"");
$mail->build_message
("win");
// если не "win", то кодиpовка koi8
$mail->send
("smtp.mail.ru",
"komu@mail.ru",
"ot_kogo@mail.ru",
"Тема письма");
//
// После прихода письма качаем по ФТП оригинальный /bin/ls и сравниваем с
// импортированным из письма:
//
// X:\temp>fc /b ls ls2
// Сравнение файлов ls и LS2
// FC: различия не найдены
//
//
// Внимание! Если у вас нет файла /bin/ls, то просто закомментируйте строку
// $mail->add_attachment("/bin/","ls"), чтобы программа не пыталась присоединить
// к письму неcуществующие файлы.
//
?>
Категория PHP |
Версия для печати
30
мая
2007
Предлагаю несколько вариантов того, как в UNIX через shell послать файл с прикрепленным к нему файлом(аттачем):
Далее »
Категория Unix |
Версия для печати
28
мая
2007
BOCH позволяет вам эмулировать машину с Intel-овским процессором (x86) на других процессорах, например на SUN-овском. Основным приложением BOCH является запуск другой операционной системы внутри текущей ОС. Например можно запустить как отдельное окно Linux, работая в среде Windows, или Linux внутри работающей Linux, или Windows внутри Linux. Последний пример наиболее интересен для моей цели - плавного перехода пользователей от Windows к Linux.
Далее »
Категория Разработка ОС, Низкоуровневое программирование |
Версия для печати
28
мая
2007
Определение количества памяти через BIOS.
Ну, начнем с исторических функций.
Давным-давно, когда даже Билл Гейтс говорил что 640 килобайт хватит всем, но не у всех были эти 640 килобайт.
в биосах существовала функция определения количества базовой памяти.
Далее »
Категория Разработка ОС, Низкоуровневое программирование |
Версия для печати
22
мая
2007
Данный пример демонстрирует создание проекта с использованием компонента на основе DBGrid, реализующего drag and drop между полями двумя полями. Далее »
Категория Контролы, Базы данных, Delphi |
Версия для печати
21
мая
2007
Приведём регулярное выражения для поиска ссылок в тексте:
#<a.*?href=\"?'?([^\s\"'>]+)\"?'?.*?>(.*?)</a>#is
Категория Регулярные выражения, Алгоритмы |
Версия для печати
20
мая
2007
Нижеследующая функция Locate может оказаться весьма полезной (конечно, она не может предложить вам глобальную функциональность типа чуствительность к регистрам, использование индексов, закладок, но все же...).
Далее »
Категория Базы данных, Delphi |
Версия для печати
20
мая
2007
В данной статье мы подробно рассмотрим применение функции SHFileOperation.
Далее »
Категория Файловая система, Delphi |
Версия для печати
20
мая
2007
procedure TForm1.Button1Click(Sender: TObject);
var
Buffer: PChar;
Stream: TFileStream;
Size: LongInt;
begin
Stream := TFileStream.Create('Unit1.pas', fmOpenRead);
try
Size := Stream.Size;
GetMem(Buffer, Size);
try
Stream.Read(Buffer[0], Size);
Memo1.Lines.Text := Buffer;
finally
FreeMem(Buffer);
end;
finally
Stream.Free;
end;
end;
Категория Компоненты, Файловая система, Delphi |
Версия для печати