API:Emailuser

This page is a translated version of the page API:Emailuser and the translation is 100% complete.


Anahtar

Bir e-posta göndermek için bir e-posta anahtarı gereklidir. Bu anahtar, düzenleme anahtarını eşittir ve tüm alıcılar için aynıdır, ancak her girişte değişir. E-posta anahtarları action=query&meta=tokens üzerinden veya aşağıdaki yöntem kullanılarak elde edilebilir:

Bir e-posta anahtarı alma
Sonuç
{
    "batchcomplete": "",
    "query": {
        "tokens": {
            "csrftoken": "7773cbfff263682c97ffc74b8672cbf25a5e0045+\\"
        }
    }
}

kullanıcılara eposta gönderimi

action=emailuser ile onaylanmış bir e-posta adresi olan kullanıcılara e-posta gönderebilirsiniz. E-posta göndermek oran sınırlarına tabidir.

Parametreler

  • target: Eposta gönderilecek kullanıcı
  • subject: Mesajın konusu
  • text: Mesaj
  • token: Önceki istekte elde edilen anahtar. + ile %2B olarak kodlamaya özen gösterin
  • ccme: Ayarlanırsa, e-postanın bir kopyası size gönderilecektir

Örnekler

Bu örnekte, tüm parametreler basitlik adına bir GET isteğinde iletilir. Ancak action=emailuser, POST istekleri gerektirir; GET istekleri bir hataya neden olur.
User:Catrope ile e-posta gönderme
Sonuç
<?xml version="1.0" encoding="utf-8"?>
<api>
  <emailuser result="Success" />
</api>

Örnek kod

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
"""

import requests

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
*/

var request = require('request').defaults({jar: true}),
    url = "https://en.wikipedia.org/w/api.php";

// Step 1: GET request to fetch login token
function getLoginToken() {
    var params_0 = {
        action: "query",
        meta: "tokens",
        type: "login",
        format: "json"
    };

    request.get({ url: url, qs: params_0 }, function (error, res, body) {
        if (error) {
            return;
        }
        var data = 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
function loginRequest(login_token) {
    var params_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
function getCsrfToken() {
    var params_2 = {
        action: "query",
        meta: "tokens",
        format: "json"
    };

    request.get({ url: url, qs: params_2 }, function(error, res, body) {
        if (error) {
            return;
        }
        var data = JSON.parse(body);
        send_email(data.query.tokens.csrftoken);
    });
}

// Step 4: POST request to send an email
function send_email(csrf_token) {
    var params_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
*/

var params = {
		action: 'emailuser',
		target: 'ABC',
		subject: 'Hi',
		text: 'Just wanted to say hi',
		format: 'json'
	},
	api = new mw.Api();

api.postWithToken( 'csrf', params ).done( function ( data ) {
	console.log( data );
} );

Olası hatalar

Olağan şeylere ek olarak:

Kod Bilgi
cantsend Giriş yapmadınız, onaylanmış bir e-posta adresiniz yok veya diğer kullanıcılara e-posta göndermenize izin verilmediğinden e-posta gönderemezsiniz.
blockedfrommail E-posta göndermeniz engellendi.
usermaildisabled Kullanıcı epostası pasifleştirildi
notarget ⧼apierror-notarget⧽
noemail Bu kullanıcı geçerli bir e-posta adresi belirtmemiş.
nowikiemail Bu kullanıcı, diğer kullanıcılardan e-posta almamayı tercih etti.

Eposta gönderebilme durumunu kontrol etmek

Bir e-posta göndermeye çalışmadan önce, kullanıcının e-posta ile gönderilebilir olup olmadığını kontrol etmeniz önerilir. Bunu yapmak için kullanıcı (veya aynı anda birkaç kullanıcı) üzerinde bir liste sorgusu yürütebilirsiniz. İşte Ajax kullanan bir örnek:

new mw.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' );
} );

İstemci tarafı komut dosyasından test yapıyorsanız, t-emailuser liste öğesinin varlığını kontrol etmek de mümkündür:

emailable = $( '#t-emailuser' ).length ? true : false;


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]