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 via {{ll|API:Tokens|action{{=}}query&meta{{=}}tokens}}, or by using the following method:
<translate><!--T:2--> To send an email, an email token is required.</translate>
<translate><!--T:24--> This token is equal to the edit token and the same for all recipients, but changes at every login.</translate>
<translate><!--T:25--> Email tokens can be obtained via <tvar name=1>{{ll|API:Tokens|action{{=}}query&meta{{=}}tokens}}</tvar>, or by using the following method:</translate>
{{ApiEx
{{ApiEx
|desc=Obtaining an email token
|desc=<translate><!--T:3--> Obtaining an email token</translate>
|p1=action=query
|p1=action=query
|p2=meta=tokens
|p2=meta=tokens
Line 28:
Line 31:
{{anchor|Sending e-mail to users}}
{{anchor|Sending e-mail to users}}
<translate>
== Sending email to users:n.ramokgwathedi85@gmail.com ==
*{{ApiParam|token|2=<translate><!--T:10--> The token obtained in the previous request.</translate> <translate><!--T:28--> Take care to encode the <tvar name=1><code>+</code></tvar> as <tvar name=2><code>%2B</code></tvar></translate>|required=1}}
You can send email to users who have a confirmed email address with action=emailuser. Sending email is subject to {{ll|Manual:$wgRateLimits|rate limits}}.
{{note|1=<translate><!--T:13--> In this example, all parameters are passed in a GET request just for the sake of simplicity. However, <tvar name=1>action=emailuser</tvar> requires POST requests; GET requests will cause an error.</translate>}}
{{note|1=In this example, all parameters are passed in a GET request just for the sake of simplicity. However, action=emailuser requires POST requests; GET requests will cause an error.}}
{{ApiEx
{{ApiEx
|desc=Sending an email to [[User:Catrope]]
|desc=<translate><!--T:14--> Sending an email to <tvar name=1>[[User:Catrope]]</tvar></translate>
|p1=action=emailuser
|p1=action=emailuser
|p2=target=Catrope
|p2=target=Catrope
Line 57:
Line 63:
</api></syntaxhighlight>}}
</api></syntaxhighlight>}}
<translate>
=== Sample code ===
=== Sample code === <!--T:15-->
</translate>
<!-- Transclude Sample code -->
<!-- Transclude Sample code -->
<div style="overflow-y:hidden">
{{:{{translatable}}/Sample code 1}}
{{:{{translatable}}/Sample code 1}}
</div>
<translate>
=== Possible errors ===
=== Possible errors === <!--T:16-->
<!--T:17-->
In addition to the {{ll|API:Errors#Standard error messages|usual stuff}}:
In addition to the {{<tvar name=1>ll|API:Errors#Standard error messages</tvar>|usual stuff}}:</translate>
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:
</translate>
<translate><!--T:22--> Before trying to send an email, it is recommended to check if the user is emailable first.</translate>
<translate><!--T:26--> To do this, you can execute a list query on the user (or several users at once). Here is an example using Ajax:</translate>
<syntaxhighlight lang="JavaScript">
<syntaxhighlight lang="JavaScript">
new mw.Api().get( {
new mw.Api().get( {
Line 94:
Line 112:
</syntaxhighlight>
</syntaxhighlight>
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:
<translate><!--T:23--> 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:</translate>
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 via action=query&meta=tokens, or by using the following method:
In this example, all parameters are passed in a GET request just for the sake of simplicity. However, action=emailuser requires POST requests; GET requests will cause an error.
#!/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 Demos Demo 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.js MediaWiki API Demos Demo of `Emailuser` module: sending POST request to send email to wiki user MIT 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);});
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:
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 of Special:ApiHelp/emailuser, automatically generated by the pre-release version of MediaWiki that is running on this site (MediaWiki.org).