| This page is part of theMediaWiki Action API documentation. |
| MediaWiki Action API |
|---|
| Basics |
| Authentication |
| Accounts and Users |
| Page Operations |
|
| Search |
| Developer Utilities |
| Tutorials |
| v · d · e |
| Emailuser | ||
|---|---|---|
| Email a user. This module cannot be used as agenerator. | ||
| Prefix | none | |
| Required rights | sendemail | |
| Post only? | Yes | |
| Generated help | Current | |
| Version added |
| |
| The following documentation is the output ofSpecial: |
Email a user.
User to send the email to.
Subject header.
Email body.
Send a copy of this mail to me.
A "csrf" token retrieved fromaction=query&meta=tokens
To send an email, an email token is required.This token is equal to the edit token and the same for all recipients, but changes at every login.Email tokens can be obtained viaaction=query&meta=tokens, or by using the following method:
| Result |
|---|
{"batchcomplete":"","query":{"tokens":{"csrftoken":"7773cbfff263682c97ffc74b8672cbf25a5e0045+\\"}}} |
You can send email to users who have a confirmed email address with action=emailuser.Sending email is subject torate limits.
target: User to send email tosubject: The subject of the messagetext: The messagetoken: The token obtained in the previous request. Take care to encode the+ as%2Bccme: If set, a copy of the email will be sent to you| Result |
|---|
<?xml version="1.0" encoding="utf-8"?><api><emailuserresult="Success"/></api> |
#!/usr/bin/python3""" send_email.py MediaWiki API Demos Demo of `Emailuser` module: sending POST request to send email to wiki user Author: Jayprakash12345 MIT license"""importrequestsS=requests.Session()URL="https://test.wikipedia.org/w/api.php"# Step 1: GET request to fetch login tokenPARAMS_0={"action":"query","meta":"tokens","type":"login","format":"json"}R=S.get(url=URL,params=PARAMS_0)DATA=R.json()LOGIN_TOKEN=DATA['query']['tokens']['logintoken']# Step 2: POST request to log in. Use of main account for login is not# supported. Obtain credentials via Special:BotPasswords# (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpasswordPARAMS_1={"action":"login","lgname":"your_bot_username","lgpassword":"your_bot_password","lgtoken":LOGIN_TOKEN,"format":"json"}R=S.post(URL,data=PARAMS_1)# Step 3: GET request to fetch Email tokenPARAMS_2={"action":"query","meta":"tokens","format":"json"}R=S.get(url=URL,params=PARAMS_2)DATA=R.json()EMAIL_TOKEN=DATA['query']['tokens']['csrftoken']# Step 4: POST request to send an emailPARAMS_3={"action":"emailuser","target":"Test","subject":"Hi","text":"Just wanted to say hi","token":EMAIL_TOKEN,"format":"json"}R=S.post(URL,data=PARAMS_3)DATA=R.textprint(DATA)
<?php/* send_email.php MediaWiki API DemosDemo of `Emailuser` module: sending POST request to send email to wiki user MIT license*/$endPoint="https://en.wikipedia.org/w/api.php";$login_Token=getLoginToken();// Step 1loginRequest($login_Token);// Step 2$csrf_Token=getCSRFToken();// Step 3sendemail($csrf_Token);// Step 4// Step 1: GET request to fetch login tokenfunctiongetLoginToken(){global$endPoint;$params1=["action"=>"query","meta"=>"tokens","type"=>"login","format"=>"json"];$url=$endPoint."?".http_build_query($params1);$ch=curl_init($url);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);curl_setopt($ch,CURLOPT_COOKIEJAR,"cookie.txt");curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");$output=curl_exec($ch);curl_close($ch);$result=json_decode($output,true);return$result["query"]["tokens"]["logintoken"];}// Step 2: POST request to log in. Use of main account for login is not// supported. Obtain credentials via Special:BotPasswords// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpasswordfunctionloginRequest($logintoken){global$endPoint;$params2=["action"=>"login","lgname"=>"your_bot_username","lgpassword"=>"your_bot_password","lgtoken"=>$logintoken,"format"=>"json"];$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$endPoint);curl_setopt($ch,CURLOPT_POST,true);curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($params2));curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);curl_setopt($ch,CURLOPT_COOKIEJAR,"cookie.txt");curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");$output=curl_exec($ch);curl_close($ch);}// Step 3: GET request to fetch CSRF tokenfunctiongetCSRFToken(){global$endPoint;$params3=["action"=>"query","meta"=>"tokens","format"=>"json"];$url=$endPoint."?".http_build_query($params3);$ch=curl_init($url);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);curl_setopt($ch,CURLOPT_COOKIEJAR,"cookie.txt");curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");$output=curl_exec($ch);curl_close($ch);$result=json_decode($output,true);return$result["query"]["tokens"]["csrftoken"];}// Step 4: POST request to send an emailfunctionsendemail($csrftoken){global$endPoint;$params4=["action"=>"emailuser","target"=>"ABCD","subject"=>"API test","text"=>"Good to see you","token"=>$csrftoken,"format"=>"json"];$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$endPoint);curl_setopt($ch,CURLOPT_POST,true);curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($params4));curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);curl_setopt($ch,CURLOPT_COOKIEJAR,"cookie.txt");curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");$output=curl_exec($ch);curl_close($ch);echo($output);}
/* send_email.js MediaWiki API Demos Demo of `Emailuser` module: sending POST request to send email to wiki user MIT license*/varrequest=require('request').defaults({jar:true}),url="https://en.wikipedia.org/w/api.php";// Step 1: GET request to fetch login tokenfunctiongetLoginToken(){varparams_0={action:"query",meta:"tokens",type:"login",format:"json"};request.get({url:url,qs:params_0},function(error,res,body){if(error){return;}vardata=JSON.parse(body);loginRequest(data.query.tokens.logintoken);});}// Step 2: POST request to log in.// Use of main account for login is not// supported. Obtain credentials via Special:BotPasswords// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpasswordfunctionloginRequest(login_token){varparams_1={action:"login",lgname:"bot_username",lgpassword:"bot_password",lgtoken:login_token,format:"json"};request.post({url:url,form:params_1},function(error,res,body){if(error){return;}getCsrfToken();});}// Step 3: GET request to fetch CSRF tokenfunctiongetCsrfToken(){varparams_2={action:"query",meta:"tokens",format:"json"};request.get({url:url,qs:params_2},function(error,res,body){if(error){return;}vardata=JSON.parse(body);send_email(data.query.tokens.csrftoken);});}// Step 4: POST request to send an emailfunctionsend_email(csrf_token){varparams_3={action:"emailuser",target:"ABCD",subject:"API Test",text:"Hello",token:csrf_token,format:"json"};request.post({url:url,form:params_3},function(error,res,body){if(error){return;}console.log(body);});}// Start From Step 1getLoginToken();
/*send_email.jsMediaWiki API DemosDemo of `Emailuser` module: sending POST request to send email to wiki userMIT License*/varparams={action:'emailuser',target:'ABC',subject:'Hi',text:'Just wanted to say hi',format:'json'},api=newmw.Api();api.postWithToken('csrf',params).done(function(data){console.log(data);});
In addition to theusual stuff:
| Code | Info |
|---|---|
| cantsend | You are not logged in, you do not have a confirmed email address, or you are not allowed to send email to other users, so you cannot send email. |
| blockedfrommail | You have been blocked from sending email. |
| usermaildisabled | User email has been disabled |
| notarget | ⧼apierror-notarget⧽ |
| noemail | This user has not specified a valid email address. |
| nowikiemail | This user has chosen not to receive email from other users. |
Before trying to send an email, it is recommended to check if the user is emailable first.To do this, you can execute a list query on the user (or several users at once). Here is an example using Ajax:
newmw.Api().get({action:'query',list:'users',ususers:mw.config.get('wgTitle'),usprop:'emailable',rawcontinue:''}).done(function(getEmailable){alert((getEmailable.query.users[0]['emailable']!==undefined)?'emailable':'not emailable');});
If you are testing from a client-side script, it is also possible to simply check for the existence of the t-emailuser list item:
emailable=$('#t-emailuser').length?true:false;
| The following documentation is the output ofSpecial: |
Email a user.
User to send the email to.
Subject header.
Email body.
Send a copy of this mail to me.
A "csrf" token retrieved fromaction=query&meta=tokens