180 lines
6.5 KiB
PHP
180 lines
6.5 KiB
PHP
<?php
|
|
if(!function_exists('add_filter')) exit;
|
|
function fansub_smtp_mail_defaults() {
|
|
$defaults = array (
|
|
'mail_from' => '',
|
|
'mail_from_name' => '',
|
|
'mailer' => 'smtp',
|
|
'mail_set_return_path' => 'false',
|
|
'smtp_host' => 'localhost',
|
|
'smtp_port' => '25',
|
|
'smtp_ssl' => 'none',
|
|
'smtp_auth' => false,
|
|
'smtp_user' => '',
|
|
'smtp_pass' => ''
|
|
);
|
|
return $defaults;
|
|
}
|
|
|
|
function fansub_get_smtp_mail_data() {
|
|
$defaults = fansub_smtp_mail_defaults();
|
|
$option = fansub_get_option('option_smtp_email');
|
|
$result = wp_parse_args($option, $defaults);
|
|
return apply_filters('fansub_smtp_mail_args', $result);
|
|
}
|
|
|
|
function fansub_get_mail_from_name() {
|
|
$data = fansub_get_smtp_mail_data();
|
|
$name = get_bloginfo('name');
|
|
if(isset($data['mail_from_name']) && !empty($data['mail_from_name'])) {
|
|
$name = $data['mail_from_name'];
|
|
}
|
|
return $name;
|
|
}
|
|
|
|
function fansub_mail_from_name($name) {
|
|
$name = fansub_get_mail_from_name();
|
|
return $name;
|
|
}
|
|
add_filter('wp_mail_from_name', 'fansub_mail_from_name');
|
|
|
|
function fansub_get_mail_from() {
|
|
$data = fansub_get_smtp_mail_data();
|
|
$email = get_bloginfo('admin_email');
|
|
if(isset($data['mail_from']) && !empty($data['mail_from'])) {
|
|
$email = $data['mail_from'];
|
|
}
|
|
return $email;
|
|
}
|
|
|
|
function fansub_mail_from($email) {
|
|
$email = fansub_get_mail_from();
|
|
return $email;
|
|
}
|
|
add_filter('wp_mail_from', 'fansub_mail_from');
|
|
|
|
function fansub_get_mailer() {
|
|
$data = fansub_get_smtp_mail_data();
|
|
$mailer = fansub_get_value_by_key($data, 'mailer');
|
|
return apply_filters('fansub_mailer', $mailer);
|
|
}
|
|
|
|
function fansub_phpmailer_init_change_info($phpmailer) {
|
|
$data = fansub_get_smtp_mail_data();
|
|
if(empty($data['mailer'])) {
|
|
return;
|
|
}
|
|
if('smtp' == $data['mailer'] && empty($data['smtp_host'])) {
|
|
return;
|
|
}
|
|
$phpmailer->Mailer = $data['mailer'];
|
|
if((bool)$data['mail_set_return_path']) {
|
|
$phpmailer->Sender = $phpmailer->From;
|
|
}
|
|
$phpmailer->SMTPSecure = ($data['smtp_ssl'] == 'none') ? '' : $data['smtp_ssl'];
|
|
if('smtp' == $data['mailer']) {
|
|
$phpmailer->Host = $data['smtp_host'];
|
|
$phpmailer->Port = $data['smtp_port'];
|
|
if(fansub_string_to_bool($data['smtp_auth'])) {
|
|
$phpmailer->SMTPAuth = TRUE;
|
|
$phpmailer->Username = $data['smtp_user'];
|
|
$phpmailer->Password = $data['smtp_pass'];
|
|
}
|
|
}
|
|
$phpmailer = apply_filters('fansub_phpmailer', $phpmailer);
|
|
}
|
|
add_action('phpmailer_init', 'fansub_phpmailer_init_change_info');
|
|
|
|
function fansub_mail_test_smtp_setting($to_email) {
|
|
global $phpmailer;
|
|
if(!is_object($phpmailer) || !is_a($phpmailer, 'PHPMailer')) {
|
|
require(ABSPATH . WPINC . '/class-phpmailer.php');
|
|
require(ABSPATH . WPINC . '/class-smtp.php');
|
|
$phpmailer = new PHPMailer(true);
|
|
}
|
|
$subject = __('SMTP Email', 'fansub') . ': ' . sprintf(__('Test mail to %s', 'fansub'), $to_email);
|
|
$message = __('Thank you for using HocWP, your SMTP mail settings work successfully.', 'fansub');
|
|
$phpmailer->SMTPDebug = true;
|
|
ob_start();
|
|
$result = wp_mail($to_email, $subject, $message);
|
|
$smtp_debug = ob_get_clean();
|
|
$test_message = '<p><strong>' . __('Test Message Sent', 'fansub') . '</strong></p>';
|
|
ob_start();
|
|
var_dump($result);
|
|
$result = ob_get_clean();
|
|
$test_message .= '<p>' . sprintf(__('The result was: %s', 'fansub'), $result) . '</p>';
|
|
$test_message .= '<p>' . __('The full debugging output is shown below:', 'fansub') . '</p>';
|
|
ob_start();
|
|
var_dump($phpmailer);
|
|
$mailer_debug = ob_get_clean();
|
|
$test_message .= '<pre>' . $mailer_debug . '</pre>';
|
|
$test_message .= '<p>' . __('The SMTP debugging output is shown below:', 'fansub') . '</p>';
|
|
$test_message .= '<pre>' . $smtp_debug . '</pre>';
|
|
return $test_message;
|
|
}
|
|
|
|
function fansub_set_html_mail_content_type() {
|
|
return 'text/html';
|
|
}
|
|
|
|
function fansub_send_html_mail($to, $subject, $message, $headers = '', $attachments = '') {
|
|
$result = false;
|
|
$mailer = fansub_get_mailer();
|
|
if('smtp' == $mailer) {
|
|
add_filter('wp_mail_content_type', 'fansub_set_html_mail_content_type');
|
|
$result = wp_mail($to, $subject, $message, $headers, $attachments);
|
|
remove_filter('wp_mail_content_type', 'fansub_set_html_mail_content_type');
|
|
} else {
|
|
$result = fansub_send_mail($to, $subject, $message);
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
function fansub_build_html_mail_headers(&$headers = '') {
|
|
$headers .= 'MIME-Version: 1.0' . "\r\n";
|
|
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
|
|
return $headers;
|
|
}
|
|
|
|
function fansub_build_mail_headers(&$headers = '') {
|
|
$from_name = fansub_get_mail_from_name();
|
|
$from = fansub_get_mail_from();
|
|
$headers .= "From: " . $from_name . " < " . $from . " >\r\n";
|
|
fansub_build_html_mail_headers($headers);
|
|
$headers = apply_filters('fansub_mail_headers', $headers);
|
|
return $headers;
|
|
}
|
|
|
|
function fansub_send_mail($to, $subject, $message) {
|
|
$mailer = fansub_get_mailer();
|
|
if('smtp' == $mailer) {
|
|
$result = fansub_send_html_mail($to, $subject, $message);
|
|
} else {
|
|
$headers = fansub_build_mail_headers();
|
|
$result = mail($to, $subject, $message, $headers);
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
function fansub_send_mail_invalid_license($project_name, $type = 'Theme') {
|
|
$transient_name = 'fansub_mail_invalid_license_' . $type . '_' . $project_name;
|
|
$transient_name = md5($transient_name);
|
|
if(false === get_transient($transient_name)) {
|
|
$subject = get_bloginfo('name');
|
|
$subject .= ' vi phạm bản quyền';
|
|
$message = wpautop('Địa chỉ website: ' . get_bloginfo('url'));
|
|
$message .= wpautop('Admin email: ' . fansub_get_admin_email());
|
|
$message .= wpautop('Thể loại: ' . $type);
|
|
$message .= wpautop('Tên dự án: ' . $project_name);
|
|
fansub_send_html_mail(FANSUB_EMAIL, $subject, $message);
|
|
set_transient($transient_name, 1, DAY_IN_SECONDS);
|
|
}
|
|
}
|
|
|
|
function fansub_send_mail_verify_email_subscription($subject, $to_email, $verify_link) {
|
|
$message = '<p>You received this message because someone requested an email subscription for ' . $to_email . ' to %SITE_NAME%. If you did not make this request, please ignore the rest of this message.</p>';
|
|
$message = fansub_replace_text_placeholder($message);
|
|
$message .= '<br>';
|
|
$message .= '<p>Please click here to verify your email: ' . $verify_link . '</p>';
|
|
fansub_send_html_mail($to_email, $subject, $message);
|
|
} |