diff --git a/wp-content/plugins/smtp-mailer/languages/smtp-mailer.mo b/wp-content/plugins/smtp-mailer/languages/smtp-mailer.mo new file mode 100644 index 00000000..8d576526 Binary files /dev/null and b/wp-content/plugins/smtp-mailer/languages/smtp-mailer.mo differ diff --git a/wp-content/plugins/smtp-mailer/languages/smtp-mailer.pot b/wp-content/plugins/smtp-mailer/languages/smtp-mailer.pot new file mode 100644 index 00000000..a67a4fd9 --- /dev/null +++ b/wp-content/plugins/smtp-mailer/languages/smtp-mailer.pot @@ -0,0 +1,176 @@ +msgid "" +msgstr "" +"Project-Id-Version: SMTP Mailer\n" +"POT-Creation-Date: 2015-12-20 14:09+1000\n" +"PO-Revision-Date: 2015-12-20 14:09+1000\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.5\n" +"X-Poedit-KeywordsList: _e;__\n" +"X-Poedit-Basepath: .\n" +"X-Poedit-SearchPath-0: .\n" + +#: main.php:66 +msgid "Settings" +msgstr "" + +#: main.php:72 +msgid "SMTP Mailer" +msgstr "" + +#: main.php:77 +msgid "General" +msgstr "" + +#: main.php:78 +msgid "Test Email" +msgstr "" + +#: main.php:79 +msgid "Server Info" +msgstr "" + +#: main.php:82 +#, php-format +msgid "" +"Please visit the SMTP Mailer " +"documentation page for usage instructions." +msgstr "" + +#: main.php:141 +msgid "To" +msgstr "" + +#: main.php:143 +msgid "Email address of the recipient" +msgstr "" + +#: main.php:147 +msgid "Subject" +msgstr "" + +#: main.php:149 +msgid "Subject of the email" +msgstr "" + +#: main.php:153 +msgid "Message" +msgstr "" + +#: main.php:155 +msgid "Email body" +msgstr "" + +#: main.php:162 +msgid "Send Email" +msgstr "" + +#: main.php:256 +msgid "Settings Saved!" +msgstr "" + +#: main.php:286 +msgid "SMTP Host" +msgstr "" + +#: main.php:288 +msgid "" +"The SMTP server which will be used to send email. For example: smtp.gmail.com" +msgstr "" + +#: main.php:292 +msgid "SMTP Authentication" +msgstr "" + +#: main.php:295 +msgid "True" +msgstr "" + +#: main.php:296 +msgid "False" +msgstr "" + +#: main.php:298 +msgid "" +"Whether to use SMTP Authentication when sending an email (recommended: True)." +msgstr "" + +#: main.php:303 +msgid "SMTP Username" +msgstr "" + +#: main.php:305 +msgid "Your SMTP Username." +msgstr "" + +#: main.php:309 +msgid "SMTP Password" +msgstr "" + +#: main.php:311 +msgid "Your SMTP Password." +msgstr "" + +#: main.php:315 +msgid "Type of Encryption" +msgstr "" + +#: main.php:318 +msgid "TLS" +msgstr "" + +#: main.php:319 +msgid "SSL" +msgstr "" + +#: main.php:320 +msgid "No Encryption" +msgstr "" + +#: main.php:322 +msgid "" +"The encryption which will be used when sending an email (recommended: TLS)." +msgstr "" + +#: main.php:327 +msgid "SMTP Port" +msgstr "" + +#: main.php:329 +msgid "" +"The port which will be used when sending an email (587/465/25). If you " +"choose TLS it should be set to 587. For SSL use port 465 instead." +msgstr "" + +#: main.php:333 +msgid "From Email Address" +msgstr "" + +#: main.php:335 +msgid "" +"The email address which will be used as the From Address if it is not " +"supplied to the mail function." +msgstr "" + +#: main.php:339 +msgid "From Name" +msgstr "" + +#: main.php:341 +msgid "" +"The name which will be used as the From Name if it is not supplied to the " +"mail function." +msgstr "" + +#: main.php:348 +msgid "Save Changes" +msgstr "" + +#: main.php:368 +msgid "" +"SMTP Mailer plugin cannot send email until you enter your credentials in the " +"settings." +msgstr "" diff --git a/wp-content/plugins/smtp-mailer/main.php b/wp-content/plugins/smtp-mailer/main.php new file mode 100644 index 00000000..770bdf36 --- /dev/null +++ b/wp-content/plugins/smtp-mailer/main.php @@ -0,0 +1,835 @@ +plugin_version); + define('SMTP_MAILER_SITE_URL', site_url()); + define('SMTP_MAILER_HOME_URL', home_url()); + define('SMTP_MAILER_URL', $this->plugin_url()); + define('SMTP_MAILER_PATH', $this->plugin_path()); + $this->plugin_includes(); + $this->loader_operations(); + } + + function plugin_includes() { + + } + + function loader_operations() { + if (is_admin()) { + add_filter('plugin_action_links', array($this, 'add_plugin_action_links'), 10, 2); + } + add_action('plugins_loaded', array($this, 'plugins_loaded_handler')); + add_action('admin_menu', array($this, 'options_menu')); + add_action('admin_notices', 'smtp_mailer_admin_notice'); + } + + function plugins_loaded_handler() + { + load_plugin_textdomain('smtp-mailer', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/'); + } + + function plugin_url() { + if ($this->plugin_url) + return $this->plugin_url; + return $this->plugin_url = plugins_url(basename(plugin_dir_path(__FILE__)), basename(__FILE__)); + } + + function plugin_path() { + if ($this->plugin_path) + return $this->plugin_path; + return $this->plugin_path = untrailingslashit(plugin_dir_path(__FILE__)); + } + + function add_plugin_action_links($links, $file) { + if ($file == plugin_basename(dirname(__FILE__) . '/main.php')) { + $links[] = ''.__('Settings', 'smtp-mailer').''; + } + return $links; + } + + function options_menu() { + add_options_page(__('SMTP Mailer', 'smtp-mailer'), __('SMTP Mailer', 'smtp-mailer'), 'manage_options', 'smtp-mailer-settings', array($this, 'options_page')); + } + + function options_page() { + $plugin_tabs = array( + 'smtp-mailer-settings' => __('General', 'smtp-mailer'), + 'smtp-mailer-settings&action=test-email' => __('Test Email', 'smtp-mailer'), + 'smtp-mailer-settings&action=server-info' => __('Server Info', 'smtp-mailer'), + ); + $url = "https://wphowto.net/smtp-mailer-plugin-for-wordpress-1482"; + $link_text = sprintf(wp_kses(__('Please visit the SMTP Mailer documentation page for usage instructions.', 'smtp-mailer'), array('a' => array('href' => array(), 'target' => array()))), esc_url($url)); + echo '

