呼之欲出 WebMail 開發手記 (八) WebService
(對不住大家了,這幾天公司專案太忙,加上身體不適,有幾天沒有來更新了。)
我們需要做兩個 WebService,一個用來接收郵件,一個用來傳送郵件:
- Receiver.asmx
- Sender.asmx
然後在 WebService 中各新增一個方法 Start 用來啟動收發執行緒。因為我們需要實時獲取收發資訊,所以我們把物件儲存到 Session 中,這樣方便實時返回當前執行緒進行到什麼程式,有些什麼狀態等:
[WebMethod(EnableSession = true)]
public string[] Start() {
HttpContext context = HttpContext.Current;
MailThread mail = null;
object mailObj = context.Session[MailHelper.POP3Name];
if (mailObj != null) {// 是否已經存在
mail = (MailThread)mailObj;
}
else {// 建立新的執行緒
mail = new MailThread();
context.Session.Add(MailHelper.POP3Name, mail);
mail.ReceiveStart();
}
if (mail.Pop3State >= 2) {// 接收完就不要了
mail.ReceiveStop();
context.Session.Remove(MailHelper.POP3Name);
}
return new string[] { mail.Pop3State.ToString(), mail.Pop3Mail, mail.Pop3Message };
}
[WebMethod(EnableSession = true)]
public string[] Start() {
HttpContext context = HttpContext.Current;
MailThread mail = null;
object mailObj = context.Session[MailHelper.SMTPName];
if (mailObj != null) {// 是否存在
mail = (MailThread)mailObj;
}
else {// 建立新的執行緒
mail = new MailThread(isstart);
context.Session.Add(MailHelper.SMTPName, mail);
mail.SendStart();
}
if (mail.SmtpState >= 2) {// 傳送完就不要了
mail.SendStop();
context.Session.Remove(MailHelper.SMTPName);
}
return new string[] { mail.SmtpState.ToString(), mail.SmtpMail, mail.SmtpMessage };
}
好了,WebService 很簡單。我們再來看看怎麼呼叫:
首先向 Header.aspx 中新增 AJAX 控制元件 ScriptManager,然後新增兩個 Service 引用:
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/Receiver.asmx" />
<asp:ServiceReference Path="~/Sender.asmx" />
Services>
asp:ScriptManager>
再新增兩個實時資訊欄:
<div id="POP3Div" style="display: none;">郵件接收資訊欄div>
<div id="SMTPDiv" style="display: none;">郵件傳送資訊欄div>
<div id="SMTPDiv" style="display: none;">郵件傳送資訊欄div>
剩下的就是如何呼叫 WebService 向這兩個資訊欄中填充資料:
<script type="text/javascript" language="javascript">
function receiveMail(){
Receiver.Start(onPop3Success, onPop3Error);
}
function onPop3Success(result){
var pd = $get("POP3Div");
if(result[0]=="1"){
pd.style.display = "block";
pd.innerHTML = result[1]+result[2];
}else{
pd.style.display = "none";
}
}
function sendMail(){
Sender.Start(onSmtpSuccess, onSmtpError);
}
function onSmtpSuccess(result){
var pd = $get("SMTPDiv");
if(result[0]=="1"){
pd.style.display = "block";
pd.innerHTML = result[1]+result[2];
}else{
pd.style.display = "none";
}
}
function onPop3Error(error){
var pd = $get("POP3Div");
pd.style.display = "block";
pd.innerHTML = error.get_message();
}
function onSmtpError(error){
var pd = $get("SMTPDiv");
pd.style.display = "block";
pd.innerHTML = error.get_message();
}
function startThread(){
receiveMail();
sendMail();
}
// 1秒鐘查一次,可以根據需求調整
window.setInterval("startThread();", 1*1000);
</script>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-609238/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 十九、.net core使用SoapCore開發webservice介面,以及使用HttpClientFactory動態訪問webservice介面WebHTTPclient
- (八)列表頁開發
- 短視訊開發app,webservice自定義加入攔截器APPWeb
- FFmpeg開發筆記(八)Linux交叉編譯Android的FFmpeg庫筆記Linux編譯Android
- 阿里巴巴java開發手冊筆記阿里Java筆記
- ASP.NET 網頁- WebMail 幫助器簡介ASP.NET網頁WebAI
- Compose 呼之欲出,Flutter 展露鋒芒Flutter
- 微信公眾號支付開發手記(node)
- webservice介面呼叫Web
- SpringBoot+webserviceSpring BootWeb
- 細說WebServiceWeb
- webservice簡介Web
- WebService XML SoapFormatterWebXMLORM
- 阿里巴巴Android開發手冊V1.0.0隨手筆記阿里Android筆記
- Hi3516開發筆記(八):Hi3516虛擬機器交叉開發環境搭建配置QtCreator筆記虛擬機開發環境QT
- 手遊《奧林劈圖》的開發日記(一)
- 手遊《奧林劈圖》的開發日記(二)
- 手遊《奧林劈圖》的開發日記(三)
- 阿里巴巴Java開發手冊閱讀筆記阿里Java筆記
- 自動化測試系統開發手記(一)
- iOS混合開發庫(GICXMLLayout)八、熱更新iOSXML
- 什麼是webserviceWeb
- Webpack4 學習筆記八 開發環境和生產環境配置Web筆記開發環境
- FFmpeg開發筆記(八):ffmpeg解碼音訊並使用SDL同步音訊播放筆記音訊
- 閱讀《阿里巴巴Android開發手冊1.0.1》筆記阿里Android筆記
- 預設文件解析--手機web app開發筆記(二)WebAPP筆記
- Android開發 - 掌握ConstraintLayout(八)障礙線(Barrier)AndroidAI
- 簡化 Django 開發的八個 Python 包DjangoPython
- 我做遊戲開發這八年遊戲開發
- 開發一個好專案:八、建立viewView
- springboot2.0整合webserviceSpring BootWeb
- C#釋出WebServiceC#Web
- webapi建立和呼叫WebServiceWebAPI
- 手撕Flutter開發Flutter
- iOS開發-手勢iOS
- Docker 學習筆記(第八集:使用 docker-compose 搭建 php 開發環境 )Docker筆記PHP開發環境
- 開發記錄
- 低開開發筆記(八): 低程式碼編輯器實現撤銷回退(命令模式,防抖處理)筆記模式
- PHP 手冊 (類與物件) 學習筆記八:範圍解析操作符 ( :: )PHP物件筆記