Skip to content

Commit

Permalink
add mail-recieve add-files
Browse files Browse the repository at this point in the history
  • Loading branch information
tf0054 committed Jan 7, 2011
1 parent fb70b87 commit 3073a43
Show file tree
Hide file tree
Showing 9 changed files with 128 additions and 0 deletions.
Binary file added WEB-INF/lib/dsn.jar
Binary file not shown.
Binary file added WEB-INF/lib/imap.jar
Binary file not shown.
Binary file added WEB-INF/lib/mailapi.jar
Binary file not shown.
Binary file added WEB-INF/lib/pop3.jar
Binary file not shown.
Binary file added WEB-INF/lib/smtp.jar
Binary file not shown.
12 changes: 12 additions & 0 deletions src/mail.js
@@ -0,0 +1,12 @@
require("./templatefilters");
require("./setup");

var Setup = require("nitro/middleware/setup").Setup,
Path = require("nitro/middleware/path").Path,
Errors = require("nitro/middleware/errors").Errors,
Render = require("nitro/middleware/render").Render,
Dispatch = require("nitro/middleware/dispatch").Dispatch;

var Mailrecieve = require('./root/mailrecieve').app;

exports.mailapp = Setup(Mailrecieve);
52 changes: 52 additions & 0 deletions src/root/mailaview.js
@@ -0,0 +1,52 @@
var db = require("google/appengine/ext/db");

var Request = require("nitro/request").Request,
redirect = require("nitro/response").Response.redirect;

var MimeMessage = require("google/appengine/ext/mimemessage").MimeMessage;

var logger = require("google/appengine/logging");

exports.GET = function(env) {
var params = env.params;
// 登録があればデータを引き出してそれを元にフォームを作らせる

var strKey = '';
var jmail = new MimeMessage(env);

if(params.key == undefined){
// リスト表示
var artTmp = new Array();
var attachments = jmail.getAttachments(10);
for(var i = 0; i<attachments.length; i++){
artTmp.push({
key: attachments[i].key(),
filename: attachments[i].filename,
type: attachments[i].contenttype
});
}

// テンプレートを使い保存されているデータのリストを表示
return {
data: {
key: params.key,
lists: artTmp
}
};
} else {
// データ表示
var attachment = jmail.getAttachment(params.key);
var {ByteArray} = require('binary');
var byteContent = new ByteArray(attachment.content.getBytes());

// テンプレートを使わないでコンテンツを表示
return {
status: 200,
headers: {
"Content-Type": attachment.contenttype,
"X-gae-key": params.key
},
body: [byteContent]
};
}
};
53 changes: 53 additions & 0 deletions src/root/mailrecieve.js
@@ -0,0 +1,53 @@
var Request = require("nitro/request").Request,
redirect = require("nitro/response").Response.redirect;

// ringo
var logger = require("google/appengine/logging");

// 作り中のメール受信ライブラリ
var MimeMessage = require("google/appengine/ext/mimemessage").MimeMessage;

// 実際に呼ばれるのはこれ。
exports.app = function(env) {
return exports.POST(env);
}

// .appから流されてこれが動く(本当は.app内で決め打ちしないものみたい(GETかもなので))
exports.POST = function(env) {
// paramsプロパティは読まれた(getされた)ときに作られる(queryParamsとpostParamsの結合もの)
// ringo/webapps/request.js
var params = env.params;

// 環境変数経由でhttpヘッダなどが見れる
/*
for(var item in env) {
logger.info("ENV> " + item + ":" + env[item]);
}
for(var item in params) {
logger.info("PRM> " + item + "^" + params[item]);
}
*/
var buffer = params["slopped"];
var mailBody = buffer.decodeToString("UTF-8");
logger.info("MIL> " + mailBody.length);
var jmail = new MimeMessage(mailBody);

if(jmail){
logger.info("mail-subject: " + jmail.getSubject());
var aryTmp = jmail.getParts();
if(aryTmp){
for(var i=0; i<aryTmp.length;i++){
logger.info("mail-part(" + i + "): " + aryTmp[i].getContent());
}
}
} else {
logger.info("mail: cannot found content!");
}

// 200番で返して受信完了にする
return {
status: 200,
headers: {"Content-Type": "text/html"},
body: ["xxx"]
}
};
11 changes: 11 additions & 0 deletions src/templates/mailaview.html
@@ -0,0 +1,11 @@
<html>
<body>
<h1>view with blob</h1>
<hr/>
{:reduce lists}
<li><a href="/mailaview?key={=key}">{=filename}</a> -> {=type}</li>
{:else}
<li>No articles found</li>
{/:reduce}
</body>
</html>

0 comments on commit 3073a43

Please sign in to comment.