SMTP Mailer v' . SMTP_MAILER_VERSION . '

'; + echo '
'.$link_text.'
'; + if (isset($_GET['page'])) { + $current = $_GET['page']; + if (isset($_GET['action'])) { + $current .= "&action=" . $_GET['action']; + } + } + $content = ''; + $content .= ''; + echo $content; + + if(isset($_GET['action']) && $_GET['action'] == 'test-email'){ + $this->test_email_settings(); + } + else if(isset($_GET['action']) && $_GET['action'] == 'server-info'){ + $this->server_info_settings(); + } + else{ + $this->general_settings(); + } + echo '
'; + } + + function test_email_settings(){ + if(isset($_POST['smtp_mailer_send_test_email'])){ + $nonce = $_REQUEST['_wpnonce']; + if (!wp_verify_nonce($nonce, 'smtp_mailer_test_email')) { + wp_die(__('Error! Nonce Security Check Failed! please send the test email again.', 'smtp-mailer')); + } + $to = ''; + if(isset($_POST['smtp_mailer_to_email']) && !empty($_POST['smtp_mailer_to_email'])){ + $to = sanitize_text_field($_POST['smtp_mailer_to_email']); + } + $subject = ''; + if(isset($_POST['smtp_mailer_email_subject']) && !empty($_POST['smtp_mailer_email_subject'])){ + $subject = sanitize_text_field($_POST['smtp_mailer_email_subject']); + } + $message = ''; + if(isset($_POST['smtp_mailer_email_body']) && !empty($_POST['smtp_mailer_email_body'])){ + $message = sanitize_text_field($_POST['smtp_mailer_email_body']); + } + wp_mail($to, $subject, $message); + } + ?> +
"> + + + + + + + + + + + + + + + + + + + + + + + +
+

+

+

+ +

+
+ + + +

'; + echo __('Settings Saved!', 'smtp-mailer'); + echo '

'; + } + + $options = smtp_mailer_get_option(); + if(!is_array($options)){ + $options = smtp_mailer_get_empty_options_array(); + } + + // Avoid warning notice since this option was added later + if(!isset($options['disable_ssl_verification'])){ + $options['disable_ssl_verification'] = ''; + } + + ?> + +
"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ +

+
+

+

+ +

+
+

+

+

value="1"> +

+ +

+
+ + +
+

