iT邦幫忙

0

利用javascript讀取outlook信件內文

-------------更新------------
https://www.codeproject.com/Tips/863192/Reading-Outlook-Emails-Contents-using-JavaScript
這個我有試過,但不知道為何照他的方法去做之後,我還是沒辦法顯示出內容
想要問一下,我要改動的部分是不是這些:
1.
if(sampleFolder.Name.indexOf("Sample")>=0)
Sample是不是要改成要讀取的信件的資料夾?
2.
strURL = "http://server/page/sample.aspx"
這個是要改成我的網路路徑嗎?
3.
Set oApp = CreateObject("InternetExplorer.Application")
這個需要改嗎?
再麻煩各位大神為我解惑了

想問各位大神有沒有什麼方法能夠達成這樣的目的
重要上要能夠讀取包信件內容 希望能夠用JavaScript 去達成

ccutmis iT邦高手 9 級 ‧ 2019-04-29 14:07:34 檢舉
用javascript感覺有難度,用python"似乎"可以,上google搜尋"python outlook read email",我用”似乎”是因為沒在用outlook很久了...
froce iT邦大師 3 級 ‧ 2019-04-29 14:14:07 檢舉
https://www.npmjs.com/package/win32com
node.js應該也可以做啦,只是沒用過。
---
剛剛看了一下,這個套件還很初期,不建議用。
ccutmis iT邦高手 9 級 ‧ 2019-04-29 14:30:00 檢舉
用python call outlook.api就能解決問題 ; 用node.js就變成二個問題了
0
ccutmis
iT邦高手 9 級 ‧ 2019-04-29 16:32:48
最佳解答

https://www.codeproject.com/Tips/863192/Reading-Outlook-Emails-Contents-using-JavaScript
這個網頁內容依樣畫葫蘆是行不通的,
因為它在introduction就有說到:
這個範例是要把特定的mail搬到Sharepoint2007上面轉成列表形式,
樓主沒有同樣環境照著同樣步驟做怎能不出錯?
不過Step3是能參考,它會把目前的outlook裡的"Sample"資料夾內容表列出來,
我這邊沒有安裝outlook所以只能給您一些建議的測試方向,例如:

1.在桌面新增一個文字文件並命名為"read_mail.hta"
2.以記事本開啟read_mail.hta並貼入下列源碼:

<HTA:Application ID="read_mail" Applicationname="read_mail" scroll="yes" icon="" singleinstance="yes">
<html><head><meta charset="utf-8">
<script>
function PopulateTable(){
	var objOutlook = new ActiveXObject("Outlook.Application");
	var session = objOutlook.Session;
	for(var folderCount = 1;folderCount <= session.Folders.Count; folderCount++){
		var folder = session.Folders.Item(folderCount);
		if(folder.Name.indexOf("Mailbox - ")>=0){
			for(var subFolCount = 1; subFolCount <= folder.Folders.Count; subFolCount++)
			{
				var sampleFolder = folder.Folders.Item(subFolCount);
				if(sampleFolder.Name.indexOf("Sample")>=0){
					for(var itmCount = 1; itmCount <= sampleFolder.Items.Count; itmCount++){
						var itm = sampleFolder.Items.Item(itmCount);
						if(!itm.UnRead)
							continue;
						var sentBy = itm.SenderName;
						var sentDate = itm.SentOn;
						var receivedBy = itm.ReceivedByName;
						var receivedDate = itm.ReceivedTime;
						var subject = itm.ConversationTopic;
						var contents = itm.Body;

						var tbl = document.getElementById('tblContents');
						if(tbl){
							var tr = tbl.insertRow(tbl.rows.length);
							if(tbl.rows.length%2 != 0)
							tr.className = "alt";

							var tdsentBy = tr.insertCell(0);
							var tdsentDate = tr.insertCell(1);
							var tdreceivedBy = tr.insertCell(2);
							var tdreceivedDate = tr.insertCell(3);
							var tdsubject = tr.insertCell(4);
							var tdcontents = tr.insertCell(5);
						
							tdsentBy.innerHTML = sentBy;
							tdsentDate.innerHTML = sentDate;
							tdreceivedBy.innerHTML = receivedBy;
							tdreceivedDate.innerHTML =receivedDate;
							tdsubject.innerHTML = subject;
							tdcontents.innerHTML = contents;
						}
						itm.UnRead = false;
					}
					break;
				}
			}
			break;
		}
	}
	return;
}
</script></head>
<body>
<div id="divResult">
<input type="button" value="Read" onclick="PopulateTable();" /><br />
	<table cellpadding="3" cellspacing="3" border="1" id="tblContents" >
		<tr>
			<th style="width:100px;">Sent By</th>
			<th style="width:80px;">Sent on</th>
			<th style="width:80px;">Recived By</th>
			<th style="width:75px;">Recived on</th>
			<th style="width:75px;">Subject</th>
			<th style="width:200px;">Content</th>
		</tr>
	</table>
