You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

319 lines
10 KiB
Plaintext

using System;
using System.Data;
using BP.DA;
using BP.En;
using BP.Sys;
using BP.Web;
namespace BP.Cloud.OrgSetting
{
/// <summary>
/// 组织 属性
/// </summary>
public class OrgMailAttr : OrgAttr
{
#region 基本属性
//
public const string EmailHostSta = "EmailHostSta";
public const string SendEmailHost = "SendEmailHost";
public const string SendEmailPort = "SendEmailPort";
public const string SendEmailAddress = "SendEmailAddress";
public const string SendEmailPass = "SendEmailPass";
public const string SendEmailEnableSsl = "SendEmailEnableSsl";
#endregion
}
/// <summary>
/// 组织 的摘要说明。
/// </summary>
public class OrgMail : EntityNoName
{
#region 扩展属性
public int EmailHostSta
{
get
{
return this.GetValIntByKey(OrgMailAttr.EmailHostSta);
}
set
{
this.SetValByKey(OrgMailAttr.EmailHostSta, value);
}
}
public string SendEmailHost
{
get
{
return this.GetValStrByKey(OrgMailAttr.SendEmailHost);
}
set
{
this.SetValByKey(OrgMailAttr.SendEmailHost, value);
}
}
public int SendEmailPort
{
get
{
return this.GetValIntByKey(OrgMailAttr.SendEmailPort);
}
set
{
this.SetValByKey(OrgMailAttr.SendEmailPort, value);
}
}
public string SendEmailAddress
{
get
{
return this.GetValStrByKey(OrgMailAttr.SendEmailAddress);
}
set
{
this.SetValByKey(OrgMailAttr.SendEmailAddress, value);
}
}
public string SendEmailPass
{
get
{
return this.GetValStrByKey(OrgMailAttr.SendEmailPass);
}
set
{
this.SetValByKey(OrgMailAttr.SendEmailPass, value);
}
}
public bool SendEmailEnableSsl
{
get
{
return this.GetValBooleanByKey(OrgMailAttr.SendEmailEnableSsl);
}
set
{
this.SetValByKey(OrgMailAttr.SendEmailEnableSsl, value);
}
}
#endregion
#region 构造函数
/// <summary>
/// 组织
/// </summary>
public OrgMail()
{
}
public OrgMail(string no)
{
this.No = no;
this.Retrieve();
//如果使用全局的配置.
if (this.EmailHostSta == 0)
{
//邮件地址.
string emailAddr = BP.Difference.SystemConfig.GetValByKey("SendEmailAddress", null);
if (emailAddr == null)
emailAddr = "ccbpmtester@tom.com";
string emailPassword = BP.Difference.SystemConfig.GetValByKey("SendEmailPass", null);
if (emailPassword == null)
emailPassword = "ccbpm123";
this.SendEmailAddress = emailAddr;
this.SendEmailPass = emailPassword;
if (BP.Difference.SystemConfig.GetValByKeyInt("SendEmailEnableSsl", 1) == 1)
this.SendEmailEnableSsl = true; //经过ssl加密.
else
this.SendEmailEnableSsl = false;
this.SendEmailPort = BP.Difference.SystemConfig.GetValByKeyInt("SendEmailPort", 587); //使用的端口
this.SendEmailHost = BP.Difference.SystemConfig.GetValByKey("SendEmailHost", "smtp.gmail.com");
}
}
/// <summary>
/// 权限
/// </summary>
public override UAC HisUAC
{
get
{
UAC uac = new UAC();
if (WebUser.No.Equals("admin") == true)
{
uac.OpenAll();
uac.IsInsert = false;
uac.IsDelete = false;
return uac;
}
uac.IsInsert = false;
uac.IsDelete = false;
if (this.No.Equals(WebUser.OrgNo) == true)
{
uac.IsUpdate = true;
return uac;
}
//删除.
uac.IsInsert = false;
uac.IsDelete = false;
uac.IsView = false;
return uac;
}
}
/// <summary>
/// 重写基类方法
/// </summary>
public override Map EnMap
{
get
{
if (this._enMap != null)
return this._enMap;
Map map = new Map("Port_Org", "邮件服务器设置");
map.setEnType(EnType.App);
#region 字段.
/*关于字段属性的增加 */
map.AddTBStringPK(OrgMailAttr.No, null, "OrgNo", true, true, 1, 50, 90);
map.AddTBString(OrgMailAttr.Name, null, "简称", true, true, 0, 200, 130);
map.AddDDLSysEnum(OrgMailAttr.EmailHostSta, 0, "邮件服务器规则", true, true,
OrgMailAttr.EmailHostSta, "@0=使用系统全局设置@1=使用本组织设置@2=禁用");
map.AddBoolean(OrgMailAttr.SendEmailEnableSsl, false, "邮件服务器是否启用Ssl?", true, true);
map.AddTBString(OrgMailAttr.SendEmailHost, null, "EmailHost", true, false, 0, 50, 50, true);
map.AddTBString(OrgMailAttr.SendEmailPort, null, "EmailPort", true, false, 0, 50, 50, true);
map.AddTBString(OrgMailAttr.SendEmailAddress, null, "EmailAddress", true, false, 0, 50, 50, true);
map.AddTBString(OrgMailAttr.SendEmailPass, null, "EmailPass", true, false, 0, 50, 50, true);
#endregion 字段.
this._enMap = map;
return this._enMap;
}
}
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="email"></param>
/// <param name="title"></param>
/// <param name="doc"></param>
/// <returns></returns>
public string SendEmail(string mail, string mailTitle, string mailDoc)
{
BP.Cloud.OrgSetting.OrgMail orgEmail = new BP.Cloud.OrgSetting.OrgMail(BP.Web.WebUser.OrgNo);
//如果是禁用状态就返回过去.
if (orgEmail.EmailHostSta == 2)
return "info@禁用状态";
System.Net.Mail.MailMessage myEmail = new System.Net.Mail.MailMessage();
mailDoc = DataType.ParseText2Html(mailDoc);
string displayName = BP.Difference.SystemConfig.GetValByKey("SendEmailDisplayName", "科伦BPM");
myEmail.From = new System.Net.Mail.MailAddress(orgEmail.SendEmailAddress);
myEmail.To.Add(mail);
myEmail.Subject = mailTitle;
myEmail.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
myEmail.IsBodyHtml = true;
myEmail.Body = mailDoc;
myEmail.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
myEmail.IsBodyHtml = true;//是否是HTML邮件
myEmail.Priority = System.Net.Mail.MailPriority.High; // 邮件优先级
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
client.UseDefaultCredentials = true;
client.EnableSsl = orgEmail.SendEmailEnableSsl;
client.Credentials = new System.Net.NetworkCredential(orgEmail.SendEmailAddress,
orgEmail.SendEmailPass);
//赋值端口与主机.
client.Port = orgEmail.SendEmailPort; //使用的端口
client.Host = orgEmail.SendEmailHost;
object userState = myEmail;
//调用自带的异步方法
//client.Send(myEmail);
try
{
client.Send(myEmail);
//object userState = myEmail;
// client.SendAsync(myEmail, userState);
//client.SendMailAsync(myEmail);
return "发送成功.";
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
//client.SendMailAsync(myEmail);
// client.SendAsync(myEmail, userState);
}
/// <summary>
/// 获取集合
/// </summary>
public override Entities GetNewEntities
{
get { return new OrgMails(); }
}
#endregion 构造函数
}
/// <summary>
/// 组织s
// </summary>
public class OrgMails : EntitiesNoName
{
#region 构造方法
/// <summary>
/// 得到它的 Entity
/// </summary>
public override Entity GetNewEntity
{
get
{
return new OrgMail();
}
}
/// <summary>
/// 组织s
/// </summary>
public OrgMails()
{
}
#endregion 构造方法
#region 为了适应自动翻译成java的需要,把实体转换成List.
/// <summary>
/// 转化成 java list,C#不能调用.
/// </summary>
/// <returns>List</returns>
public System.Collections.Generic.IList<OrgMail> ToJavaList()
{
return (System.Collections.Generic.IList<OrgMail>)this;
}
/// <summary>
/// 转化成list
/// </summary>
/// <returns>List</returns>
public System.Collections.Generic.List<OrgMail> Tolist()
{
System.Collections.Generic.List<OrgMail> list = new System.Collections.Generic.List<OrgMail>();
for (int i = 0; i < this.Count; i++)
{
list.Add((OrgMail)this[i]);
}
return list;
}
#endregion 为了适应自动翻译成java的需要,把实体转换成List.
}
}