2010-06-17 2 views
0

Я пытаюсь отправить электронное письмо с помощью PHP mail() на сайте wordpress. Я создал пустую страницу http://www.exam-vision.com/request-flip-up-instructions, шаблон которой содержит код php, показанный ниже. Когда я отправляю данные, isset ($ _ REQUEST ['email']) является ложным, в то время как я могу в firebug, что данные были опубликованы правильно. Что может быть неправильным?Отправить email в wordpress

благодаря

<?php 

if (isset($_REQUEST['email'])) 
//if "email" is filled out, send email 
{ 
    //send email 

    $email = $_REQUEST['email'] ; 
    $subject = $_REQUEST['subject'] ; 
    $message = $_REQUEST['message'] ; 
    mail("<someemail>", "Subject: $subject", 
    $message, "From: $email"); 
    echo "Thank you for using our mail form"; 
} 
else 
//if "email" is not filled out, display the form 
{ 
    echo "<form method='post' action='http://www.exam-vision.com/request-flip-up-instructions'> 
    Email: <input name='email' type='text' /><br /> 
    Subject: <input name='subject' type='text' /><br /> 
    Message:<br /> 
    <textarea name='message' rows='15' cols='40'> 
    </textarea><br /> 
    <input type='submit' /> 
</form>"; 
} 
?> 

ответ

2

Вместо $ REQUEST, просто использовать $ _POST, так как страница размещения на себя и быть уверены, чтобы проверить, если it's set или если это empty. И вместо использования функции mail() PHP используйте функцию WordPress 'wp_mail.

В качестве альтернативы вы также можете использовать плагины для этого. CformsII и Gravity Forms (премиальный плагин) - всего лишь несколько примеров. Я использовал CformsII, и он довольно обширен и обладает богатыми возможностями для бесплатного плагина.

+0

Я заменил REQUEST POST, но он по-прежнему не работает. $ _POST ['email'] пуст, пока я вижу его в данных POST в firebug ... – jul

+0

Я не знаю, почему это работает некорректно, но я повторю то, что hsatterwhite сказал о плагинах. В дополнение к формам CformsII и Gravity Forms есть контактная форма 7, громоздкая и одна, которую я разработал, так называемый простой контактный формуляр ONW. Если вы хотите, чтобы хорошая форма контакта была очень гибкой, перейдите в контактную форму 7. Если вы хотите, чтобы один из них работал из коробки, используйте форму ONW Simple Contact Form. :) –

+0

Удалите логику, в которой вы проверяете, если переменные $ _REQUEST или $ _POST установлены/пусты. Попытка var_dump() на $ _REQUESST $ _POST, и если вы видите свои данные, чем построите их там. wp_mail() должен работать нормально, поскольку он основан на mail() – hsatterwhite

0

Две вещи: использовать текущую форму, вы должны 1) проверить с вашим хозяином, чтобы увидеть, если вам нужно использовать SMTP и аутентификации, а не использование PHP почты, и 2), дезинфицировать ввод: PHP Secure E-mail.

Если вы хотите использовать плагин WP для почты вместо этого, который имеет много преимуществ перед построением собственной формы, вам также может понадобиться использовать WP Mail SMTP « WordPress Plugins для использования smtp, а не для php-почты, поскольку ваш хост, вероятно, ограничивает использование php-почты.

+0

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

-1

Попробуйте изменить

<input type="email" name="email" /> 

к чему-то вроде

<input type="email" name="my_theme_email" /> 

Сделайте то же самое со всеми полями это звучит как некоторые имена зарезервированы с WordPress при отправке данных формы. У меня та же проблема, и я это исправил. После этого используйте метод POST и, возможно, создайте do_action(), чтобы добавить проверку поля. и используйте wp_mail, чтобы отправить электронное письмо, а также $_POST['']