+
+ 0 ) { + $from_name = substr( $content, 0, $bracket_pos - 1 ); + $from_name = str_replace( '"', '', $from_name ); + $from_name = trim( $from_name ); + } + + $from_email = substr( $content, $bracket_pos + 1 ); + $from_email = str_replace( '>', '', $from_email ); + $from_email = trim( $from_email ); + + // Avoid setting an empty $from_email. + } elseif ( '' !== trim( $content ) ) { + $from_email = trim( $content ); + } + break; + case 'content-type': + if ( strpos( $content, ';' ) !== false ) { + list( $type, $charset_content ) = explode( ';', $content ); + $content_type = trim( $type ); + if ( false !== stripos( $charset_content, 'charset=' ) ) { + $charset = trim( str_replace( array( 'charset=', '"' ), '', $charset_content ) ); + } elseif ( false !== stripos( $charset_content, 'boundary=' ) ) { + $boundary = trim( str_replace( array( 'BOUNDARY=', 'boundary=', '"' ), '', $charset_content ) ); + $charset = ''; + } + + // Avoid setting an empty $content_type. + } elseif ( '' !== trim( $content ) ) { + $content_type = trim( $content ); + } + break; + case 'cc': + $cc = array_merge( (array) $cc, explode( ',', $content ) ); + break; + case 'bcc': + $bcc = array_merge( (array) $bcc, explode( ',', $content ) ); + break; + case 'reply-to': + $reply_to = array_merge( (array) $reply_to, explode( ',', $content ) ); + break; + default: + // Add it to our grand headers array. + $headers[ trim( $name ) ] = trim( $content ); + break; + } + } + } + } + + // Empty out the values that may be set. + $phpmailer->clearAllRecipients(); + $phpmailer->clearAttachments(); + $phpmailer->clearCustomHeaders(); + $phpmailer->clearReplyTos(); + + // Set "From" name and email. + + // If we don't have a name from the input headers. + if ( ! isset( $from_name ) ) { + $from_name = $options['from_name'];//'WordPress'; + } + + /* + * If we don't have an email from the input headers, default to wordpress@$sitename + * Some hosts will block outgoing mail from this address if it doesn't exist, + * but there's no easy alternative. Defaulting to admin_email might appear to be + * another option, but some hosts may refuse to relay mail from an unknown domain. + * See https://core.trac.wordpress.org/ticket/5007. + */ + if ( ! isset( $from_email ) ) { + // Get the site domain and get rid of www. + $sitename = wp_parse_url( network_home_url(), PHP_URL_HOST ); + if ( 'www.' === substr( $sitename, 0, 4 ) ) { + $sitename = substr( $sitename, 4 ); + } + + $from_email = $options['from_email'];//'wordpress@' . $sitename; + } + + /** + * Filters the email address to send from. + * + * @since 2.2.0 + * + * @param string $from_email Email address to send from. + */ + $from_email = apply_filters( 'wp_mail_from', $from_email ); + + /** + * Filters the name to associate with the "from" email address. + * + * @since 2.3.0 + * + * @param string $from_name Name associated with the "from" email address. + */ + $from_name = apply_filters( 'wp_mail_from_name', $from_name ); + + try { + $phpmailer->setFrom( $from_email, $from_name, false ); + } catch ( PHPMailer\PHPMailer\Exception $e ) { + $mail_error_data = compact( 'to', 'subject', 'message', 'headers', 'attachments' ); + $mail_error_data['phpmailer_exception_code'] = $e->getCode(); + + /** This filter is documented in wp-includes/pluggable.php */ + do_action( 'wp_mail_failed', new WP_Error( 'wp_mail_failed', $e->getMessage(), $mail_error_data ) ); + + return false; + } + + // Set mail's subject and body. + $phpmailer->Subject = $subject; + $phpmailer->Body = $message; + + // Set destination addresses, using appropriate methods for handling addresses. + $address_headers = compact( 'to', 'cc', 'bcc', 'reply_to' ); + + foreach ( $address_headers as $address_header => $addresses ) { + if ( empty( $addresses ) ) { + continue; + } + + foreach ( (array) $addresses as $address ) { + try { + // Break $recipient into name and address parts if in the format "Foo ". + $recipient_name = ''; + + if ( preg_match( '/(.*)<(.+)>/', $address, $matches ) ) { + if ( count( $matches ) == 3 ) { + $recipient_name = $matches[1]; + $address = $matches[2]; + } + } + + switch ( $address_header ) { + case 'to': + $phpmailer->addAddress( $address, $recipient_name ); + break; + case 'cc': + $phpmailer->addCc( $address, $recipient_name ); + break; + case 'bcc': + $phpmailer->addBcc( $address, $recipient_name ); + break; + case 'reply_to': + $phpmailer->addReplyTo( $address, $recipient_name ); + break; + } + } catch ( PHPMailer\PHPMailer\Exception $e ) { + continue; + } + } + } + + // Tell PHPMailer to use SMTP + $phpmailer->isSMTP(); //$phpmailer->IsMail(); + // Set the hostname of the mail server + $phpmailer->Host = $options['smtp_host']; + // Whether to use SMTP authentication + if(isset($options['smtp_auth']) && $options['smtp_auth'] == "true"){ + $phpmailer->SMTPAuth = true; + // SMTP username + $phpmailer->Username = $options['smtp_username']; + // SMTP password + $phpmailer->Password = base64_decode($options['smtp_password']); + } + // Whether to use encryption + $type_of_encryption = $options['type_of_encryption']; + if($type_of_encryption=="none"){ + $type_of_encryption = ''; + } + $phpmailer->SMTPSecure = $type_of_encryption; + // SMTP port + $phpmailer->Port = $options['smtp_port']; + + // Whether to enable TLS encryption automatically if a server supports it + $phpmailer->SMTPAutoTLS = false; + //enable debug when sending a test mail + if(isset($_POST['smtp_mailer_send_test_email'])){ + $phpmailer->SMTPDebug = 4; + // Ask for HTML-friendly debug output + $phpmailer->Debugoutput = 'html'; + } + + //disable ssl certificate verification if checked + if(isset($options['disable_ssl_verification']) && !empty($options['disable_ssl_verification'])){ + $phpmailer->SMTPOptions = array( + 'ssl' => array( + 'verify_peer' => false, + 'verify_peer_name' => false, + 'allow_self_signed' => true + ) + ); + } + + // Set Content-Type and charset. + + // If we don't have a content-type from the input headers. + if ( ! isset( $content_type ) ) { + $content_type = 'text/plain'; + } + + /** + * Filters the wp_mail() content type. + * + * @since 2.3.0 + * + * @param string $content_type Default wp_mail() content type. + */ + $content_type = apply_filters( 'wp_mail_content_type', $content_type ); + + $phpmailer->ContentType = $content_type; + + // Set whether it's plaintext, depending on $content_type. + if ( 'text/html' === $content_type ) { + $phpmailer->isHTML( true ); + } + + // If we don't have a charset from the input headers. + if ( ! isset( $charset ) ) { + $charset = get_bloginfo( 'charset' ); + } + + /** + * Filters the default wp_mail() charset. + * + * @since 2.3.0 + * + * @param string $charset Default email charset. + */ + $phpmailer->CharSet = apply_filters( 'wp_mail_charset', $charset ); + + // Set custom headers. + if ( ! empty( $headers ) ) { + foreach ( (array) $headers as $name => $content ) { + // Only add custom headers not added automatically by PHPMailer. + if ( ! in_array( $name, array( 'MIME-Version', 'X-Mailer' ), true ) ) { + try { + $phpmailer->addCustomHeader( sprintf( '%1$s: %2$s', $name, $content ) ); + } catch ( PHPMailer\PHPMailer\Exception $e ) { + continue; + } + } + } + + if ( false !== stripos( $content_type, 'multipart' ) && ! empty( $boundary ) ) { + $phpmailer->addCustomHeader( sprintf( 'Content-Type: %s; boundary="%s"', $content_type, $boundary ) ); + } + } + + if ( ! empty( $attachments ) ) { + foreach ( $attachments as $attachment ) { + try { + $phpmailer->addAttachment( $attachment ); + } catch ( PHPMailer\PHPMailer\Exception $e ) { + continue; + } + } + } + + /** + * Fires after PHPMailer is initialized. + * + * @since 2.2.0 + * + * @param PHPMailer $phpmailer The PHPMailer instance (passed by reference). + */ + do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) ); + + // Send! + try { + return $phpmailer->send(); + } catch ( PHPMailer\PHPMailer\Exception $e ) { + + $mail_error_data = compact( 'to', 'subject', 'message', 'headers', 'attachments' ); + $mail_error_data['phpmailer_exception_code'] = $e->getCode(); + + /** + * Fires after a PHPMailer\PHPMailer\Exception is caught. + * + * @since 4.4.0 + * + * @param WP_Error $error A WP_Error object with the PHPMailer\PHPMailer\Exception message, and an array + * containing the mail recipient, subject, message, headers, and attachments. + */ + do_action( 'wp_mail_failed', new WP_Error( 'wp_mail_failed', $e->getMessage(), $mail_error_data ) ); + + return false; + } + } + +} diff --git a/wp-content/plugins/smtp-mailer/readme.txt b/wp-content/plugins/smtp-mailer/readme.txt new file mode 100644 index 00000000..e505aa21 --- /dev/null +++ b/wp-content/plugins/smtp-mailer/readme.txt @@ -0,0 +1,140 @@ +=== SMTP Mailer === +Contributors: naa986 +Donate link: https://wphowto.net/ +Tags: email, mail, smtp, phpmailer +Requires at least: 5.5 +Tested up to: 5.7 +Stable tag: 1.1.0 +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html + +Configure a SMTP server to send email from your WordPress site. Configure the wp_mail() function to use SMTP instead of the PHP mail() function. + +== Description == + +[SMTP Mailer](https://wphowto.net/smtp-mailer-plugin-for-wordpress-1482) plugin allows you to configure a mail server which handles all outgoing email from your website. It takes control of the wp_mail function and use SMTP instead. + +https://www.youtube.com/watch?v=7O_jgtykcEk&rel=0 + +=== Requirements === + +* A self-hosted website running on [WordPress hosting](https://wphowto.net/best-cheap-wordpress-hosting-1689) + +=== SMTP Mailer Settings === + +* **SMTP Host**: Your outgoing mail server (e.g. smtp.gmail.com). +* **SMTP Authentication**: Whether to use SMTP authentication when sending an email (True/False). If you choose to authenticate you will also need to provide your username and password. +* **SMTP Username**: The username to connect to your SMTP server. +* **SMTP Password**: The password to connect to your SMTP server. +* **Type of Encryption**: The encryption to be used when sending an email (TLS/SSL/No Encryption. TLS is recommended). +* **SMTP Port**: The port to be used when sending an email (587/465/25). If you choose TLS the port should be set to 587. For SSL use port 465 instead. +* **From Email Address**: The email address to be used as the From Address when sending an email. +* **From Name**: The name to be used as the From Name when sending an email. + +=== SMTP Mailer Test Email === + +Once you have configured the settings you can send a test email to check the functionality of the plugin. + +* **To**: Email address of the recipient. +* **Subject**: Subject of the email. +* **Message**: Email body. + +=== Known Compatibility === + +SMTP Mailer should work with any plugin that uses the WordPress Mail function. However, It has been tested with the following form and contact form plugins: + +* Contact Form 7 +* Jetpack Contact Form +* Visual Form Builder +* Fast Secure Contact Form +* Formidable Forms +* Contact Form by BestWebSoft + +For detailed setup instructions please visit the [SMTP Mailer](https://wphowto.net/smtp-mailer-plugin-for-wordpress-1482) plugin page. + +== Installation == + +1. Go to the Add New plugins screen in your WordPress Dashboard +1. Click the upload tab +1. Browse for the plugin file (smtp-mailer.zip) on your computer +1. Click "Install Now" and then hit the activate button + +== Frequently Asked Questions == + += Can I send email via SMTP from my website using this plugin? = + +Yes. + += Can I use this plugin with Gmail SMTP? = + +Yes. + += Can I use this plugin on any SMTP port? = + +Yes. + += Can I use this plugin with Sendinblue SMTP? = + +Yes. + += Can I use this plugin with Mailgun SMTP? = + +Yes. + += Can I use this plugin with SendGrid SMTP? = + +Yes. + += Can I use this plugin with Postmark SMTP? = + +Yes. + += Can I use this plugin with Office365 SMTP? = + +Yes. + += Can I use this plugin with ZohoMail SMTP? = + +Yes. + +== Screenshots == + +1. SMTP Mailer Settings +2. SMTP Mailer Test Email Tab + +== Upgrade Notice == +none + +== Changelog == + += 1.1.0 = +* The password field can be left empty when updating the settings. + += 1.0.9 = +* Updated the code to be compatible with WordPress 5.5. + += 1.0.8 = +* SMTP Mailer is compatible with WordPress 5.3. + += 1.0.7 = +* SMTP Mailer now checks for a valid nonce when sending a test email. + += 1.0.6 = +* SMTP Mailer no longer shows the saved password in the settings. + += 1.0.5 = +* SMTP Mailer is now compatible with WordPress 4.9. + += 1.0.4 = +* Updated the mail() function by setting its minimum requirements to WordPress 4.8. +* "phpmailer_init" action hook is now enabled so it can be used by other plugins. + += 1.0.3 = +* Fixed a bug where an apostrophe in the password would cause SMTP authentication failure. + += 1.0.2 = +* SMTP Mailer now supports the "wp_mail_failed" hook which fires after a phpmailerException is caught. +* Added a new option to bypass this error on some servers where the SSL certificate is not properly configured - Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed. + += 1.0.1 = +* First commit