diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2008-03-21 11:49:34 +0100 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2008-03-21 11:49:34 +0100 |
commit | 086ae52d12011746a75f5588e877347bc0457352 (patch) | |
tree | e73263c7a29d0f94fafb874562610e16eb292ba8 /includes/SpecialEmailuser.php | |
parent | 749e7fb2bae7bbda855de3c9e319435b9f698ff7 (diff) |
Update auf MediaWiki 1.12.0
Diffstat (limited to 'includes/SpecialEmailuser.php')
-rw-r--r-- | includes/SpecialEmailuser.php | 47 |
1 files changed, 37 insertions, 10 deletions
diff --git a/includes/SpecialEmailuser.php b/includes/SpecialEmailuser.php index 1d5a9647..7de89dce 100644 --- a/includes/SpecialEmailuser.php +++ b/includes/SpecialEmailuser.php @@ -4,8 +4,6 @@ * @addtogroup SpecialPage */ -require_once('UserMailer.php'); - /** * @todo document */ @@ -96,7 +94,7 @@ class EmailUserForm { global $wgOut, $wgUser; $wgOut->setPagetitle( wfMsg( "emailpage" ) ); - $wgOut->addWikiText( wfMsg( "emailpagetext" ) ); + $wgOut->addWikiMsg( "emailpagetext" ); if ( $this->subject === "" ) { $this->subject = wfMsg( "defemailsubject" ); @@ -133,7 +131,7 @@ class EmailUserForm { </tr> </table> <span id='wpTextLabel'><label for=\"wpText\">{$emm}:</label><br /></span> -<textarea name=\"wpText\" rows='20' cols='80' wrap='virtual' style=\"width: 100%;\">" . htmlspecialchars( $this->text ) . +<textarea id=\"wpText\" name=\"wpText\" rows='20' cols='80' style=\"width: 100%;\">" . htmlspecialchars( $this->text ) . "</textarea> " . wfCheckLabel( $emc, 'wpCCMe', 'wpCCMe', $wgUser->getBoolOption( 'ccmeonemails' ) ) . "<br /> <input type='submit' name=\"wpSend\" value=\"{$ems}\" /> @@ -143,18 +141,47 @@ class EmailUserForm { } function doSubmit() { - global $wgOut, $wgUser; + global $wgOut, $wgUser, $wgUserEmailUseReplyTo; $to = new MailAddress( $this->target ); $from = new MailAddress( $wgUser ); $subject = $this->subject; if( wfRunHooks( 'EmailUser', array( &$to, &$from, &$subject, &$this->text ) ) ) { + + if( $wgUserEmailUseReplyTo ) { + // Put the generic wiki autogenerated address in the From: + // header and reserve the user for Reply-To. + // + // This is a bit ugly, but will serve to differentiate + // wiki-borne mails from direct mails and protects against + // SPF and bounce problems with some mailers (see below). + global $wgPasswordSender; + $mailFrom = new MailAddress( $wgPasswordSender ); + $replyTo = $from; + } else { + // Put the sending user's e-mail address in the From: header. + // + // This is clean-looking and convenient, but has issues. + // One is that it doesn't as clearly differentiate the wiki mail + // from "directly" sent mails. + // + // Another is that some mailers (like sSMTP) will use the From + // address as the envelope sender as well. For open sites this + // can cause mails to be flunked for SPF violations (since the + // wiki server isn't an authorized sender for various users' + // domains) as well as creating a privacy issue as bounces + // containing the recipient's e-mail address may get sent to + // the sending user. + $mailFrom = $from; + $replyTo = null; + } - $mailResult = userMailer( $to, $from, $subject, $this->text ); + $mailResult = UserMailer::send( $to, $mailFrom, $subject, $this->text, $replyTo ); if( WikiError::isError( $mailResult ) ) { - $wgOut->addHTML( wfMsg( "usermailererror" ) . $mailResult); + $wgOut->addHTML( wfMsg( "usermailererror" ) . + ' ' . htmlspecialchars( $mailResult->getMessage() ) ); } else { // if the user requested a copy of this mail, do this now, @@ -162,14 +189,15 @@ class EmailUserForm { if ($this->cc_me && $to != $from) { $cc_subject = wfMsg('emailccsubject', $this->target->getName(), $subject); if( wfRunHooks( 'EmailUser', array( &$from, &$from, &$cc_subject, &$this->text ) ) ) { - $ccResult = userMailer( $from, $from, $cc_subject, $this->text ); + $ccResult = UserMailer::send( $from, $from, $cc_subject, $this->text ); if( WikiError::isError( $ccResult ) ) { // At this stage, the user's CC mail has failed, but their // original mail has succeeded. It's unlikely, but still, what to do? // We can either show them an error, or we can say everything was fine, // or we can say we sort of failed AND sort of succeeded. Of these options, // simply saying there was an error is probably best. - $wgOut->addHTML( wfMsg( "usermailererror" ) . $ccResult); + $wgOut->addHTML( wfMsg( "usermailererror" ) . + ' ' . htmlspecialchars( $ccResult->getMessage() ) ); return; } } @@ -192,4 +220,3 @@ class EmailUserForm { $wgOut->returnToMain( false, $user->getUserPage() ); } } - |