Нужен совет по форме

  • Автор теми Автор теми Maxm
  • Дата створення Дата створення
Статус: Офлайн
Реєстрація: 05.02.2007
Повідом.: 71
Нужен совет по форме

У меня вопрос к веб програмистам. Недавно я на сайте Посилання видалено сделал ссылку на всплывающее окошко с формой отсылки
сообщений. (Слева внизу везде) Но че-то когда я нажимаю кнопку отправить (submit) начинает грузиться программа Outloock express.
Эта программа у меня не настроена, и я думаю у многих пользователей также. Форма сообщение не отсылает. Код такой:
<form name="pic" action="mailto: max_maziy@ukr.net" method="post">
.......
</form>
Хочется, чтоб как у других, все работало без загрузки Outloock express.
В чем проблема?
Зараннее благодарен, и не судите строго, потому как новичек.
 
Почту можно отправить ф-ей mail($to, $title, $mess, 'From:'.$from); (php)
Если на хостинге ф-я не работает (бывает и такое, сталкивался), то отпишись, расскажу как отправить письмо по smtp.

Отправка с вложением :

function XMail($from, $to, $subj, $text, $filename)
{
$un = strtoupper(uniqid(time()));
$subj = convert_cyr_string($subj, "w", "k");

$head = "From: $from\n";
//$head .= "To: $to\n";
//$head .= "Subject: ".$subj."\n";
$head .= "X-Mailer: PHPMail Tool\n";
$head .= "Reply-To: $from\n";
$head .= "Mime-Version: 1.0\n";
$head .= "Content-Type:multipart/mixed;";
$head .= "boundary=\"----------".$un."\"\n\n";

$zag = "------------".$un."\nContent-Type:text/html; charset=\"koi8-r\"\n";
$zag .= "Content-Transfer-Encoding: 8bit\n\n".convert_cyr_string($text, "w", "k")."\n\n";

for($i=0;$i<count($filename);$i++)
{
$f = fopen($filename[$i],"rb");
$zag .= "------------".$un."\n";
$zag .= "Content-Type: application/octet-stream;";
$zag .= "name=\"".basename($filename[$i])."\"\n";
$zag .= "Content-Transfer-Encoding:base64\n";
if(strpos($filename[$i], "main_bg")!==false){$zag .= "Content-ID: <main_bg>\n";}
$zag .= "Content-Disposition:attachment;";
$zag .= "filename=\"".basename($filename[$i])."\"\n\n";
$zag .= chunk_split(base64_encode(fread($f,filesize($filename[$i]))))."\n";
}

return @mail($to, $subj, $zag, $head);
}

Проверка email-a:

function CheckEmail($Email)
{
if (!eregi("^[\._a-zA-Z0-9-]+@[\.a-zA-Z0-9-]+\.[a-z]{2,6}$", $Email)) return 1;
list($Username, $Domain) = split("@",$Email);
if (@getmxrr($Domain, $MXHost)) return 0;
else
{
$f=@fsockopen($Domain, 25, $errno, $errstr, 30);
if($f)
{
fclose($f);
return 0;
}
else return 1;
}
}
 
ТС, тут товарищ честер21 написал много букафф но к твоему вопросу они имеют несколько опосредованное отношение.
На самом деле проблема к серверу не имеет никакого отношения. Проблема в пониимании что происходит.
Ключевое место в твоем коде: action="mailto: max_maziy@ukr.net"
mailto - это схема. Аналогично схемам http или ftp она определяет обработчик урла. Так вот, на схему mailto запускается дефолтовая клиентская почтовая программа, в твоем случае Аутглюк Экспресс. Запрос на сервер даже не уходит, все происходит на клиентской машине.

Теперь чего надо сделать.
1. Понять, что отправкой именно письма занимается сервер, а клиент ему передает по http только параметры письма (кому, сабж, тело и т.д.) в произвольной форме.
2. В атрибуте action надо прописать адрес скрипта на сервере, который будет заниматься отправкой письма. А в поля формы тебе необходимо ввести кому, сабж, тело письма и т.д.
3. В этом скрипте надо разобрать присланные клиентом параметры (кому, сабж, тело и т.д.), привести их к каноническому виду и вот тут уже делать что-то подобное описанному товарищем честер21 (в правильность его скрипта не вникал).
 
Назад
Зверху Знизу