1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
<?php
namespace SIW\Email;
use SIW\Properties;
class Configuration {
public static function init() {
$self = new self();
add_action( 'phpmailer_init', [ $self, 'set_smtp_configuration' ], PHP_INT_MAX );
add_action( 'phpmailer_init', [ $self, 'set_dkim_configuration' ], PHP_INT_MAX );
add_action( 'phpmailer_init', [ $self, 'set_mailjet_tracking' ], PHP_INT_MAX );
add_action( 'phpmailer_init', [ $self, 'set_antispam_header' ], PHP_INT_MAX );
add_filter( 'wp_mail_from', [ $self, 'set_mail_from' ] );
add_filter( 'wp_mail_from_name', [ $self, 'set_mail_from_name' ] );
}
public function set_smtp_configuration( \PHPMailer $phpmailer ) {
if ( siw_get_option( 'smtp_enabled' ) ) {
$phpmailer->isSMTP();
$smtp_settings = siw_get_option( 'smtp_settings');
$phpmailer->Host = $smtp_settings['host'];
$phpmailer->Port = $smtp_settings['port'];
$phpmailer->SMTPAuth = (bool) $smtp_settings['authentication'];
$phpmailer->Username = $smtp_settings['username'];
$phpmailer->Password = $smtp_settings['password'];
$phpmailer->SMTPSecure = $smtp_settings['encryption'];
$phpmailer->Sender = $phpmailer->From;
}
}
public function set_dkim_configuration( \PHPMailer $phpmailer ) {
if ( siw_get_option( 'dkim_enabled' ) && defined( 'SIW_DKIM_PASSPHRASE' ) ) {
$dkim_settings = siw_get_option( 'dkim_settings');
$phpmailer->DKIM_selector = $dkim_settings['selector'];
$phpmailer->DKIM_domain = $dkim_settings['domain'];
$phpmailer->DKIM_identity = $phpmailer->From;
$phpmailer->DKIM_passphrase = SIW_DKIM_PASSPHRASE;
$phpmailer->DKIM_private_string = $dkim_settings['key'];
}
}
public function set_mailjet_tracking( \PHPMailer $phpmailer ) {
$phpmailer->addCustomHeader( 'X-Mailjet-TrackOpen', 0 );
$phpmailer->addCustomHeader( 'X-Mailjet-TrackClick', 0 );
}
public function set_antispam_header( \PHPMailer $phpmailer ) {
$phpmailer->addCustomHeader( 'X-SIW-WebsiteMail', 1 );
}
public function set_mail_from( string $from ) {
$sitename = strtolower( $_SERVER['SERVER_NAME'] );
if ( substr( $sitename, 0, 4 ) == 'www.' ) {
$sitename = substr( $sitename, 4 );
}
$default_from = 'wordpress@' . $sitename;
if ( $from != $default_from ) {
return $from;
}
return Properties::EMAIL;
}
public function set_mail_from_name( string $from_name ) {
$default_from_name = 'WordPress';
if ( $from_name != $default_from_name ) {
return $from_name;
}
return Properties::NAME;
}
}