Jump to content
MediaWiki

API: электронная почта пользователя

From mediawiki.org
This page is a translated version of the page API:Emailuser and the translation is 90% complete.
Эта страница является частью документации по API действий MediaWiki.
API действий MediaWiki
Основы
Аутентификация
Учётные записи и пользователи
Выполнение операций со страницами
Поиск
Сведения для разработчиков
Руководство
п · о · р
Emailuser
Email a user.
Этот модуль не может быть использован в качестве генератора.
Префикс нет
Необходимые права sendemail
Только POST? Да
Генерируемая справка Текущее
Добавлено в версии
≥ 1.13


API documentation

Документация ниже автоматически сгенерирована предварительной версией MediaWiki, используемой на этом сайте (MediaWiki.org); она доступна на служебной странице Special:ApiHelp/emailuser.

action=emailuser

(main | emailuser)
  • This module requires read rights.
  • This module requires write rights.
  • This module only accepts POST requests.
  • Source: MediaWiki
  • License: GPL-2.0-or-later

Email a user.

Specific parameters:
Other general parameters are available.
target

User to send the email to.

This parameter is required.
subject

Subject header.

This parameter is required.
text

Email body.

This parameter is required.
ccme

Send a copy of this mail to me.

Type: boolean (details)
token

A "csrf" token retrieved from action=query&meta=tokens

This parameter is required.
Example:
Send an email to the user WikiSysop with the text Content.
api.php?action=emailuser&target=WikiSysop&text=Content&token=123ABC [open in sandbox]

Токен

Чтобы отправить электронное письмо, требуется электронный токен. Этот токен равен токену редактирования и меняется при каждом входе в систему. Email tokens can be obtained via action=query&meta=tokens , or by using the following method:

Получение электронного токена
Результат
{
"batchcomplete":"",
"query":{
"tokens":{
"csrftoken":"7773cbfff263682c97ffc74b8672cbf25a5e0045+\\"
}
}
}

Отправка электронной почты пользователям

You can send email to users who have a confirmed email address with action=emailuser. Отправка электронной почты при условии местный налог

Параметры

  • target: или пришлите письмо на адрес
  • subject: Тема сообщения
  • text: Сообщение
  • token: Токен, полученный в предыдущем запросе. Не забудьте преобразовать $code1 в $code2
  • ccme: Если установлено, что копия электронного письма будет отправлена вам

Примеры

В этом примере все параметры передаются в запросе GET ради простоты. Однако для action=emailuser требуются запросы POST; Запросы GET вызовут ошибку.
Отправка электронного письма на User:Catrope
Результат
{
"emailuser":{
"result":"Success"
}
}

Пример кода

Python

#!/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
"""
importrequests
S = requests.Session()
URL = "https://test.wikipedia.org/w/api.php"
# Step 1: GET request to fetch login token
PARAMS_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 & lgpassword
PARAMS_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 token
PARAMS_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 email
PARAMS_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.text
print(DATA)

PHP

<?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 1
loginRequest( $login_Token ); // Step 2
$csrf_Token = getCSRFToken(); // Step 3
sendemail( $csrf_Token ); // Step 4
// Step 1: GET request to fetch login token
function getLoginToken() {
	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 & lgpassword
function loginRequest( $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 token
function getCSRFToken() {
	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 email
function sendemail( $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 );
}

JavaScript

/* 
 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 token
functiongetLoginToken(){
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 & lgpassword
functionloginRequest(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 token
functiongetCsrfToken(){
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 email
functionsend_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 1
getLoginToken();

MediaWiki JS

/*
	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);
});

Возможные ошибки

В дополнение к обычным материалам:

Код Информация
cantsend Вы не авторизованы, ваш электронный адрес не подтверждён или у вас нет прав на отправку электронной почты другим участникам, поэтому вы не можете отправить электронное письмо.
blockedfrommail Отправка электронной почты была для вас заблокирована.
usermaildisabled Электронная почта пользователя была отключена
notarget ⧼apierror-notarget⧽
noemail Этот участник не указал действительный адрес электронной почты.
nowikiemail Этот участник указал, что не желает получать письма от других участников.

Проверка доступного статуса отправки по электронной почте

Прежде чем пытаться отправить электронное письмо, рекомендуется сначала проверить, есть ли у пользователя электронная почта. Для этого вы можете выполнить запрос списка для пользователя (или сразу нескольких пользователей одновременно). Вот пример использования 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');
});

Если вы тестируете клиентский скрипт, также можно просто проверить наличие элемента списка t-emailuser.

emailable=$('#t-emailuser').length?true:false;
Документация ниже автоматически сгенерирована предварительной версией MediaWiki, используемой на этом сайте (MediaWiki.org); она доступна на служебной странице Special:ApiHelp/emailuser.

action=emailuser

(main | emailuser)
  • This module requires read rights.
  • This module requires write rights.
  • This module only accepts POST requests.
  • Source: MediaWiki
  • License: GPL-2.0-or-later

Email a user.

Specific parameters:
Other general parameters are available.
target

User to send the email to.

This parameter is required.
subject

Subject header.

This parameter is required.
text

Email body.

This parameter is required.
ccme

Send a copy of this mail to me.

Type: boolean (details)
token

A "csrf" token retrieved from action=query&meta=tokens

This parameter is required.
Example:
Send an email to the user WikiSysop with the text Content.
api.php?action=emailuser&target=WikiSysop&text=Content&token=123ABC [open in sandbox]

AltStyle によって変換されたページ (->オリジナル) /