お世話になっております
下記URLを参考にSendGrid APIを使ったメール送信機能を作成し、
メールの送信まで実現することができました。
SendGrid API を使ってメールを送信するプラグインを作ってみよう - cybozu developer network
しかし、CC、BCCを設定した場合、
カンマ区切りではなく1つのメールアドレスのみ指定するとエラーとなってしまいます。
CC、BCCを設定しない
もしくはカンマ区切りで複数のメールアドレスを指定すると正常に送信され、
メールアプリにも実際にCC欄に指定した値が設定できていることを確認しています。
恐らくdesktop.jsの if (cc) { … の部分が原因かと思いますが
ここの記述はカンマ区切りの文字列が入ってきた場合は正常に処理できるので
カンマなしの1つのメールアドレスだった場合の時
desktop.jsにはどのような記述でCC、BCCを設定すれば良いのか
ご教示頂けますでしょうか。
/*
* desktop.js
* SendGrid for kintone
* Copyright (c) 2015 Cybozu
*
* Licensed under the MIT License
* https://opensource.org/license/mit/
*/
((PLUGIN_ID) => {
'use strict';
window.kintonePlugin = {};
window.kintonePlugin.sendgrid = {
sendMail: (to, cc, bcc, mailFrom, subject, text, html) => {
const data = {
personalizations: [
{
to: [
{
email: to
}
],
subject: subject
}
],
from: {
email: mailFrom
},
content: [
{
type: 'text/plain',
value: text
}
]
};
if (cc) {
data.personalizations[0].cc = [({email: cc})];
}
if (bcc) {
data.personalizations[0].bcc = [({email: bcc})];
}
if (html) {
data.content.push({
type: 'text/html',
value: html
});
}
const url = 'https://api.sendgrid.com/v3/mail/send';
return kintone.plugin.app.proxy(PLUGIN_ID, url, 'POST', {'Content-Type': 'application/json'}, data)
.then((args) => {
const body = args[0];
const status = args[1];
if (status !== 202) {
throw new Error();
} else {
return body;
}
}).catch((err) => {
throw new Error('メール送信に失敗しました');
});
}
};
})(kintone.$PLUGIN_ID);
/*
* kintoneのJavaScript / CSSでカスタマイズに設定しているjsファイル
*/
(() => {
'use strict';
////////////////////////////////////////////////////////////
// 初期化処理(レコード詳細画面を表示した後)
////////////////////////////////////////////////////////////
var createShowEcents = [
'app.record.create.show',
'mobile.app.record.create.show'
];
kintone.events.on(createShowEcents, function(event) {
// 送信者欄にログインユーザーのメールアドレスを自動入力
event.record.FROM.value = kintone.getLoginUser().email;
return event;
});
////////////////////////////////////////////////////////////
// 保存ボタン押下後
////////////////////////////////////////////////////////////
var submitSuccessEvents = [
'app.record.create.submit',
'app.record.edit.submit'
];
// レコード登録時にメールを送信
kintone.events.on(submitSuccessEvents, (event) => {
// 必須チェック
if (!event.record.FROM.value || !event.record.TO.value || !event.record.SUBJECT.value || !event.record.BODY.value) {
// 必須エラー
event.error = '* 必須項目が未入力です。';
return event;
} else {
if(window.confirm('メールが送信されます。\r\n送信後の取り消しは出来ませんがよろしいでしょうか?')){
// OK押下時、保存処理&メール送信プラグインを実行
return kintonePlugin.sendgrid.sendMail(
event.record.TO.value,
event.record.CC.value,
event.record.BCC.value,
event.record.FROM.value,
event.record.SUBJECT.value,
event.record.BODY.value,
null
)
.then((resp) => {
return event;
}).catch((err) => {
event.error = err.message;
return event;
});
} else {
// キャンセル押下時、保存処理をキャンセルする
return false;
}
}
});
})();