mailtoを使えば、a href~で簡単にリンク作れるんですけども、
リンクにカーソルを合わせたとき左下に~の部分が全部出てしまうんですよね。
メールアドレスだけならまだしも、本文がずらーっと出るのはダサいので嫌です!
よって、考えた手段がこちら
①txtから文章を読み込んで(python)
②読み込んだ文章とmailto使ってメーラー起動リンクを作成(javascript)
Djangoでこれを実現するには画面側からpython側にイベントを送らないといけないと思ったので、
javascriptやAjaxを調べつつチャレンジ。
javascript
こちらを参考に、クリックした箇所に対してメーラー起動リンクを作成するようなjsを書きます。
javascriptとはコンソールログで遊んだ程度の付き合いしかありません。
Django側からデータ受け取るためにAjax使ってますが、
こちらからは特に何も送ってないので変な使い方してる気はします。
function sendmail() {
var is = this;
$.ajax({
url: "read_mail_text/",//Djangoのurlsに書いてあるパス
type : 'POST',
dataType: 'json',
data : {app: null},//空っぽのjsonを送信
cache: false,
// 成功
success: function(data) {
//中身確認
console.log(data["ac"]);
//受け取った値からmailtoでメーラー起動用のリンク作成
is.location.href = "mailto:" + data["ac"] + "?subject=" + data["sub"] + "&body=" + data["text"];
},
// エラー処理
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Error : " + errorThrown);
}
});
}
Django
やることは
①Ajaxから呼び出されて
②txtから文章を読み込んで
③jsonを返す
……かと
①Ajaxにお呼ばれするために(Django)
path("read_mail_text/",[アプリ名].read_mail_text,name="read_mail_text")
こんな感じでパスを書いておきます。
敢えて書く必要もない気もしますが、一応メモ。
②txtの中身
最終的にmailtoに組み込むのでそれを準拠に、一行ずつ変数指定しました。
txtの中身は以下のような感じです
ac = "V3 <damidami@v3.mask>"; //送り先のアドレス
sub = "年賀状";//件名
text = "新年おめでとう。%0D%0A%0D%0A今年こそ、裏切り者は殺す。%0D%0AADKデストロンを代表して、ヨロイ元帥。";//本文
エスケープシーケンスのタグでも改行が出来なかった気がするので、改行コードがギエピーしてます。
③javascriptにjsonを返す(Django)
Ajaxのリクエストを受け取ってるので(たぶん)、引数にrequestを入れます。
現在地が分からなかったので、相対パス使ってます。
def read_mail_text(self,request):
#txt読込→変数に入れる
path =os.path.dirname(__file__)+"\\mail_text.txt"
myfile =File(open(path, 'rb'))
txt=[]
for t in myfile:
txt.append(t.decode('utf-8'))
#json形式で返す
return JsonResponse({'ac':txt[0],'sub':txt[1],'text':txt[2]})
完成
自分の環境で動きましたのでひとまず、タイトルの内容はクリア。
汎用性が低いのがネックですね。