API:メールの送信
Appearance
From mediawiki.org
This page is a translated version of the page API:Emailuser and the translation is 97% complete.
このページは MediaWiki 操作 API の説明文書の一部です。
| MediaWiki 操作 API |
|---|
| 基本 |
| 認証 |
| 利用者とアカウント |
| ページのオペレーション |
| 検索 |
| 開発者向けユーティリティ |
| チュートリアル |
| 表 · 話 · 編 |
| Emailuser | |
|---|---|
| Email a user. このモジュールは generator としては使用できません。 | |
| 接頭辞 | なし |
| 必要な権限 | sendemail |
| POST のみ? | はい |
| 自動生成ヘルプ | 現行バージョン |
| 追加されたバージョン |
≧ 1.13
|
API documentation
以下の説明文書は、このサイト (MediaWiki.org) で稼働しているリリース前のバージョンのMediaWikiによって自動的に生成された、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]
トークン
メールを送信するには、メール トークンが必要です。 このトークンは、編集トークンと同じで、全受信者に共通ですが、ログインの度に変更されます。 メールトークンは、action=query&meta=tokens で入手できるほか、以下のやり方でも入手できます :
メール トークンの取得
| 結果 |
|---|
{ "batchcomplete":"", "query":{ "tokens":{ "csrftoken":"7773cbfff263682c97ffc74b8672cbf25a5e0045+\\" } } } |
利用者へのメールの送信
メール アドレスを認証した利用者に action=emailuser でメールを送信できます。 メールの送信には制限があります。
パラメーター
target: メールの宛先の利用者subject: メッセージの件名text: メッセージtoken: 以前のリクエストで取得したトークン。 必ず+を%2Bにエンコードしてください。ccme: 設定すると、メールのコピーをあなたにお送りします
例
簡潔性のためにこの例ではすべてのパラメーターをGETリクエストで渡していますが、 action=emailuser はPOSTリクエストを必要とします; GETリクエストだとエラーが発生します。
User:Catropeへメールを送信します
api.php? action=emailuser& target=Catrope& subject=Hi& text=Just%20wanted%20to%20say%20hi& token=58b54e0bab4a1d3fd3f7653af38e75cb+\ [ApiSandbox で試用する]
| 結果 |
|---|
<?xml version="1.0" encoding="utf-8"?> <api> <emailuserresult="Success"/> </api> |
サンプル コード
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 | 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 | メール機能が無効になっています |
| 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.org) で稼働しているリリース前のバージョンのMediaWikiによって自動的に生成された、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]