站内信:网站运转人士能够向单个(单发)或七个(群发)客商推送信息,站内信其实正是向数据库中插入一条条记下。

  前日,发表了博客“群发“站内信”的实现”,获得大面积网络老铁呼应,在这里表示多谢。

  在好多网址体系(如CMS系统,SNS系统等),皆有“站内信”的功能。

率先、导入命名空间:

数据库设计:

message【站内信发件箱表】{每一回运行职员发送一条站内信(无论是单发或是群发)就能在发件箱表中增多一条记下}

 永利集团304手机版 1

 表字段:ID、SendID、RecID、MessageID、Statue、DateTime

messagetext【站内信发件内容表】{每一遍运转人士发送站内信的剧情就能够保留到站内信发件内容表中}

永利集团304手机版 2

表字段:ID、Title、Message、PData

messageuserinfo【站内信接收箱表】{顾客站内信收件箱}

永利集团304手机版 3

表字段:ID、SendID、RecID、MessageID、Statue、DateTime

 

  看了网络朋友的留言。开掘大家对文中的前三种景况未有何样纠纷,对第三种方案纠纷颇多。笔者在那再把作者的第三种状态详细的论述一下,和豪门调换。另外,本文的主题首要位于“群发”(也便是点到面),至于“单发”(点到点),不在本文的座谈之列。

  “站内信”分化于电子邮件,电子邮件通过特意的邮件服务器发送、保存。而“站内信”是系统内的信息,说白了,“站内信”的贯彻,正是通过数据库插入记录来实现的。

 代码如下 复制代码
using System.Net.Mail;
 

事情逻辑:在营业职员发送了一条站内信后,当客商再度登录时就能够刷新历史站内信,而那多少个不活跃的客户就不会更新站内信。

场所:启迷人士向某些(单发)或八个(群发)客户发送站内信

增多发件内容:向messagetext站内信发件内容表中增加一条内容记录
{这里先增添messagetext站内信发件内容表发生一条记下,前边message站内信发件箱表中才有MessageID能够提到}

增添发件人发件记录:向message站内信发件箱表中加多一条发送记录
{备注:假如是单发RecID则是钦点客商的UserID,借使是群发RecID则是0。(0代表具备客商)}

客户登入时刷新与团结有关的站内信,并将数据增加到messageuserinfo站内信接收箱表

  1. 询问条件:【发件人不是温馨】何况【收件人是和谐也许收件人是全数人】况且【自身收件表中不设有的笔录】

    select m.id from Message as m where (m.recid='所有人' or m.recid='自己的ID') and m.sendid!='自己的ID' and m.MessageID not in (select u.messageid from MessageUserInfo as u  where u.recid='自己的ID')
    

      

  2. 将相关的站内信新闻增加到自身的收件表中,并标识未读。

    1.   将地方【查询条件】中查询出来的id消息用做查询message站内信发件箱表的条件

      select * from message  where id=上面的m.id
      

        

    2. 将赢获得message站内信发件箱表多少增进到messageuserinfo站内信接收箱表

  3. 查询出团结的站内信记录

    select u.ID,u.RecID,m.Title,m.Message,u.Statue,m.PDate from messageuserinfo as u join messagetext as m on u.MessageID = m.ID where u.RecID='自己的ID'
    

    永利集团304手机版,  

     

  先看看,第三种情景。站内的客商是大量级的(上百万)。

  “站内信”有多少个基本功用。一:点到点的新闻传送。顾客给客商发送站内信;管理员给客户发送站内信。二:点到面包车型地铁音讯传送。管理员给客商(钦点满足某一口径的顾客群)群发音讯。点到点的音信传送很轻易达成,本文不再详述。下边将依照不一致的情事,来说说“站内信”的群发是怎样落实的。

