【vte.cx 응용】 22. 통지 기능과 메일 송수신
이메일 전송과 같은 알림 기능과 결합하면 웹 애플리케이션이 더 대화형이 됩니다.
폴더 아래의 이벤트 알림 기능
폴더에 아래와 같이 rel="via"를 설정하는 것으로, 부하의 엔트리에 대한 갱신계의 조작(POST, PUT, DELETE)을 트리거에, 액션(email, webhook, websocket, push)을 실행하는 것 수 있습니다. (※ push는 mobilepush)
<link rel="via" type="email|webhook|websocket|push" title="POST|PUT|DELETE" />
이 기능을 사용하면 그림과 같이 공유 폴더에 데이터를 저장했음을 이메일로 알리는 등의 작업을 쉽게 구현할 수 있습니다. 메일 이외에도 Webhook, websocket, mobilepush 등을 설정할 수 있지만 원리는 동일합니다.
자세한 내용은 문서의 알림 기능을 참조하십시오.
메일 보내기
이벤트가 아닌 능동적으로 조치를 수행할 수도 있습니다.
이 섹션에서는 메일 전송 예에서 설명합니다.
메일 전송은
<link rel="via" type="email"/>
와 함께 POST하면 됩니다.title이 메일 제목, subtitle이 대상, summary가 본문입니다.
다음은 판매 오더 메일의 예입니다. 마지막으로 request.feed가 POST되면 메일이 전송됩니다.
var email = {};
email.title = '【〇〇商店】お申込み内容のご確認';
email.subtitle = entry.customer.customer_email;
email.summary = '〇〇商店をご利用いただきありがとうございます。\n' +
'お申込み内容を下記URLから画面でご確認ください。\n' +
'${RXID=/confirm.html}®istration_no='+entry.registration_no +'&uid='+uid+'\n\n' +
'【〇〇商店サポートデスク】\n' +
email.link = [];
email.link[0] = {};
email.link[0].___href="/sendmail/"+entry.registration_no;
email.link[0].___rel="self";
email.link[1] = {};
email.link[1].___type="email";
email.link[1].___rel="via";
request.feed.entry.push(email);
본문에 주문 내용을 확인할 수 있는 화면의 URL이 포함되어 있습니다만, 이것은 RXID라고 하는 원타임 패스워드를 이용하는 것으로 실현하고 있습니다. 자세한 내용은 RXID을 참조하십시오.
그건 그렇고, RXID는 세션을 생성하지만 Linktoken을 사용하면 세션을 생성하지 않고보다 안전하게 액세스 할 수 있습니다.
메일 발송 설정
/_settings/properties의 rights 태그에 메일 전송을 위한 구성 정보를 설명합니다.
다음은 gmail을 사용하는 경우의 예입니다.
구성 정보는 20일째을 참조하십시오.
[email protected]
_mail.from.personal=foo bar,inc
_mail.password=xxxxxx
_mail.transport.protocol=smtps
_mail.smtp.host=smtp.gmail.com
_mail.smtp.port=587
_mail.smtp.auth=true
_mail.smtp.starttls.enable=true
메일 수신
서버 측 JavaScript를 사용하면 메일 전송뿐만 아니라 수신도 가능합니다.
자세한 내용은 메일 수신을 참조하십시오.
다음은 메일 수신 샘플 프로그램입니다. Gmail을 사용한다고 가정합니다.
recvmail.js (서버 측 JavaScript)
module.exports = function() {
var settings = new Object();
settings['mail.pop3.host']='pop.gmail.com';
settings['mail.pop3.port']='995';
settings['mail.pop3.connectiontimeout']='60000';
settings['mail.pop3.socketFactory.class']='javax.net.ssl.SSLSocketFactory';
settings['mail.pop3.socketFactory.fallback']='false';
settings['mail.pop3.socketFactory.port']='995';
settings['username']='[email protected]';
settings['password']='xxxxx';
var result = ReflexContext.getMail(settings);
if (result.feed.entry) {
var request = { 'feed' : { entry : [] }};
for(var i=0;i<result.feed.entry.length;i++) {
var ids = ReflexContext.addids('/registration',1); // 採番
var entry = {};
entry.registration_no = ("000000"+ids).slice(-7);
entry.link = [];
entry.link[0] = {};
entry.link[0].___href='/history/'+entry.registration_no;
entry.link[0].___rel='self';
entry.link[1] = {};
entry.link[1].___href='/registration/'+entry.registration_no;
entry.link[1].___rel='alternate';
entry.status = 'received';
var title = result.feed.entry[i].title;
entry.customer = {};
var from = result.feed.entry[i].subtitle;
if (from.indexOf('<')>=0) {
from = from.slice(from.indexOf('<')+1,from.indexOf('>'));
}
entry.customer.customer_email = from;
entry.content = {};
entry.content.___type=result.feed.entry[i].content.___type;
entry.content.______text = result.feed.entry[i].content.______text;
request.feed.entry.push(entry);
}
ReflexContext.post(request);
ReflexContext.out('{ "result" : '+result.feed.entry.length+' }');
}else {
ReflexContext.out('{ "result" : 0 }');
}
};
오늘은 이것 이상입니다.
내일은 서버 측 자바 스크립트를 사용하여 엑셀 출력 방법이 될 것입니다.
그럼.
Reference
이 문제에 관하여(【vte.cx 응용】 22. 통지 기능과 메일 송수신), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/stakezaki/items/86fea0280ea183684042텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)