📄 mobilemailcommandhelper.cs
字号:
namespace Imps.Client.Core
{
using Imps.Client.Base;
using Imps.Client.Utils;
using Imps.Utils;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Threading;
using System.Xml;
public static class MobileMailCommandHelper
{
public const int DefaultMailCheckInterval = 0x708;
public const string GetAliasListSubmit = "<getalias><c>{0}</c><sids><sid id =\"{1}\"></sids></getalias>";
public const string GetContactsMobileAlias = "/pc/GetAliasList.aspx";
public const string GetMobileMailBoxBindInfoUri = "/pc/MobileMailBoxBindInfo.aspx?mobile_no={0}";
public const string GetUnReadMailNumUri = "/pc/GetUnReadMailNum.aspx";
public const string SendBindRequestUri = "/pc/SendBingRequest.aspx";
public const string SendCancelBindRequestUri = "/pc/SendCancelBingRequest.aspx";
public const string SendEmailUri = "/pc/SendEmail.aspx?sid={0}&c={1}";
internal static User tmpUser;
public static bool CheckMailStatus(User user)
{
if (user.MobileMailInfo.Mail_Status.get_HasValue())
{
int? nullable2 = user.MobileMailInfo.Mail_Status;
if (!((nullable2.GetValueOrDefault() == 1) && nullable2.get_HasValue()))
{
return true;
}
}
return false;
}
public static bool GetAliasList(ContactCollection contacts, User user)
{
bool flag;
if (user == null)
{
return false;
}
string emailAdapter = user.Configuration.SystemSetting.ServerUriSetting.EmailAdapter;
if (emailAdapter.EndsWith("/"))
{
emailAdapter = emailAdapter.Substring(0, emailAdapter.Length - 1);
}
string url = emailAdapter + "/pc/GetAliasList.aspx";
try
{
HttpWebRequest request = ConnectionFactory.CreateHttpWebRequest(url, user, true, true);
using (Stream w = request.GetRequestStream())
{
using (XmlTextWriter writer = new XmlTextWriter(w, Encoding.ASCII))
{
writer.WriteString("sids=");
string text = string.Empty;
lock (contacts.SyncRoot)
{
using (IEnumerator<Contact> enumerator = contacts.GetEnumerator())
{
while (enumerator.MoveNext())
{
Contact contact = enumerator.get_Current();
if (text == string.Empty)
{
text = contact.Uri.Id;
}
else
{
text = text + "," + contact.Uri.Id;
}
}
}
}
writer.WriteString(text);
}
}
Encoding.UTF8.GetBytes(url);
request.ContentType = "application/x-www-form-urlencoded; charset= utf-8";
using (HttpWebResponse response = ((HttpWebResponse) request.GetResponse()))
{
string xml;
Convert.ToInt32(response.StatusCode);
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream);
xml = reader.ReadToEnd();
reader.Close();
}
XmlDocument document = new XmlDocument();
document.LoadXml(xml);
XmlNode node = document.DocumentElement.SelectSingleNode("aliasesList");
if (node != null)
{
foreach (XmlNode node2 in node.SelectNodes("item"))
{
int? nullable = XmlHelper.ReadXmlAttributeInt32(node2, "sid");
if (nullable.get_HasValue())
{
string contactSet = XmlHelper.ReadXmlAttributeString(node2, "alias");
if (!string.IsNullOrEmpty(contactSet))
{
Contact contact2 = contacts.FindContactBySid(nullable.get_Value());
if (contact2 != null)
{
contact2.PersonalInfo.MobileMailAlias = new ContactInfoItem<string>(contactSet);
}
}
}
}
return true;
}
flag = false;
}
}
catch (WebException exception)
{
ClientLogger.WriteGeneral("获取手机邮箱联系人昵称", exception.Message + "\r\nUrl: " + url, 10);
flag = false;
}
catch (Exception exception2)
{
ClientLogger.WriteGeneral("获取手机邮箱联系人昵称", exception2.Message + "\r\nUrl: " + url, 10);
flag = false;
}
return flag;
}
public static int GetCheckMailInterval()
{
return 0x708;
}
public static bool GetMobileMailBoxBindInfo(User user)
{
if (user == null)
{
return false;
}
bool? isInRunningProvince = user.MobileMailInfo.IsInRunningProvince;
if (!isInRunningProvince.GetValueOrDefault() && isInRunningProvince.get_HasValue())
{
return false;
}
string emailAdapter = user.Configuration.SystemSetting.ServerUriSetting.EmailAdapter;
if (emailAdapter.EndsWith("/"))
{
emailAdapter = emailAdapter.Substring(0, emailAdapter.Length - 1);
}
string url = string.Format("/pc/MobileMailBoxBindInfo.aspx?mobile_no={0}", user.MobileNo);
try
{
url = emailAdapter + url;
using (HttpWebResponse response = ((HttpWebResponse) ConnectionFactory.CreateHttpWebRequest(url, user, false, true).GetResponse()))
{
if (response.StatusCode == HttpStatusCode.PartialContent)
{
user.MobileMailInfo.IsInRunningProvince = false;
user.MobileMailInfo.OnValueChange();
return true;
}
using (Stream inStream = response.GetResponseStream())
{
XmlDocument document = new XmlDocument();
document.Load(inStream);
XmlNode node = document.DocumentElement.SelectSingleNode("result");
if (node != null)
{
user.MobileMailInfo.Alias = XmlHelper.ReadXmlAttributeString(node, "alias");
user.MobileMailInfo.Postfix = XmlHelper.ReadXmlAttributeString(node, "postfix");
user.MobileMailInfo.Mail_Status = XmlHelper.ReadXmlAttributeInt32(node, "mail_status");
user.MobileMailInfo.Alias_Status = XmlHelper.ReadXmlAttributeInt32(node, "alias_status");
user.MobileMailInfo.Binding_Status = XmlHelper.ReadXmlAttributeInt32(node, "binding_status");
user.MobileMailInfo.Binding_direction = XmlHelper.ReadXmlAttributeInt32(node, "binding_direction");
if (user.MobileMailInfo.Alias == string.Empty)
{
user.MobileMailInfo.Alias = user.Sid.ToString();
}
user.MobileMailInfo.IsInRunningProvince = true;
user.MobileMailInfo.OnValueChange();
return true;
}
}
}
}
catch (WebException exception)
{
ClientLogger.WriteGeneral("获取手机邮箱信息", exception.Message + "\r\nUrl: " + url, 10);
int num = Convert.ToInt32(((HttpWebResponse) exception.Response).StatusCode);
switch (num)
{
case 400:
case 0x191:
case 500:
goto Label_0287;
}
string text3 = "获取手机邮箱信息,未知错误" + num.ToString();
}
catch (Exception exception2)
{
ClientLogger.WriteGeneral("获取手机邮箱信息", exception2.Message + "\r\nUrl: " + url, 10);
}
Label_0287:
return false;
}
public static bool GetUnReadMailNum(User user)
{
if (user == null)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -