通过RESTAPI和Axios调用从WordPress发送电子邮件
我正在使用RESTAPI从WordPress发送电子邮件 基于My通过RESTAPI和Axios调用从WordPress发送电子邮件,wordpress,vue.js,axios,wordpress-rest-api,Wordpress,Vue.js,Axios,Wordpress Rest Api,我正在使用RESTAPI从WordPress发送电子邮件 基于MyVue的前端使用Axiosput()调用将表单数据发布到WordPress: sendEmail () { const formData = new FormData() formData.append('contact_name', this.contactName) formData.append('contact_email', this.contactEmail) formData.append('cont
Vue
的前端使用Axiosput()
调用将表单数据发布到WordPress:
sendEmail () {
const formData = new FormData()
formData.append('contact_name', this.contactName)
formData.append('contact_email', this.contactEmail)
formData.append('contact_message', this.contactMessage)
this.$axios.$put(`${this.baseUrl}/wp-json/contact/v1/send`, formData)
.then((res) => {
this.success = true
})
.catch((err) => {
this.$toast.error(err.response)
})
}
我认为上面的代码是正确的,问题在于WordPress方面:
Functions.php:
function sendContactMail(WP_REST_Request $request) {
$response = array(
'status' => 304,
'message' => 'There was an error sending the form.'
);
$parameters = $request->get_json_params();
if (count($_POST) > 0) {
$parameters = $_POST;
}
$siteName = wp_strip_all_tags(trim(get_option('blogname')));
$contactName = wp_strip_all_tags(trim($parameters['contact_name']));
$contactEmail = wp_strip_all_tags(trim($parameters['contact_email']));
$contactMessage = wp_strip_all_tags(trim($parameters['contact_message']));
if (!empty($contactName) && !empty($contactEmail) && !empty($contactMessage)) {
$subject = "(New message sent from site $siteName) $contactName <$contactEmail>";
$body = "<h3>$subject</h3><br/>";
$body .= "<p><b>Name:</b> $contactName</p>";
$body .= "<p><b>Email:</b> $contactEmail</p>";
$body .= "<p><b>Message:</b> $contactMessage</p>";
if (send_email($contactEmail, $contactName, $body)) {
$response['status'] = 200;
$response['message'] = 'Form sent successfully.';
}
}
return json_decode(json_encode($response));
exit();
}
add_action('rest_api_init', function () {
register_rest_route( 'contact/v1', '/send', array(
'methods' => 'POST',
'callback' => 'sendContactMail'
));
});
你能用这些函数建立你自己的php站点并调试它吗?嘿,你做到了吗?你做到了吗?我认为这可能是由axios发送PUT请求而不是POST(您在PHP中声明)引起的me@gmail.com一封真正的电子邮件?还要注意的是,Gmail有一个习惯,就是把你发给你的邮件变成垃圾邮件。你能用这些函数建立自己的php站点并调试它吗?嘿,你成功了吗?你成功了吗?我认为这可能是由axios发送PUT请求而不是POST(您在PHP中声明)引起的me@gmail.com一封真正的电子邮件?还要注意的是,Gmail有一个习惯,就是把你发给你的邮件变成垃圾邮件。
function send_email($form_email, $form_name, $form_message) {
$email_subject = 'Message from '. get_bloginfo('name') . ' - ' . $form_email;
$headers = "From: '" . $form_name . "' <" . $form_email . "> \r\n";
$headers .= "Reply-To: ". strip_tags($form_email) . "\r\n";
$headers .= "Content-Type:text/html;charset=utf-8";
$email_message = '<html><body>';
$email_message .= "<table>";
$email_message .= "<tr><td>NAME: </td><td>" . $form_name . "</td></tr>";
$email_message .= "<tr><td>MESSAGE: </td><td>" . $form_message . "</td></tr>";
$email_message .= "</table>";
$email_message .= "</body></html>";
$email_message = nl2br($email_message);
wp_mail('me@gmail.com', $email_subject, $email_message, $headers);
}