public function test_invalid_headers() { $email = new BP_Email('activity-at-message'); $default_headers = $email->get_headers(); $headers = array('custom:header' => 'custom:value'); $email->set_headers($headers); $this->assertNotSame($headers + $default_headers, $email->get('headers')); $this->assertSame(array('customheader' => 'customvalue') + $default_headers, $email->get('headers')); }
/** * Set various email headers for BP 2.5 emails. * * This includes the 'Reply-To' and custom 'From' headers. * * @since 1.0-RC4 * * @param bool|WP_Error $retval Returns true if validation is successful, else a descriptive WP_Error. * @param BP_Email $email Current instance of the email type class. */ public function set_bp_email_headers($retval, $email) { if (!$email->get_to()) { return $retval; } if (empty($this->listener->item_id)) { return $retval; } $to = $email->get_to(); // Backpat headers to be used for checks in 'bp_rbe_querystring' filter. $headers = array(); $headers['to'] = array_shift($to)->get_address(); $reply_to = $this->get_reply_to_address($headers); // If no reply to, bail. if (empty($reply_to)) { return $retval; } /** * Should we use the poster's display name as the 'From' name? * * @since 1.0-RC4. * * @param bool $retval */ $use_custom_from_header = apply_filters('bp_rbe_use_custom_from_header', true); // Set custom 'From' header. if (!empty($this->listener->user_id) && true === $use_custom_from_header) { // Fetch current 'From' email address. $from = $email->get_from()->get_address(); // Grab the host. $host = substr($from, strpos($from, '@') + 1); // Set the custom From email address and name. $email->set_from("noreply@{$host}", bp_core_get_user_displayname($this->listener->user_id)); } /** * Set our custom 'Reply-To' email header. * * Have to workaround a mailbox character limit PHPMailer bug by wiping out * the Reply-To header and then setting it as a custom header. * * @link https://github.com/PHPMailer/PHPMailer/issues/706 */ $email->set_reply_to(''); $email->set_headers(array('Reply-To' => $reply_to)); return $retval; }