1.1
This commit is contained in:
commit
4fef1d925a
43
CHANGELOG.md
Normal file
43
CHANGELOG.md
Normal file
@ -0,0 +1,43 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to Send WP Mail plugin.
|
||||
|
||||
## 1.1
|
||||
|
||||
### Fork
|
||||
- Fork wp.org repository plugin [send-admin-from-email](https://plugins.svn.wordpress.org/send-email-from-admin/).
|
||||
- Rebrand plugin "Send WP Mail".
|
||||
- Rename main plugin file `send-wp-mail.php`.
|
||||
|
||||
### Fixed
|
||||
- Disable email spoofing in original plugin.
|
||||
- Use WordPress core `wp_from_mail` and `wp_from_mail_name` hooks to change from email details.
|
||||
- From field is for display purposes only.
|
||||
- Do not send from details in headers.
|
||||
- Do not use admin user's email.
|
||||
|
||||
## [1.0](https://plugins.svn.wordpress.org/send-email-from-admin/tags/1.0/)
|
||||
- Fix typos.
|
||||
|
||||
## [0.9.3](https://plugins.svn.wordpress.org/send-email-from-admin/tags/0.9.3/)
|
||||
- Add links.
|
||||
- Minor css changes.
|
||||
|
||||
## [0.9.2](https://plugins.svn.wordpress.org/send-email-from-admin/tags/0.9.2/)
|
||||
- Minor code cleanup
|
||||
- Add HTML5 'required' attribute to form fields.
|
||||
- Only load js and css on admin page.
|
||||
|
||||
## [0.9.1](https://plugins.svn.wordpress.org/send-email-from-admin/tags/0.9.1/)
|
||||
- Cleanup css and html.
|
||||
- Add mail dashicon to title.
|
||||
- Uploaded file (attachment) is now deleted from server after email is sent.
|
||||
|
||||
## [0.9](https://plugins.svn.wordpress.org/send-email-from-admin/tags/0.9/)
|
||||
### Initial release
|
||||
- Send email from admin page.
|
||||
- Send email to multiple recipients.
|
||||
- Send individual emails to multiple recipients.
|
||||
- Add images from the WordPress Media Library.
|
||||
- Upload and attach one attachment to the email message.
|
||||
- Select recipients from registered users' email addresses.
|
||||
@ -1,10 +1,10 @@
|
||||
#sefa-wrapper h1 {
|
||||
#swpm-wrapper h1 {
|
||||
font-size: 2.8em;
|
||||
font-weight: 200;
|
||||
margin-bottom: 26px;
|
||||
margin-left: -4px;
|
||||
}
|
||||
#sefa-wrapper h1:before {
|
||||
#swpm-wrapper h1:before {
|
||||
font-family: "dashicons";
|
||||
content: "\f465";
|
||||
top: 8px;
|
||||
@ -12,78 +12,78 @@
|
||||
margin-right: 10px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
#sefa-wrapper div.error ul li {
|
||||
#swpm-wrapper div.error ul li {
|
||||
list-style: initial;
|
||||
margin-left: 20px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
#sefa-wrapper div.updated {
|
||||
#swpm-wrapper div.updated {
|
||||
padding: 10px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
#sefa-form .form-table {
|
||||
#swpm-form .form-table {
|
||||
margin-top: 0;
|
||||
}
|
||||
#sefa-form .form-table tr:first-child th {
|
||||
#swpm-form .form-table tr:first-child th {
|
||||
padding-top: 5px;
|
||||
}
|
||||
#sefa-form .form-table tr:first-child td {
|
||||
#swpm-form .form-table tr:first-child td {
|
||||
padding-top: 0;
|
||||
}
|
||||
#sefa-form .form-table th {
|
||||
#swpm-form .form-table th {
|
||||
width: auto;
|
||||
min-width: 100px;
|
||||
}
|
||||
#sefa-form .form-table td {
|
||||
#swpm-form .form-table td {
|
||||
vertical-align: text-top;
|
||||
}
|
||||
#sefa-form .form-table tr:last-child td {
|
||||
#swpm-form .form-table tr:last-child td {
|
||||
padding: 0 10px;
|
||||
}
|
||||
#sefa-form input[type=text],
|
||||
#sefa-form input[type=email],
|
||||
#sefa-form textarea,
|
||||
#sefa-form .wp-editor-wrap {
|
||||
#swpm-form input[type=text],
|
||||
#swpm-form input[type=email],
|
||||
#swpm-form textarea,
|
||||
#swpm-form .wp-editor-wrap {
|
||||
width: 100%;
|
||||
padding: 6px 10px
|
||||
}
|
||||
#sefa-form .sefa-radio-wrap {
|
||||
display: inline;
|
||||
#swpm-form .swpm-radio-wrap {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
#sefa-form .wp-editor-wrap {
|
||||
#swpm-form .wp-editor-wrap {
|
||||
padding-left: 0;
|
||||
}
|
||||
#sefa-form #sefa-user-list {
|
||||
#swpm-form #swpm-user-list {
|
||||
margin-top: 7px;
|
||||
}
|
||||
#sefa-form .note {
|
||||
#swpm-form .note {
|
||||
font-size: 12px;
|
||||
color: #888;
|
||||
padding: 5px 0 0 1px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1300px) {
|
||||
#sefa-wrapper {
|
||||
#swpm-wrapper {
|
||||
width: 100%;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 900px) {
|
||||
#sefa-form .sefa-radio-wrap {
|
||||
#swpm-form .swpm-radio-wrap {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 850px) {
|
||||
#sefa-wrapper .postbox {
|
||||
#swpm-wrapper .postbox {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 500px) {
|
||||
#sefa-wrapper h1 {
|
||||
#swpm-wrapper h1 {
|
||||
font-size: 2em;
|
||||
margin-left: 0;
|
||||
}
|
||||
#sefa-wrapper h1:before {
|
||||
#swpm-wrapper h1:before {
|
||||
top: 6px;
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
jQuery( document ).ready( function( $ ) {
|
||||
$("#sefa-user-list").change( function() {
|
||||
$recipients = $("#sefa-recipient-emails");
|
||||
jQuery( function( $ ) {
|
||||
$("#swpm-user-list").on( 'change', function() {
|
||||
$recipients = $("#swpm-recipient-emails");
|
||||
if ( $recipients.val() == '' ) {
|
||||
$recipients.val( $(this).find("option:selected").attr("value") );
|
||||
} else if ( $(this).val() != '' ) {
|
||||
Binary file not shown.
@ -1,74 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Simple Email From Admin\n"
|
||||
"POT-Creation-Date: 2015-10-28 13:05-0330\n"
|
||||
"PO-Revision-Date: 2015-10-28 13:05-0330\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.5.7\n"
|
||||
"X-Poedit-KeywordsList: __;_e;_;gettext;gettext_noop\n"
|
||||
"X-Poedit-Basepath: ../\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: simple-email-from-admin.php:73
|
||||
msgid "Please enter an email recipient in the To: field."
|
||||
msgstr "S'il vous plaît entrer une adresse e-mail dans le champ A:."
|
||||
|
||||
#: simple-email-from-admin.php:87
|
||||
msgid "Please enter a Subject."
|
||||
msgstr "S'il vous plaît entrer un sujet."
|
||||
|
||||
#: simple-email-from-admin.php:88
|
||||
msgid "Please enter a Message."
|
||||
msgstr "S'il vous plaît entrer un message."
|
||||
|
||||
#: simple-email-from-admin.php:98
|
||||
msgid "Your email has been successfully sent!"
|
||||
msgstr "Votre e-mail a été envoyé avec succès!"
|
||||
|
||||
#: simple-email-from-admin.php:100
|
||||
msgid "There was an error sending the email."
|
||||
msgstr "Il y avait une erreur d'envoi du courriel."
|
||||
|
||||
#: simple-email-from-admin.php:105
|
||||
msgid "Your email has been successfully sent to "
|
||||
msgstr "Votre courriel a été envoyé avec succès à "
|
||||
|
||||
#: simple-email-from-admin.php:107
|
||||
msgid "There was an error sending the email to "
|
||||
msgstr "Il y avait une erreur d'envoi de l'e-mail "
|
||||
|
||||
#: simple-email-from-admin.php:115
|
||||
msgid "Send Email From Admin"
|
||||
msgstr ""
|
||||
|
||||
#: simple-email-from-admin.php:138
|
||||
msgid "These can be changed in Settings->General."
|
||||
msgstr "Ceux-ci peuvent être modifiés en Settings->General."
|
||||
|
||||
#: simple-email-from-admin.php:142
|
||||
msgid ""
|
||||
"To send to multiple recipeints, enter each email address seperated by a "
|
||||
"comma or choose from the user list below."
|
||||
msgstr ""
|
||||
"Pour envoyer à plusieurs destinataires, entrez chaque adresse mail séparée "
|
||||
"par une virgule ou choisir parmi la liste des utilisateurs ci-dessous."
|
||||
|
||||
#: simple-email-from-admin.php:144
|
||||
msgid "user list"
|
||||
msgstr "la liste des utilisateurs"
|
||||
|
||||
#: simple-email-from-admin.php:163
|
||||
msgid "Send each recipient an individual email"
|
||||
msgstr "Envoyer un e-mail chaque destinataire individuel"
|
||||
|
||||
#: simple-email-from-admin.php:166
|
||||
msgid "Send a group email to all recipients"
|
||||
msgstr "Envoyer un e-mail de groupe à tous les destinataires"
|
||||
|
||||
#: simple-email-from-admin.php:188
|
||||
msgid "Send Message"
|
||||
msgstr "Envoyer le message"
|
||||
@ -1,72 +0,0 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Simple Email From Admin\n"
|
||||
"POT-Creation-Date: 2015-10-28 13:01-0330\n"
|
||||
"PO-Revision-Date: 2015-10-28 13:01-0330\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.5.7\n"
|
||||
"X-Poedit-KeywordsList: __;_e;_;gettext;gettext_noop\n"
|
||||
"X-Poedit-Basepath: ../\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: simple-email-from-admin.php:73
|
||||
msgid "Please enter an email recipient in the To: field."
|
||||
msgstr ""
|
||||
|
||||
#: simple-email-from-admin.php:87
|
||||
msgid "Please enter a Subject."
|
||||
msgstr ""
|
||||
|
||||
#: simple-email-from-admin.php:88
|
||||
msgid "Please enter a Message."
|
||||
msgstr ""
|
||||
|
||||
#: simple-email-from-admin.php:98
|
||||
msgid "Your email has been successfully sent!"
|
||||
msgstr ""
|
||||
|
||||
#: simple-email-from-admin.php:100
|
||||
msgid "There was an error sending the email."
|
||||
msgstr ""
|
||||
|
||||
#: simple-email-from-admin.php:105
|
||||
msgid "Your email has been successfully sent to "
|
||||
msgstr ""
|
||||
|
||||
#: simple-email-from-admin.php:107
|
||||
msgid "There was an error sending the email to "
|
||||
msgstr ""
|
||||
|
||||
#: simple-email-from-admin.php:115
|
||||
msgid "Send Email From Admin"
|
||||
msgstr ""
|
||||
|
||||
#: simple-email-from-admin.php:138
|
||||
msgid "These can be changed in Settings->General."
|
||||
msgstr ""
|
||||
|
||||
#: simple-email-from-admin.php:142
|
||||
msgid ""
|
||||
"To send to multiple recipeints, enter each email address seperated by a "
|
||||
"comma or choose from the user list below."
|
||||
msgstr ""
|
||||
|
||||
#: simple-email-from-admin.php:144
|
||||
msgid "user list"
|
||||
msgstr ""
|
||||
|
||||
#: simple-email-from-admin.php:163
|
||||
msgid "Send each recipient an individual email"
|
||||
msgstr ""
|
||||
|
||||
#: simple-email-from-admin.php:166
|
||||
msgid "Send a group email to all recipients"
|
||||
msgstr ""
|
||||
|
||||
#: simple-email-from-admin.php:188
|
||||
msgid "Send Message"
|
||||
msgstr ""
|
||||
66
readme.txt
66
readme.txt
@ -1,66 +0,0 @@
|
||||
=== Send Email From Admin ===
|
||||
Contributors: kojak711
|
||||
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=8HHLL6WRX9Z68
|
||||
Tags: email, send email, admin email, custom email, email tools, email attachment
|
||||
Requires at least: 4.0
|
||||
Tested up to: 6.2
|
||||
Stable tag: 1.0
|
||||
License: GPLv2 or later
|
||||
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
||||
|
||||
Easily send a simple custom email with an attachment from the WordPress administration screen.
|
||||
|
||||
== Description ==
|
||||
|
||||
Send Email From Admin gives you the ability to easily send a custom HTML email from the WordPress administration screen. You can send to existing users or add your own recipients. You can send to multiple recipients and choose to send group emails or individual emails. Emails can also have an attachment. A new menu item called 'Send Email' is added under the Tools menu. This plugin is also translatable.
|
||||
|
||||
NOTE: This is not intended to be a mass/bulk mailing plugin. This is a very lean plugin that is best suited to send an email to one or up to a handful of recipients.
|
||||
|
||||
== Installation ==
|
||||
|
||||
1. Upload `send-email-from-admin` folder to the `/wp-content/plugins/` directory
|
||||
2. Activate the plugin through the 'Plugins' menu in WordPress
|
||||
|
||||
== Frequently Asked Questions ==
|
||||
|
||||
= Can I change the From name and From email address? =
|
||||
|
||||
Yes. The plugin uses the values that you entered for Site Title and E-Mail Address in Settings->General.
|
||||
|
||||
= Can I send to multiple recipients? =
|
||||
|
||||
Yes. You have the option to send to multiple recipents and you can choose to send the email as an individual email to each recipient (each recipient will only see their own email address in the To: field) or as a group email (each recipient will see the other recipients in the To: field).
|
||||
|
||||
= Can I add images to the email? =
|
||||
|
||||
Yes. You can add images from the WordPress Media Library.
|
||||
|
||||
= Can I add an attachment to the email? =
|
||||
|
||||
Yes. You can upload and attach one attachment to the email message.
|
||||
|
||||
== Screenshots ==
|
||||
|
||||
1. Send Email From Admin main screen.
|
||||
|
||||
== Changelog ==
|
||||
|
||||
= 1.0 =
|
||||
* fix typos
|
||||
|
||||
= 0.9.3 =
|
||||
* added links
|
||||
* minor css changes
|
||||
|
||||
= 0.9.2 =
|
||||
* minor code cleanup
|
||||
* added HTML5 'required' attribute to form fields
|
||||
* js and css now only load on SEFA admin page
|
||||
|
||||
= 0.9.1 =
|
||||
* css and html cleanup
|
||||
* added mail dashicon
|
||||
* uploaded file (attachment) is now deleted from server after email is sent
|
||||
|
||||
= 0.9 =
|
||||
* Initial release
|
||||
@ -1,268 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
Plugin Name: Send Email From Admin
|
||||
Plugin URI:
|
||||
Description: Easily send a simple custom email with an attachment from the WordPress administration screen. Tools -> Send Email.
|
||||
Version: 1.0
|
||||
Author: kojak711
|
||||
Domain Path: /languages
|
||||
Text Domain: sefa
|
||||
|
||||
Send Email From Admin is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Send Email From Admin is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Send Email From Admin. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
# Exit if accessed directly
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
define( 'SEFA_PLUGIN_DIR_URL', plugin_dir_url( __FILE__ ) );
|
||||
define( 'SEFA_PLUGIN_VER', '0.9.3' );
|
||||
|
||||
/**
|
||||
* Add our sub menu in the Tools menu
|
||||
*
|
||||
* @since 0.9.2
|
||||
*/
|
||||
function sefa_plugin_add_admin_page() {
|
||||
// create sefa submenu page under the Tools menu
|
||||
$sefa_page = add_submenu_page( 'tools.php', 'Send Email From Admin', 'Send Email', 'manage_options', 'sefa_email', 'sefa_plugin_main' );
|
||||
// load js and css on sefa page only
|
||||
add_action( 'load-' . $sefa_page, 'sefa_plugin_scripts' );
|
||||
}
|
||||
add_action( 'admin_menu', 'sefa_plugin_add_admin_page' );
|
||||
|
||||
/**
|
||||
* Load our css and js.
|
||||
*
|
||||
* @since 0.9.2
|
||||
*/
|
||||
function sefa_plugin_scripts() {
|
||||
wp_enqueue_style( 'sefa_admin_css', SEFA_PLUGIN_DIR_URL . 'css/sefa.css', '', SEFA_PLUGIN_VER );
|
||||
wp_enqueue_script( 'sefa_admin_js', SEFA_PLUGIN_DIR_URL . 'js/sefa.js', array('jquery'), SEFA_PLUGIN_VER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register our text domain.
|
||||
*
|
||||
* @since 0.9
|
||||
*/
|
||||
function sefa_plugin_load_textdomain() {
|
||||
load_plugin_textdomain( 'sefa', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' );
|
||||
}
|
||||
add_action('plugins_loaded', 'sefa_plugin_load_textdomain');
|
||||
|
||||
/**
|
||||
* Our main function to display and process our form
|
||||
*
|
||||
* @since 0.9
|
||||
*/
|
||||
function sefa_plugin_main() {
|
||||
// get site info to construct 'FROM' for email
|
||||
$from_name = wp_specialchars_decode( get_option('blogname'), ENT_QUOTES );
|
||||
$from_email = get_bloginfo('admin_email');
|
||||
|
||||
// initialize
|
||||
$send_mail_message = false;
|
||||
|
||||
if ( !empty( $_POST ) && check_admin_referer( 'sefa_send_email', 'sefa-form-nonce' ) ) {
|
||||
// handle attachment
|
||||
$attachment_path = '';
|
||||
if ( $_FILES ) {
|
||||
if ( !function_exists( 'wp_handle_upload' ) ) {
|
||||
require_once( ABSPATH . 'wp-admin/includes/file.php' );
|
||||
}
|
||||
$uploaded_file = $_FILES['attachment'];
|
||||
$upload_overrides = array( 'test_form' => false );
|
||||
$attachment = wp_handle_upload( $uploaded_file, $upload_overrides );
|
||||
if ( $attachment && !isset( $attachment['error'] ) ) {
|
||||
// file was successfully uploaded
|
||||
$attachment_path = $attachment['file'];
|
||||
} else {
|
||||
// echo $attachment['error'];
|
||||
}
|
||||
}
|
||||
|
||||
// get the posted form values
|
||||
$sefa_recipient_emails = isset( $_POST['sefa_recipient_emails'] ) ? trim($_POST['sefa_recipient_emails']) : '';
|
||||
$sefa_subject = isset( $_POST['sefa_subject'] ) ? stripslashes(trim($_POST['sefa_subject'])) : '';
|
||||
$sefa_body = isset( $_POST['sefa_body'] ) ? stripslashes(nl2br($_POST['sefa_body'])) : '';
|
||||
$sefa_group_email = isset( $_POST['sefa_group_email'] ) ? trim($_POST['sefa_group_email']) : 'no';
|
||||
$recipients = explode( ',',$sefa_recipient_emails );
|
||||
|
||||
// initialize some vars
|
||||
$errors = array();
|
||||
$valid_email = true;
|
||||
|
||||
// simple form validation
|
||||
if ( empty( $sefa_recipient_emails ) ) {
|
||||
$errors[] = __( "Please enter an email recipient in the To: field.", 'sefa' );
|
||||
} else {
|
||||
// Loop through each email and validate it
|
||||
foreach( $recipients as $recipient ) {
|
||||
if ( !filter_var( trim($recipient), FILTER_VALIDATE_EMAIL ) ) {
|
||||
$valid_email = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// create appropriate error msg
|
||||
if ( !$valid_email ) {
|
||||
$errors[] = _n( "The To: email address appears to be invalid.", "One of the To: email addresses appears to be invalid.", count($recipients), 'sefa' );
|
||||
}
|
||||
}
|
||||
if ( empty($sefa_subject) ) $errors[] = __( "Please enter a Subject.", 'sefa' );
|
||||
if ( empty($sefa_body) ) $errors[] = __( "Please enter a Message.", 'sefa' );
|
||||
|
||||
// send the email if no errors were found
|
||||
if ( empty($errors) ) {
|
||||
$headers[] = "Content-Type: text/html; charset=\"" . get_option('blog_charset') . "\"\n";
|
||||
$headers[] = 'From: ' . $from_name . ' <' . $from_email . ">\r\n";
|
||||
$attachments = $attachment_path;
|
||||
|
||||
if ( $sefa_group_email === 'yes' ) {
|
||||
if ( wp_mail( $sefa_recipient_emails, $sefa_subject, $sefa_body, $headers, $attachments ) ) {
|
||||
$send_mail_message = '<div class="updated">' . __( 'Your email has been successfully sent!', 'sefa' ) . '</div>';
|
||||
} else {
|
||||
$send_mail_message = '<div class="error">' . __( 'There was an error sending the email.', 'sefa' ) . '</div>';
|
||||
}
|
||||
} else {
|
||||
foreach( $recipients as $recipient ) {
|
||||
if ( wp_mail( $recipient, $sefa_subject, $sefa_body, $headers, $attachments ) ) {
|
||||
$send_mail_message .= '<div class="updated">' . __( 'Your email has been successfully sent to ', 'sefa' ) . esc_html($recipient) . '!</div>';
|
||||
} else {
|
||||
$send_mail_message .= '<div class="error">' . __( 'There was an error sending the email to ', 'sefa' ) . esc_html($recipient) . '</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// delete the uploaded file (attachment) from the server
|
||||
if ( $attachment_path ) {
|
||||
unlink($attachment_path);
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<div class="wrap" id="sefa-wrapper">
|
||||
<h1><?php _e( 'Send Email From Admin', 'sefa' ); ?></h1>
|
||||
<?php
|
||||
if ( !empty($errors) ) {
|
||||
echo '<div class="error"><ul>';
|
||||
foreach ($errors as $error) {
|
||||
echo "<li>$error</li>";
|
||||
}
|
||||
echo "</ul></div>\n";
|
||||
}
|
||||
if ( $send_mail_message ) {
|
||||
echo $send_mail_message;
|
||||
}
|
||||
?>
|
||||
<div id="poststuff">
|
||||
<div id="post-body" class="metabox-holder columns-2">
|
||||
<div id="post-body-content">
|
||||
<form method="POST" id="sefa-form" enctype="multipart/form-data">
|
||||
<?php wp_nonce_field( 'sefa_send_email', 'sefa-form-nonce' ); ?>
|
||||
<table cellpadding="0" border="0" class="form-table">
|
||||
<tr>
|
||||
<th scope=”row”>From:</th>
|
||||
<td><input type="text" disabled value="<?php echo "$from_name <$from_email>"; ?>" required><div class="note"><?php _e( 'These can be changed in Settings->General.', 'sefa' ); ?></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope=”row”><label for="sefa-recipient-emails">To:</label></th>
|
||||
<td><input type="email" multiple id="sefa-recipient-emails" name="sefa_recipient_emails" value="<?php echo esc_attr( sefa_plugin_issetor($sefa_recipient_emails) ); ?>" required><div class="note"><?php _e( 'To send to multiple recipients, enter each email address separated by a comma or choose from the user list below.', 'sefa' ); ?></div>
|
||||
<select id="sefa-user-list">
|
||||
<option value="">-- <?php _e( 'user list', 'sefa' ); ?> --</option>
|
||||
<?php
|
||||
$users = get_users( 'orderby=user_email' );
|
||||
foreach ( $users as $user ) {
|
||||
if ( $user->first_name && $user->last_name ) {
|
||||
$user_fullname = ' (' . $user->first_name . ' ' . $user->last_name . ')';
|
||||
} else {
|
||||
$user_fullname = '';
|
||||
}
|
||||
echo '<option value="' . esc_html( $user->user_email ) . '">' . esc_html( $user->user_email ) . esc_html( $user_fullname) . '</option>';
|
||||
};
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope=”row”></th>
|
||||
<td>
|
||||
<div class="sefa-radio-wrap">
|
||||
<input type="radio" class="radio" name="sefa_group_email" value="no" id="no"<?php if ( isset($sefa_group_email) && $sefa_group_email === 'no' ) echo ' checked'; ?> required>
|
||||
<label for="no"><?php _e( 'Send each recipient an individual email', 'sefa' ); ?></label>
|
||||
</div>
|
||||
|
||||
<div class="sefa-radio-wrap">
|
||||
<input type="radio" class="radio" name="sefa_group_email" value="yes" id="yes"<?php if ( isset($sefa_group_email) && $sefa_group_email === 'yes' ) echo ' checked'; ?> required>
|
||||
<label for="yes"><?php _e( 'Send a group email to all recipients', 'sefa' ); ?></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope=”row”><label for="sefa-subject">Subject:</label></th>
|
||||
<td><input type="text" id="sefa-subject" name="sefa_subject" value="<?php echo esc_attr( sefa_plugin_issetor($sefa_subject) );?>" required></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope=”row”><label for="sefa_body">Message:</label></th>
|
||||
<td align="left">
|
||||
<?php
|
||||
$settings = array( "editor_height" => "200" );
|
||||
wp_editor( sefa_plugin_issetor($sefa_body), "sefa_body", $settings );
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope=”row”><label for="attachment">Attachment:</label></th>
|
||||
<td><input type="file" id="attachment" name="attachment"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" align="right">
|
||||
<input type="submit" value="<?php _e( 'Send Email', 'sefa' ); ?>" name="submit" class="button button-primary">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<div id="postbox-container-1" class="postbox-container">
|
||||
<div class="postbox">
|
||||
<h3><span>Like this plugin?</span></h3>
|
||||
<div class="inside">
|
||||
<ul>
|
||||
<li><a href="https://wordpress.org/support/view/plugin-reviews/send-email-from-admin?filter=5" target="_blank">Rate it on WordPress.org</a></li>
|
||||
<li><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=8HHLL6WRX9Z68" target="_blank">Donate to the developer</a></li>
|
||||
</ul>
|
||||
</div> <!-- .inside -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function for form values
|
||||
*
|
||||
* @since 0.9
|
||||
*
|
||||
* @param string $var Var name to test isset
|
||||
*
|
||||
* @return string $var value if isset or ''
|
||||
*/
|
||||
function sefa_plugin_issetor(&$var) {
|
||||
return isset($var) ? $var : '';
|
||||
}
|
||||
252
send-wp-mail.php
Normal file
252
send-wp-mail.php
Normal file
@ -0,0 +1,252 @@
|
||||
<?php
|
||||
/**
|
||||
* Plugin Name: Send WP Mail
|
||||
* Update URI: false
|
||||
* Description: Send email from WordPress. Sends email using WordPress core wp_mail function - if enabled.
|
||||
* Version: 1.1
|
||||
* Author: abuyoyo
|
||||
* Domain Path: /languages
|
||||
* Text Domain: swpm
|
||||
*/
|
||||
|
||||
|
||||
# Exit if accessed directly
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
define( 'SWPM_PLUGIN_DIR_URL', plugin_dir_url( __FILE__ ) );
|
||||
define( 'SWPM_PLUGIN_VER', '0.9.3' );
|
||||
|
||||
/**
|
||||
* Add our sub menu in the Tools menu
|
||||
*
|
||||
* @since 0.9.2
|
||||
*/
|
||||
function swpm_plugin_add_admin_page() {
|
||||
// create swpm submenu page under the Tools menu
|
||||
$swpm_page = add_submenu_page( 'tools.php', 'Send WP Mail', 'Send Email', 'manage_options', 'send-wp-mail', 'swpm_plugin_main' );
|
||||
// load js and css on swpm page only
|
||||
add_action( 'load-' . $swpm_page, 'swpm_plugin_scripts' );
|
||||
}
|
||||
add_action( 'admin_menu', 'swpm_plugin_add_admin_page' );
|
||||
|
||||
/**
|
||||
* Load our css and js.
|
||||
*
|
||||
* @since 0.9.2
|
||||
*/
|
||||
function swpm_plugin_scripts() {
|
||||
wp_enqueue_style( 'swpm_admin_css', SWPM_PLUGIN_DIR_URL . 'css/send-wp-mail.css', '', SWPM_PLUGIN_VER );
|
||||
wp_enqueue_script( 'swpm_admin_js', SWPM_PLUGIN_DIR_URL . 'js/send-wp-mail.js', array('jquery'), SWPM_PLUGIN_VER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register our text domain.
|
||||
*
|
||||
* @since 0.9
|
||||
*/
|
||||
function swpm_plugin_load_textdomain() {
|
||||
load_plugin_textdomain( 'swpm', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' );
|
||||
}
|
||||
add_action('plugins_loaded', 'swpm_plugin_load_textdomain');
|
||||
|
||||
/**
|
||||
* Our main function to display and process our form
|
||||
*
|
||||
* @since 0.9
|
||||
* @since 1.1 No more email spoofing - use wp_mail_from hook/default
|
||||
*/
|
||||
function swpm_plugin_main() {
|
||||
// get email and name from WordPress hooks if available.
|
||||
$from_name = apply_filters( 'wp_mail_from_name', '' );
|
||||
$from_email = apply_filters( 'wp_mail_from', '' );
|
||||
|
||||
// initialize
|
||||
$send_mail_message = false;
|
||||
|
||||
if ( !empty( $_POST ) && check_admin_referer( 'send-wp-mail', 'send-wp-mail' ) ) {
|
||||
// handle attachment
|
||||
$attachment_path = '';
|
||||
if ( $_FILES ) {
|
||||
if ( !function_exists( 'wp_handle_upload' ) ) {
|
||||
require_once( ABSPATH . 'wp-admin/includes/file.php' );
|
||||
}
|
||||
$uploaded_file = $_FILES['attachment'];
|
||||
$upload_overrides = array( 'test_form' => false );
|
||||
$attachment = wp_handle_upload( $uploaded_file, $upload_overrides );
|
||||
if ( $attachment && !isset( $attachment['error'] ) ) {
|
||||
// file was successfully uploaded
|
||||
$attachment_path = $attachment['file'];
|
||||
} else {
|
||||
// echo $attachment['error'];
|
||||
}
|
||||
}
|
||||
|
||||
// get the posted form values
|
||||
$email_to = isset( $_POST['email_to'] ) ? trim($_POST['email_to']) : '';
|
||||
$email_subject = isset( $_POST['email_subject'] ) ? stripslashes(trim($_POST['email_subject'])) : '';
|
||||
$email_body = isset( $_POST['email_body'] ) ? stripslashes(nl2br($_POST['email_body'])) : '';
|
||||
$group_email = isset( $_POST['group_email'] ) ? trim($_POST['group_email']) : 'no';
|
||||
$recipients = explode( ',',$email_to );
|
||||
|
||||
// initialize some vars
|
||||
$errors = array();
|
||||
$valid_email = true;
|
||||
|
||||
// simple form validation
|
||||
if ( empty( $email_to ) ) {
|
||||
$errors[] = __( "Please enter an email recipient in the To: field.", 'swpm' );
|
||||
} else {
|
||||
// Loop through each email and validate it
|
||||
foreach( $recipients as $recipient ) {
|
||||
if ( !filter_var( trim($recipient), FILTER_VALIDATE_EMAIL ) ) {
|
||||
$valid_email = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// create appropriate error msg
|
||||
if ( !$valid_email ) {
|
||||
$errors[] = _n( "The To: email address appears to be invalid.", "One of the To: email addresses appears to be invalid.", count($recipients), 'swpm' );
|
||||
}
|
||||
}
|
||||
if ( empty($email_subject) ) $errors[] = __( "Please enter a Subject.", 'swpm' );
|
||||
if ( empty($email_body) ) $errors[] = __( "Please enter a Message.", 'swpm' );
|
||||
|
||||
// send the email if no errors were found
|
||||
if ( empty($errors) ) {
|
||||
$headers[] = "Content-Type: text/html; charset=\"" . get_option('blog_charset') . "\"\n";
|
||||
// $headers[] = 'From: ' . $from_name . ' <' . $from_email . ">\r\n"; // We should let wp_mail handle the name and address. no spoofing.
|
||||
$attachments = $attachment_path;
|
||||
|
||||
if ( $group_email === 'yes' ) {
|
||||
if ( wp_mail( $email_to, $email_subject, $email_body, $headers, $attachments ) ) {
|
||||
$send_mail_message = '<div class="below-h2 updated">' . __( 'Your email has been successfully sent!', 'swpm' ) . '</div>';
|
||||
} else {
|
||||
$send_mail_message = '<div class="below-h2 error">' . __( 'There was an error sending the email.', 'swpm' ) . '</div>';
|
||||
}
|
||||
} else {
|
||||
foreach( $recipients as $recipient ) {
|
||||
if ( wp_mail( $recipient, $email_subject, $email_body, $headers, $attachments ) ) {
|
||||
$send_mail_message .= '<div class="below-h2 updated">' . __( 'Your email has been successfully sent to ', 'swpm' ) . esc_html($recipient) . '!</div>';
|
||||
} else {
|
||||
$send_mail_message .= '<div class="below-h2 error">' . __( 'There was an error sending the email to ', 'swpm' ) . esc_html($recipient) . '</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// delete the uploaded file (attachment) from the server
|
||||
if ( $attachment_path ) {
|
||||
unlink($attachment_path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// reconstruct wp_mail defaults.
|
||||
if ( empty( $from_email ) ) {
|
||||
$from_email = 'wordpress@';
|
||||
$domain = wp_parse_url( network_home_url(), PHP_URL_HOST );
|
||||
if ( null !== $domain ) {
|
||||
if ( str_starts_with( $domain, 'www.' ) ) {
|
||||
$domain = substr( $domain, 4 );
|
||||
}
|
||||
$from_email .= $domain;
|
||||
}
|
||||
}
|
||||
|
||||
if ( empty( $from_name ) ) {
|
||||
$from_name = 'WordPress';
|
||||
}
|
||||
|
||||
?>
|
||||
<div class="wrap" id="swpm-wrapper">
|
||||
<h1><?php _e( 'Send WP Mail', 'swpm' ); ?></h1>
|
||||
<div class="card"><?php _e( 'Send email using WordPress core <code>wp_mail()</code> directly from this website.', 'swpm' ); ?></div>
|
||||
<?php
|
||||
if ( !empty($errors) ) {
|
||||
echo '<div class="below-h2 error"><ul>';
|
||||
foreach ($errors as $error) {
|
||||
echo "<li>$error</li>";
|
||||
}
|
||||
echo "</ul></div>\n";
|
||||
}
|
||||
if ( $send_mail_message ) {
|
||||
echo $send_mail_message;
|
||||
}
|
||||
?>
|
||||
<div id="poststuff">
|
||||
<div id="post-body" class="metabox-holder columns-2">
|
||||
<div id="post-body-content">
|
||||
<form method="POST" id="swpm-form" enctype="multipart/form-data">
|
||||
<?php wp_nonce_field( 'send-wp-mail', 'send-wp-mail' ); ?>
|
||||
<table cellpadding="0" border="0" class="form-table">
|
||||
<tr>
|
||||
<th scope=”row”>From:</th>
|
||||
<td><input type="text" disabled value="<?php echo "$from_name <$from_email>"; ?>"><div class="note"><?php _e( 'These can be changed using <code>wp_mail_from</code> and <code>wp_mail_from_name</code> hooks.', 'swpm' ); ?></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope=”row”><label for="swpm-recipient-emails">To:</label></th>
|
||||
<td><input type="email" multiple id="swpm-recipient-emails" name="email_to" value="<?php echo esc_attr( $email_to ?? '' ); ?>" required><div class="note"><?php _e( 'To send to multiple recipients, enter each email address separated by a comma or choose from the user list below.', 'swpm' ); ?></div>
|
||||
<select id="swpm-user-list">
|
||||
<option value="">-- <?php _e( 'Select Email(s)', 'swpm' ); ?> --</option>
|
||||
<option value="<?php echo get_option('admin_email') ?>">Administration Email <<?php echo get_option('admin_email') ?>></option>
|
||||
<?php
|
||||
$users = get_users( 'orderby=user_email' );
|
||||
foreach ( $users as $user ) {
|
||||
if ( $user->first_name && $user->last_name ) {
|
||||
$user_fullname = ' (' . $user->first_name . ' ' . $user->last_name . ')';
|
||||
} else {
|
||||
$user_fullname = '';
|
||||
}
|
||||
echo '<option value="' . esc_html( $user->user_email ) . '">' . esc_html( $user->user_email ) . esc_html( $user_fullname) . '</option>';
|
||||
};
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope=”row”></th>
|
||||
<td>
|
||||
<div class="swpm-radio-wrap">
|
||||
<input type="radio" class="radio" name="group_email" value="yes" id="yes"<?php checked( ! isset($group_email) || $group_email === 'yes' ) ?> required>
|
||||
<label for="yes"><?php _e( 'Send a group email to all recipients', 'swpm' ); ?></label>
|
||||
</div>
|
||||
<div class="swpm-radio-wrap">
|
||||
<input type="radio" class="radio" name="group_email" value="no" id="no"<?php checked( isset($group_email) && $group_email === 'no' ) ?> required>
|
||||
<label for="no"><?php _e( 'Send each recipient an individual email', 'swpm' ); ?></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope=”row”><label for="swpm-subject">Subject:</label></th>
|
||||
<td><input type="text" id="swpm-subject" name="email_subject" value="<?php echo esc_attr( $email_subject ?? '' );?>" required></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope=”row”><label for="email_body">Message:</label></th>
|
||||
<td align="left">
|
||||
<?php
|
||||
$settings = array( "editor_height" => "200" );
|
||||
wp_editor( $email_body ?? '', "email_body", $settings );
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope=”row”><label for="attachment">Attachment:</label></th>
|
||||
<td><input type="file" id="attachment" name="attachment"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" align="right">
|
||||
<input type="submit" value="<?php _e( 'Send WP Mail', 'swpm' ); ?>" name="submit" class="button button-primary">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<!-- <div id="postbox-container-1" class="postbox-container">
|
||||
</div> -->
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user