2012-05-02 3 views
0

Право, я новичок в PHP и mySQL, но у меня есть несколько вопросов, на которые я надеюсь, что некоторые из вас, ребята, могут ответить, потому что это меня пугает прямо сейчас.Основные PHP и формы

(я все еще буду стараться читать больше на Google, чтобы увидеть, если я могу найти ответы в то время как это происходит, так что если я найти, я выложу свои ответы здесь, а)

  1. Я хочу получить форму обратной связи на моем сайте. Я смотрю на PHP-формы электронной почты, но я немного путаюсь здесь.

В API говорится, что для того, чтобы кто-то послал мне электронное письмо, скрипт php должен ввести и отправить код:

mail(to,subject,message,headers,parameters) 

Однако я понимаю, что внутри этой функции нет аргумента «from». Почему это так? Как я смогу узнать электронную почту другого человека и ответить на него через мой собственный адрес электронной почты после получения такого запроса обратной связи?

Я также читаю на тех частях, где люди включают электронную почту отправителя в аргумент «заголовки». Как будет собираться почтовая система, если есть адрес отправителя, если я включаю это в аргумент «header»? (Я прошу эту часть, потому что мой веб-хост предоставляет автоответ, прежде чем я отвечу, и я хочу, чтобы он мог распознавать, что электронное письмо отправителя - это электронное письмо, на которое система должна автоответть)

Будет ли это проще просто поместить mailto: [email protected] ссылку на веб-страницу?

Я думаю, что это почти все, что я пытаюсь выяснить на данный момент, у меня есть более сложные вопросы, но я думаю, что сначала попытаюсь решить более простые задачи.

+3

From задан в параметре заголовков. –

+0

Не используйте "mailto:". У современных браузеров есть почтовые обработчики, но большинство старых открывают Outlook и любят, и большинство таких людей, как я, ленивы, чтобы настроить их. – Shubham

+1

Не используйте 'mailto:', пожалуйста, не кормите спам-ботов – Oerd

ответ

6

Check out php mail in the manual

additional_headers (необязательно)

Строка, которая будет вставлена ​​в конце заголовка электронной почты.

Обычно это используется для добавления дополнительных заголовков (From, Cc и Bcc). Несколько дополнительных заголовков должны быть разделены CRLF (\ r \ n).

Пример из ручного

$to  = '[email protected]'; 
$subject = 'the subject'; 
$message = 'hello'; 
$headers = 'From: [email protected]' . "\r\n" . 
      'Reply-To: [email protected]' . "\r\n" . 
      'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $message, $headers); 

Update:

Вы также спросили о вводе имени в адрес отправителя. Для этого просто измените значение From: в заголовках на WEBMASTER NAME <[email protected]>

+1

бонусные баллы за цитирование и ссылки на руководство :) – Oerd

+0

Это довольно подробно. Я попытаюсь отправить базовый сценарий, как это, посмотрите, как он выглядит на стороне почтового клиента. –

0

Функция почты используется только для отправки почты «людям» через локально настроенный или указанный удаленный почтовый сервер, он не может «получать» почту, делать что вам понадобятся другие функции, такие как чтение данных с почтового сервера, который зависит от этого почтового сервера.

На веб-странице проще поместить ссылку «mailto», но в основном с помощью «mail()», вы можете сделать всю небольшую форму, которую они используют, что делает ваш веб-сервер действующим в качестве почтового клиента, который может отправлять только почту (если вы не ввели расширенные функции).

+0

"расширенная функциональность"? Опишите это, пожалуйста. Мне интересно узнать, что еще может быть внутри PHP-скрипта электронной почты ... если вы хотите сообщить мне об этом. –

+0

Вы можете добавить все, что вы могли бы добавить к любому другому скрипту PHP - например, вы могли бы написать электронное письмо в базу данных. – andrewsi

+0

Как я уже говорил выше, вы можете делать такие вещи, как чтение данных непосредственно с почтового сервера через несколько носителей, протоколов или баз данных, и вы можете использовать другие библиотеки, такие как PHPMailer или даже лучше, SwiftMailer, чтобы как можно меньше отправлять почту в любой форме тебе нравится. – PolishHurricane

0

Вот рудиментарный скрипт обработки формы, который может оказаться полезным.

<?php 

if (isset($_POST) && count($_POST) > 0){ 
    // Form was submitted, process it 

    foreach ($_REQUEST as $k=>$v){ // Loop through values submitted and add them to a message to send to form owner 
     $k = stripslashes($k); 
     $v = stripslashes($v); 
     $message .= "$k: $v\r\n"; 
    } 

    $headers = "From: Name <[email protected]>\r\n"; // This is the FROM address 
    // Uncomment the following line to set From using the value passed to the form 
    // $headers = "From: {$_POST['your_name']} <{$_POST['email']}>\r\n"; // This is the FROM address 

    $ab = mail('[email protected]', 'Contact Submission Form', $message, $headers); // Send the email 

    if ($ab == true){ 
     // Message sent! 
     echo '<strong>Thank you, your message was received.</strong>'; 
    } 

} 

?> 

<form action="" method="post" id="contactform"> 
<label for="your_name">Name:</label> 
<input type="text" name="your_name" id="your_name" class="field" value="" /> 
<label for="email">Email:</label> 
<input type="text" name="email" id="email" class="field" value="[email protected]" /> 
<label for="phone">Phone:<span>(optional)</span></label> 
<input type="text" name="phone" id="phone" class="field" value="(000) 000-0000" /> 
<label for="message">Message:</label> 
<textarea name="message" id="message" class="field textarea" cols="20" rows="5"></textarea> 

<input type="submit" value="Send Message" /> 

</form> 
0

SMTP-сервер, отправляющий электронное письмо, является вашим (ваш сайт) (его можно настроить как удаленный сервер). Вот почему поле From принято в основном из текстового поля в вашей форме.

1

Если вы поместите ссылку mailto на свою страницу, когда пользователь нажмет на нее, тогда она откроет почтовый клиент пользователя и отправит вам электронное письмо. Недостатком является то, что адрес электронной почты, который находится на странице, легко доступен для спамеров.

Если вы используете форму PHP, то ваш адрес электронной почты останется скрытым - он похоронен внутри кода. Недостатком является то, что его настройка более активна.

Как указано в разделе «Парус», вы можете указать адрес From внутри параметра заголовков. Если он не установлен, он будет использовать детали процесса, на котором работает веб-сервер (например, [email protected]). Не самый полезный, но, как правило, это не проблема.

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

+0

Право, чтобы получить адрес электронной почты, я должен иметь вход внутри формы. Я сейчас понимаю заголовочные файлы, в разделе аргументов заголовка должно быть выражение вида From: $ sender. –

+0

Я обычно отправляю электронные письма с PHP с использованием общего адреса From в заголовках и включаю адрес электронной почты, введенный пользователем как часть тела письма. Наш почтовый сервер настроен на игнорирование писем, у которых нет действительного адреса From, поэтому, если ваш пользователь делает опечатку в своем адресе, вы никогда не получите электронное письмо и даже не узнаете, что отправлено. Слишком легко случайно ввести «[email protected]» - вы можете решить, что это такое, но сервер не может. – andrewsi

+0

Я вижу. право, человеческие ошибки не совсем вычислимы компьютерами ... –

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