' ) ) { // no-op } else { // create an instance of the Logger $this->logger = new PostmanLogger( get_class( $this ) ); $this->logger->debug( 'Starting' ); add_filter( 'mymail_delivery_methods', array( &$this, 'delivery_method', ) ); add_action( 'mymail_deliverymethod_tab_postman', array( &$this, 'deliverytab', ) ); if ( mymail_option( 'deliverymethod' ) == MYMAIL_POSTMAN_ID ) { add_action( 'mymail_initsend', array( &$this, 'initsend', ) ); add_action( 'mymail_presend', array( &$this, 'presend', ) ); add_action( 'mymail_dosend', array( &$this, 'dosend', ) ); add_action( 'MYMAIL_POSTMAN_cron', array( &$this, 'reset', ) ); } } } /** * initsend function. * * uses mymail_initsend hook to set initial settings * * @access public * @param mixed $mailobject * @return void */ public function initsend( $mailobject ) { $this->logger->trace( 'initsend' ); // disable dkim $mailobject->dkim = false; } /** * presend function. * * uses the mymail_presend hook to apply setttings before each mail * * @access public * @param mixed $mailobject * @return void */ public function presend( $mailobject ) { // embedding images doesn't work $mailobject->embed_images = false; // use pre_send from the main class // need the raw email body to send so we use the same option $mailobject->pre_send(); } /** * dosend function. * * uses the mymail_dosend hook and triggers the send * * @access public * @param mixed $mailobject * @return void */ public function dosend( $mailobject ) { $this->logger->trace( 'dosend' ); $this->logger->trace( $mailobject->mailer ); // create a PostmanWpMail instance $postmanWpMail = new PostmanWpMail(); $postmanWpMail->init(); // create a PostmanMessage instance $message = $postmanWpMail->createNewMessage(); $message->addHeaders( $mailobject->headers ); $message->setBodyTextPart( $mailobject->mailer->AltBody ); $message->setBodyHtmlPart( $mailobject->mailer->Body ); $message->setBody( $mailobject->mailer->AltBody . $mailobject->mailer->Body ); $message->setSubject( $mailobject->subject ); $message->addTo( $mailobject->to ); $message->setReplyTo( $mailobject->reply_to ); $message->setAttachments( $mailobject->attachments ); // create a PostmanEmailLog instance $log = new PostmanEmailLog(); // send the message and store the result $mailobject->sent = $postmanWpMail->sendMessage( $message, $log ); // give error message back to MyMail $result = apply_filters( 'postman_wp_mail_result', null ); if ( ! $mailobject->sent ) { $mailobject->set_error( $result ['exception']->getMessage() ); } } /** * reset function. * * resets the current time * * @access public * @param mixed $message * @return array */ public function reset() { update_option( '_transient__mymail_send_period_timeout', false ); update_option( '_transient__mymail_send_period', 0 ); } /** * delivery_method function. * * add the delivery method to the options * * @access public * @param mixed $delivery_methods * @return void */ public function delivery_method( $delivery_methods ) { $delivery_methods [ MYMAIL_POSTMAN_ID ] = __( 'Postman SMTP', Postman::TEXT_DOMAIN ); return $delivery_methods; } /** * deliverytab function. * * the content of the tab for the options * * @access public * @return void */ public function deliverytab() { apply_filters( 'print_postman_status', null ); } /** * activate function. * * @access public * @return void */ public function activate() { if ( defined( 'MYMAIL_VERSION' ) && version_compare( MYMAIL_POSTMAN_REQUIRED_VERSION, MYMAIL_VERSION, '<=' ) ) { mymail_notice( sprintf( __( 'MyMail: Change the delivery method in the %s!', Postman::TEXT_DOMAIN ), sprintf( '%s', __( 'Settings', 'postman-smtp' ) ) ), '', false, 'delivery_method' ); $this->reset(); } } /** * deactivate function. * * @access public * @return void */ public function deactivate() { if ( defined( 'MYMAIL_VERSION' ) && function_exists( 'mymail_option' ) && version_compare( MYMAIL_POSTMAN_REQUIRED_VERSION, MYMAIL_VERSION, '<=' ) ) { if ( mymail_option( 'deliverymethod' ) == MYMAIL_POSTMAN_ID ) { mymail_update_option( 'deliverymethod', 'simple' ); /* Translators where %s is the name of the page */ mymail_notice( sprintf( __( 'MyMail: Change the delivery method in the %s!', Postman::TEXT_DOMAIN ), sprintf( '%s', __( 'Settings', 'postman-smtp' ) ) ), '', false, 'delivery_method' ); } } } } }