# aardio 范例: 调用临时邮箱 mail.tm 接口



```aardio
//调用临时邮箱 mail.tm 接口

import console; 
import string.html;
import web.rest.jsonClient;

var http = web.rest.jsonClient();
var mailApi = http.api("https://api.mail.tm/");

console.showLoading("正在登录");

// 获取令牌
var tokenData, err = mailApi.token.post(
	address = "aardio@virgilian.com";//你的邮件地址
	password = "password"; //密码
);

if(err){
	return console.errorPause(err)
}

// 设置令牌
http.setAuthToken(tokenData.token);

// 获取邮件总数
var messages, err = mailApi.messages.get(page=1);
var totalItems = messages[["hydra:totalItems"]] || 0;

var page = 0;
for(i=1;math.ceil(totalItems/30);30){
	page++;
	
	//分页获取邮件
	messages, err = mailApi.messages.get(page=page);
	var list = messages["hydra:member"];
	for(i=1; #list){
		var mail = list[i];
		console.log(mail.from.address,mail.subject || mail.intro)
		
		var detail = mailApi.messages[mail.id].get()
		
		//detail.text 是字符串，但 detail.html 是字符串数组
		console.log( string.html.toText(detail.html) ) 
		
		//删除邮件
		mailApi.messages[mail.id].delete()
	}
}

// 获取账号信息
var me,err = mailApi.me.get();

console.showLoading("正在监听新邮件");		

// 使用 mercure 协议监听 mail.tm 新邮件（实际上就是 SSE 流）
var eventSource = http.api("https://mercure.mail.tm/.well-known/mercure");

var ok,err = eventSource.get({topic = "/accounts/"+me.id}, function(sseMessage){
	var data = sseMessage.data;
	if(data[["@context"]]=="/contexts/Message"){
		console.log("收到新邮件")
		console.log("发件邮箱::",data.from.address)
		console.log("主题 / 简介:",data.subject || data.intro)
		/*
		http 对象已进入流模式，
		如果要在这里调用 https://api.mail.tm/messages/{id}/get 
		则需要创建新的 web.rest.jsonClient
		*/
		
	}
});
				
console.pause();

```