</div>
</body></html>

並存檔。
3.左鍵點擊兩下read_mail.htm 試試。(結果如附圖所示)
ps."Mailbox - "及"Sample"字串請依實際情況修改,我這邊沒法測試行不行,祝您好運~https://ithelp.ithome.com.tw/upload/images/20190429/200285749YS3jdAUq7.png

0
dragonH
iT邦大師 1 級 ‧ 2019-04-29 14:10:53

官方教學

這感覺應該是你要找

我沒有試過

因為我也沒在使用outlook

看更多先前的回應...收起先前的回應...
小魚 iT邦大師 1 級 ‧ 2019-04-29 14:16:16 檢舉

還有這樣的喔,
有空研究看看..

dragonH iT邦大師 1 級 ‧ 2019-04-29 14:19:05 檢舉

我原本也以為至少要用nodejs之類的後端來弄
後來看到有獨立的js分類才發現純js或許也能達到目的

ccutmis iT邦高手 9 級 ‧ 2019-04-29 14:25:18 檢舉

...before you begin you'll need to have Node.js installed.

這個教學只能開網路郵件,如果你已是桌面版的鐵定不行
建議看這邊的範例,我沒TRY過,還有如果PST有加密,那 .... 應該是不行的
https://www.codeproject.com/Tips/863192/Reading-Outlook-Emails-Contents-using-JavaScript

dragonH iT邦大師 1 級 ‧ 2019-04-29 14:36:07 檢舉

ccutmis
我看了一下 他會說要nodejs應該是為了要部屬這些靜態網頁
github上說可以部屬到任何server

ccutmis iT邦高手 9 級 ‧ 2019-04-29 14:49:06 檢舉

用python call outlook.api就能解決問題 ; 用node.js或任何server就變成二個問題了,這個是我想說的重點:D

froce iT邦大師 3 級 ‧ 2019-04-29 14:54:07 檢舉

問題是他問的是用JS啊。回答node.js的方案比較正常吧。XD

ccutmis iT邦高手 9 級 ‧ 2019-04-29 15:10:10 檢舉

/images/emoticon/emoticon01.gif

窮嘶發發發
這個我有試過,但不知道為何照他的方法去做之後,我還是沒辦法顯示出內容
想要問一下,我要改動的部分是不是這些:
1.
if(sampleFolder.Name.indexOf("Sample")>=0)
Sample是不是要改成要讀取的信件的資料夾?
2.
strURL = "http://server/page/sample.aspx"
這個是要改成我的網路路徑嗎?
3.
Set oApp = CreateObject("InternetExplorer.Application")
這個需要改嗎?
再麻煩各位大神為我解惑了

dragonH iT邦大師 1 級 ‧ 2019-04-29 15:29:53 檢舉

1.先把"sampleFolder.Name" console.log出來看是什麼東西, 搞不好前置步驟就沒弄好
2.3對VB不熟 留給別人回答

0
小魚
iT邦大師 1 級 ‧ 2019-04-29 14:12:29

javascript是前端語言,
python等是後端語言.
前端語言應該不能讀電腦檔案,
除非你是用上傳的方式,
(不過就算用上傳的方式要解析應該也不好處理)

froce iT邦大師 3 級 ‧ 2019-04-29 14:15:18 檢舉

有node.js啊。
這年代你真的想用的話,你可以前後端都用js寫。
不過我是不會想折磨自己啦。我還是比較熟python。

小魚 iT邦大師 1 級 ‧ 2019-04-29 14:17:06 檢舉

我是沒在用node.js,
也沒去了解過它的原理...

我要發表回答

立即登入回答