概念发送电子邮件的艺术[网络海人民广播广播台湾大学比不上的,能够相比着看一下,WinForm的也适用]:

  经过考虑,表设计校勘如下

  第一种情景,站内的客户是为数非常少品级的。(几十到众多)

 代码如下 复制代码
/// <summary>
/// 发送电子邮件
/// </summary>
/// <param name=”MessageFrom”>发件人邮箱地址</param>
永利集团304登录,/// <param name=”MessageTo”>收件人邮箱地址</param>
/// <param name=”MessageSubject”>邮件核心</param>
/// <param name=”MessageBody”>邮件内容</param>
/// <returns></returns>
public bool Send(MailAddress MessageFrom, string MessageTo, string
MessageSubject, string MessageBody)
{
 MailMessage message = new MailMessage();
 message.From = MessageFrom;
 message.To.Add(MessageTo); //收件人邮箱地址能够是多少个以落到实处群发
 message.Subject = MessageSubject;
 message.Body = MessageBody;
 message.IsBodyHtml = true; //是否为html格式
 message.Priority = MailPriority.Normal; //发送邮件的先行品级
 SmtpClient sc = new SmtpClient();
 sc.Host = “smtp.qq.com”; //内定发送邮件的服务器地址或IP
 sc.Port = 25; //钦赐发送邮件端口
 //钦点登入服务器的顾客名和密码(发件人的邮箱登陆密码)
 sc.Credentials = new System.Net.NetworkCredential(“【发件箱地址】”,
“【www.111cn.net发件箱密码】”);
 try
 {
  sc.Send(message); //发送邮件
 }
 catch
 {
  return false;
 }
 return true;
}
 

 

  这种情景,由于客户的数码少之又少,由此,无需过多的思虑数据库的优化,选取精炼的表格,对系统的设计也来的简练,前期也正如便于保险,是首屈一指的用空间换时间的做法。

义发送电子邮件的方式

  表名:Message

  数据库的设计如下:表名:Message

调用定义的主意,完毕出殡和下葬邮件:

  ID:编号;RecID:接受者编号;MessageID:站内信编号;Statue:站内信的查阅处境;

  ID:编号;SendID:发送者编号;RecID:接受者编号(如为0,则接受者为全部人);Message:站内信内容;Statue:站内信的查阅情状;PDate:站内信发送时间;

 代码如下 复制代码
/// <summary>
/// 发送邮件
/// </summary>
/// <param name=”sender”></param>
/// <param name=”e”></param>
protected void ForMail(string name, string mail)
{
 try
 {
  //string email = txtemail.Text.Trim();
  MailAddress MessageFrom = new MailAddress(“【发件箱地址】”);
//发件人邮箱地址
                  string MessageTo = mail; //收件人邮箱地址
  string MessageSubject = bs.HtmlEncode(邮件大旨);
  //邮件内容
(日常是四个网站链接,生成随机数加验证id参数,点击去网址求证。)”;
  string MessageBody = “” + content1.Value.Trim() + “”;
  if (Send(MessageFrom, MessageTo, MessageSubject, MessageBody))
  {
   //Response.Write(“发送邮件成功”);
  }
  else
  {
   //Response.Write(“发送邮件战败”);
  }
 }
 catch
             {
  //ClientScript.RegisterStartupScript(ClientScript.GetType(),
“myscript”, “<script>alert(‘顾客音讯删除退步’)</script>”);
 }
}
 

  表名:MessageText 

  若是,某一个管理员要给持有人发站内信,则先遍历顾客表,再依照顾客表中的具有顾客依次将站内信插入到Message表中。那样,假使有五17个客商,则群发一条站内信要实行56个插入操作。这几个了然上比较轻巧,相比较赔本空间。

调用方法发送邮件
 

  ID:编号;SendID:发送者编号;Message:站内信的剧情;PDate:站内信发送时间;

  某贰个客商登入后,查看站内信的言语则为:

不等邮箱的smtp地址都不等同、要求比如QQ的是smtp.qq.com、163的是smtp.163.com