PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: Все функции связаные с отправкой, получением и работой с почтой (e-mail)
Поиск в теме | Версия для печати
valenok
Отправлено: 07 Апреля, 2007 - 06:51:00
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel
Помог: 3 раз(а)
Функция отправки e-mail'a с сайта.
Автор Я.
Если что - будем исправлять.
PHP:
скопировать код в буфер обмена
<?PHP
#
/// Pre define some vars ..
$error = 0 ;
$mail = '' ;
$name = '' ;
$priority = 0 ;
$recipient = 0 ;
$file [ 'tmp_name' ] = '' ;
$mes = '' ;
$ok = 1 ;
$filename = '' ;
global $destination ;
// Check submitance
if ( isset ( $_POST [ 'submited' ] ) ) {
// Checking mail
if ( isset ( $_POST [ 'mail' ] ) && preg_match ( "/^[-w.]+@([A-z0-9][-A-z0-9]+.)+([A-z]{2,4}.)?[A-z]{2,4}+$/" , $_POST [ 'mail' ] ) )
// Checking sender name
if ( isset ( $_POST [ 'name' ] ) )
// Checking if mail & name provided, otherwise send message annonymiously
if ( ! empty ( $name ) && empty ( $mail ) ) { echo "Leave us youe mail adress and we will contact you .rn" ; $ok = 0 ; } if ( empty ( $name ) && ! empty ( $mail ) ) { echo "Forgot your name ? rn" ; $ok = 0 ; }
// Checking if priority was selected from available list
$_POST [ 'priority' ] > 5 || $_POST [ 'priority' ] < 1) { echo "Who's form have you submited ? rn" ; $ok = 0 ; }
else $priority = $_POST [ 'priority' ] ;
// Checking if recipient was selected from available list
$_POST [ 'recipient' ] > 3 || $_POST [ 'recipient' ] < 1) { echo "Who's form have you submited ? rn" ; $ok = 0 ; }
else $recipient = $_POST [ 'recipient' ] ;
// --
if ( empty ( $mes ) ) { echo "Empty message ?! rn" ; $ok = 0 ; }
// Checking if file was sent
if ( isset ( $_FILES [ 'file' ] [ 'name' ] ) ) { $file = $_FILES [ 'file' ] ;
}
// Formming message text
switch ( $priority ) {
case 1: $priority = "extremly important letter." ; break ;
case 2: $priority = "very important." ; break ;
case 3: $priority = "at least - answer me." ; break ;
case 4: $priority = "take a look later." ; break ;
case 5: $priority = "take a look sometimes." ; break ;
}
switch ( $recipient ) {
case 1: $recipient = "Hi admin," ; break ;
case 2: $recipient = "Hi support," ; break ;
case 3: $recipient = "I paid!," ; break ;
}
$message = $recipient . " " . $priority . "rn" . nl2br ( $mes ) . "rn" ; if ( ! empty ( $name ) ) { $message .= "I am " . $name . "rn" ; } if ( ! empty ( $mail ) ) { $message .= "E-mail: " . $mail . "rn" ; }
function upload( $file ) {
global $destination ;
$max_size = 1024 * 1024 ; // 1024 * 1024 = 1 MB
$valid_extensions = // Allowed file types to be sent us
array ( "php" , "doc" , "xls" , "pdf" , "pot" , "ppa" , "pps" , "gz" , "gzip" , "wmf" , "tar" , "tgz" , "zip" , "rar" , "ace" , "css" , "txt" , "rtx" , "log" ) ;
// Checking file size
if ( $file [ 'size' ] > $max_size )
{ echo "Ma file size is: 1 MB.rn" ; return false ; }
// Getting file type
// Checking file type
if ( ( $type === 'application' || $type === 'text' || $type === 'video' || $type === 'multipart' ) && ! in_array ( $ext , $valid_extensions ) ) { echo "What file is this ?.rn" ; return false ; }
if ( $file [ 'error' ] != 0) { echo "Error uploading file .rn" ; return false ; }
$destination = "/home/public_html/" . basename ( $file [ 'name' ] ) ; { echo "Error uploading file rn" ; return false ; }
return true ;
}
// Checking whether file was uploaded succesfully
$up = upload( $file ) ;
if ( ! empty ( $file [ 'type' ] ) && $up ) $filename = $destination ; elseif ( ! empty ( $file [ 'type' ] ) && ! $up ) { $ok = 0 ; echo "Error uploading file . .rn" ; }
if ( ! empty ( $destination ) ) { $message .= "File added..rn" ; }
function XMail( $to , $subj , $text , $filename = '' , $from = "<site> user@site.com" ) {
$f = @ fopen ( $filename , "rb" ) ; $head = "From: $fromn " ;
$head .= "To: $ton " ;
$head .= "Subject: $subjn " ;
$head .= "Mime-Version: 1.0n" ;
$head .= "Content-Type:multipart/mixed;" ;
$head .= "boundary=" ---------- ".$un ." "nn" ;
$zag = "------------" . $un . "nContent-Type:text/html; charset=windows-1255n" ;
$zag .= "Content-Transfer-Encoding: 8bitnn$textnn " ;
$zag .= "------------" . $un . "n" ;
$zag .= "Content-Type: application/octet-stream;" ;
$zag .= "name=" ".basename($filename )." "n" ;
$zag .= "Content-Transfer-Encoding:base64n" ;
$zag .= "Content-Disposition:attachment;" ;
$zag .= "filename=" ".basename($filename )." "nn" ;
return mail ( $to , $subj , $zag , $head ) ; }
// If users input passed all our checks - send the message
if ( $ok && XMail( "admin@site.com" , "Mail from site" , $message , $filename ) ) echo "Hurray !! Message sent." ;
// Deleting temporary file
}
?>
И сама форма + проверка на js:
PHP:
скопировать код в буфер обмена
<Form name='cont' method="post" encType="multipart/form-data" id='cont'>
<Table style="color:#8BE294;">
<tr>
<td width="15%">Name : </td>
<td><input size=30 name='name' value="
<?PHP if ( isset ( $_POST [ 'name' ] ) && ! $ok ) echo $_POST [ 'name' ] ; ?> "></td>
</tr>
<tr>
<td >e-mail </td>
<td ><input size=30 name='mail' value="
<?PHP if ( isset ( $_POST [ 'mail' ] ) && ! $ok ) echo $_POST [ 'mail' ] ; ?> "> </td>
</tr>
<tr>
<td >Priority : </td>
<td >
<select name="priority">
<option value="5">Very important</option>
<option value="4">Important</option>
<option value="3">Ordinary</option>
<option value="2" selected>Low importance</option>
<option value="1">Lowest importance</option>
</select>
</td>
</tr>
<tr>
<td >Recipient </td>
<td ><select name="recipient">
<option value="1" selected>Administartor</option>
<option value="2">Tech support</option>
<option value="3">Billing departament</option>
</select>
</td>
</tr>
<tr>
<td >Add file: </td>
<td >(1 MB) max. <input type='file' name='file' >
</tr>
</table>
Your message:
<textarea name='mes' rows=7 cols=55>
<?PHP if ( isset ( $_POST [ 'mes' ] ) && ! $ok ) echo $_POST [ 'mes' ] ; ?> </textarea>
<BR><BR>
<center>
<input type='hidden' name='submited' value='sended'>
<input type='button' id='sub' value="send" onclick="javascript:su();" style="width:33%;">
</center>
</form>
<script language="JavaScript">
function check(){
var name = document.getElementById('name').value.replace(/(^s*)|(s*$)/g, "");
var mail = document.getElementById('mail').value.replace(/(^s*)|(s*$)/g, "");
var message = document.getElementById('mes').value.replace(/(^s*)|(s*$)/g, "");
var priority = document.getElementById('priority').value;
var recipient = document.getElementById('recipient').value;
var file = document.getElementById('file').value;
if(message=='') {window.alert("Empty message?"); return false};
if(recipient>3 || recipient<1) {window.alert("Wrong recipient."); return false};
if(priority>5 || priority<1) {window.alert("No priority?"); return false};
if(name=='' && mail=='') { if(confirm("Send message anonymously?")){return true;}else{return false;}}
else if(name!='' && mail==''){ if(confirm("Send message without e-mail?"))
{return true;}else{return false;}
}
else if(name=='' && mail!=''){ window.alert("Please enter your name."); return false }
else if(name!='' && mail!='') {
emailTest = "^[_.0-9a-z-]+@([0-9a-z][0-9a-z_-]+.)+[a-z]{2,4}$";
var regex = new RegExp(emailTest,"gi");
// window.alert(regex.test(mail));
if (!regex.test(mail) || mail.length<6)
{window.alert("Please valid your e-mail."); return false;} else{return true;}
}
return true;
}
function su(){
if(check()){ cont.submit(); }
}
</Script>
-SCHATTEN-
Отправлено: 15 Апреля, 2007 - 15:00:06
Пользователь
Покинул форум
Сообщений всего: 615
Дата рег-ции: Июль 2006
Откуда: Оттуда !
Помог: 0 раз(а)
send_mail.php
PHP:
скопировать код в буфер обмена
<?PHP
//Передача функции e-mail'а, темы письма, текста письма и прикрепленного файла
$email = $_POST [ 'email' ] ;
$theme = $_POST [ 'theme' ] ;
$msg = $_POST [ 'msg' ] ;
$file_name = $_FILES [ 'file' ] [ 'name' ] ;
$file_tmp_name = $_FILES [ 'file' ] [ 'tmp_name' ] ;
function send_mail( $to , $thm , $html , $path )
{
$fopen = fopen ( $path , "r" ) ; if ( ! $fopen )
{
print "File is broken" ;
}
$headers .= "MIME-Version: 1.0n" ;
$headers .= "Content-Type: multipart/mixed; boundary=" $boundary "n" ;
$multipart .= "--$boundaryn " ;
$kod = 'windows-1251' ; // or koi8-r
$multipart .= "Content-Type: text/html; charset=$kodn " ;
$multipart .= "Content-Transfer-Encoding: Quote-Printednn" ;
$multipart .= "$htmlnn " ;
$message_part = "--$boundaryn " ;
$message_part .= "Content-Type: application/octet-streamn" ;
$message_part .= "Content-Transfer-Encoding: base64n" ;
$message_part .= "Content-Disposition: attachment; filename = " ".$path ." "nn" ;
$multypart .= $message_part . "--$boundary --n" ;
if ( ! mail ( $to , $thm , $multipart , $headers ) ) {
exit ( "Error, email is not send" ) ; }
}
function FileInMail ( $email , $theme , $msg , $file_name , $file_tmp_name )
{
if ( empty ( $email ) ) exit ( "Введите адрес получателя" ) ;
//checking e-mail address
$pattern = "/^[0-9a-z_]+@[0-9a-z_^.]+.[a-z]{2,6}$/i" ;
{
exit ( "e-mail is incorrect" ) ; }
$picture = "" ;
//if file exist downloading it into our server
if ( ! empty ( $file_tmp_name ) ) {
//downloadin it
$path = $file_name ;
if ( copy ( $$file_tmp_name , $path ) ) $picture = $path ; }
//sends e-mail
if ( empty ( $picture ) ) mail ( $email , $theme , $msg ) ; else send_mail( $email , $theme , $msg , $picture ) ;
//send_mail function
}
?>
При форме :
PHP:
скопировать код в буфер обмена
<html>
<head>
<title></title>
</head>
<body>
<?PHP
{
include "send_mail.php" ;
}
?>
<table>
<form enctype='multipart/form-data' method=post>
<tr>
<td width=50%>To:</td>
<td align=right><input type=text name=email maxlength=32></td>
</tr>
<tr>
<td width=50%>Theme:</td>
<td align=right><input type=text name=theme maxlength=64></td>
</tr>
<tr>
<td colspan=2>
Masage:
<textarea cols=50 rows=8 name=msg></textarea>
</td>
</tr>
<tr>
<td width=50%>Photo:</td>
<td align=right><input type=file name=file maxlength=64></td>
</tr>
<tr><td colspan=2><input type=submit value='Send'></td></tr>
</form>
</table>
</body>
</html>
Ink-developer
Отправлено: 25 Января, 2009 - 11:14:25
Новичок
Покинул форум
Сообщений всего: 1
Дата рег-ции: Янв. 2009
Помог: 0 раз(а)
Для реализации обратной связи без заморачивания со скриптами могу предложить данный сервис:
форма обратной связи
5 минут и готово,
работает даже на хостинге без php
Устанавливаеш форму обратной связи пишеш админу е-mail на который должны приходить письма и все готово
(Отредактировано автором: 14 Февраля, 2009 - 00:05:35)
vitaliy_mad
Отправлено: 26 Января, 2009 - 03:33:44
Участник
Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008
Откуда: Украина, Мариуполь
Помог: 0 раз(а)
Функция отправки почты через сокеты с поддержкой аутенификции... идея принадлежит i-novice.net. редакированное под мои нужды...
PHP:
скопировать код в буфер обмена
<?PHP
// Функция для чтения ответа сервера. Выбрасывает исключение в случае ошибки
function read_smtp_answer( $socket ) {
if ( $read { 0 } != '2' && $read { 0 } != '3' ) {
throw new Exception( 'SMTP failed: ' . $read . "\n " ) ;
} else {
throw new Exception( 'Unknown error' . "\n " ) ;
}
}
}
// Функция для отправки запроса серверу
function write_smtp_response( $socket , $msg ) {
$msg = $msg . "\r \n " ;
}
/*
send-mail функция отправки письма по протоколу SMTP с использование сокетов. PHP должен быть собран с опцией sockets
параметры:
$from - адрес отправителя. без <>. Жто требование выполняется функцией
$to - адрес получателя. без <>. Жто требование выполняется функцией
$message - текст сообщения
$subject - тема сообщения
$auth - массив с информацией о SMTP аутинификации. Используется LOGIN:
'isauth' - true - использовать ауутенификацию. false - не использовать
'login' - Логин к почтовому ящику
'passwd' - Пароль к почтовому ящику
$serv - массив с информацией о сервере
'host' - доменное имя хоста почтового сервера
'port' - порт почтового сервера (обычно 25)
*/
function send_mail
( $from , $to , $message , $subject , $auth = array ( 'isauth' => false
, 'login' => "" , 'passwd' => "" ) , $serv = array ( 'host' => 'mail.localhost' , 'port' => '25' ) ) {
$address = $serv [ 'host' ] ; // адрес smtp-сервера
$port = $serv [ 'port' ] ; // порт (стандартный smtp - 25)
if ( $auth [ 'isauth' ] )
{
$login = $auth [ 'login' ] ; // логин к ящику
$pwd = $auth [ 'passwd' ] ; // пароль к ящику
}
try {
// Создаем сокет
if ( $socket < 0) {
}
// Соединяем сокет к серверу
echo 'Connect to \'' . $address . ':' . $port . '\' ... ' ;
if ( $result === false ) {
}
// Читаем информацию о сервере
read_smtp_answer( $socket ) ;
// Приветствуем сервер
write_smtp_response( $socket , 'EHLO ' . $login ) ;
read_smtp_answer( $socket ) ; // ответ сервера
// Делаем запрос авторизации
write_smtp_response( $socket , 'AUTH LOGIN' ) ;
read_smtp_answer( $socket ) ;
// Отравляем логин
// Отравляем пароль
read_smtp_answer( $socket ) ;
// Задаем адрес отправителя
write_smtp_response( $socket , 'MAIL FROM:<' . $from . '>' ) ;
read_smtp_answer( $socket ) ;
// Задаем адрес получателя
write_smtp_response( $socket , 'RCPT TO:<' . $to . '>' ) ;
read_smtp_answer( $socket ) ;
// Готовим сервер к приему данных
write_smtp_response( $socket , 'DATA' ) ;
// Отправляем данные
$message = "To: $to \r \n " . $message ; // добавляем заголовок сообщения "адрес получателя"
$message = "Subject: $subject \r \n " . $message ; // заголовок "тема сообщения"
$message = "Content-Type: text/plain\r \n " . $message ; // заголовок "тема сообщения"
write_smtp_response( $socket , $message . "\r \n ." ) ;
read_smtp_answer( $socket ) ;
// Отсоединяемся от сервера
write_smtp_response( $socket , 'QUIT' ) ;
read_smtp_answer( $socket ) ;
} catch ( Exception $e ) {
echo "\n Error: " . $e -> getMessage ( ) ;
}
}
}
?>
Пример использования:
PHP:
скопировать код в буфер обмена
<?PHP
$serv = array ( 'host' => 'mail.example.com' , 'port' => '25' ) ; $auth = array ( 'isauth' => true
, 'login' => 'client@example.com' , 'passwd' => 'mypasswd' ) ; $from = 'client@exapmle.com' ;
$to = 'client2@example2.com' ;
$subject = "Заголовок" ;
$mess = "Это сообщения является информационным. Просьба не отвечать на него..." ;
send_mail( $from , $to , $mess , $subject , $auth , $serv ) ;
?>
(Отредактировано автором: 26 Января, 2009 - 03:36:00)
martiny007
Отправлено: 16 Февраля, 2009 - 10:53:52
Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Февр. 2009
Помог: 0 раз(а)
Реально работает сервис
http://www[dot]vipform[dot]ru - форма обратной связи на html. Сервис предоствляет возможность использовать форму обратной связи на любом сайте. Я сам правда не ставил её - у меня нет сайта. Но у приятеля моего несколько таких форм на сайте.
Вездеход
Отправлено: 16 Февраля, 2009 - 13:25:47
Частый посетитель
Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008
Откуда: Россия
Помог: 0 раз(а)
martiny007 пишет: Реально работает сервис
http://www[dot]vipform[dot]ru - форма обратной связи на html. Сервис предоствляет возможность использовать форму обратной связи на любом сайте. Я сам правда не ставил её - у меня нет сайта. Но у приятеля моего несколько таких форм на сайте.
чувак, форма в десятки раз круче этой пишется максимум за час. так что вопрос - нафига ж брать с этого сайта? тем более зависить от кого то...
-----о великий nl2br !
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB