快速业务通道

在ASP.NET中进行消息处理(MSMQ) 二

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-19
    CreateQueue(); 15    SendMessage(info); 16  } 17}

CreateQueue和SendMessage这两个方法完成消息队列的创建和发送信息到队列,MailInfo类封装的是邮件的详细信息(既邮件的属性),详细定义如下: 

封装了邮件的属性

1public class MailInfo
2{
3  public MailInfo()
4  {
5   
6  }
7
8  private string _Title;
9  public string Title
10  {
11    get { return _Title; }
12    set { _Title = value; }
13  }
14
15  private string _Content;
16
17  public string Content
18  {
19    get { return _Content; }
20    set { _Content = value; }
21  }
22  private string _Sender;
23
24  public string Sender
25  {
26    get { return _Sender; }
27    set { _Sender = value; }
28  }
29  private string _SenderPwd;
30
31  public string SenderPwd
32  {
33    get { return _SenderPwd; }
34    set { _SenderPwd = value; }
35  }
36  private string _StmpServer;
37
38  public string StmpServer
39  {
40    get { return _StmpServer; }
41    set { _StmpServer = value; }
42  }
43  private string _ReceiveAddress;
44
45  public string ReceiveAddress
46  {
47    get { return _ReceiveAddress; }
48    set { _ReceiveAddress = value; }
49  }
50}

转到邮件管理端(MailServer.aspx),他负责从消息队列里读取出邮件信息并把此邮件发送到目标地址去。其实现很简单,说直接点他也就是完成了两项操作(从队列读消息、将消息发送到目的邮箱),从队列读取消息的代码如下:

1/**//// <summary>
2/// 连接消息队列并从队列中接收消息
3/// </summary>
4private MailInfo ReceiveMessage()
5{
6  MailInfo info = null;
7  //连接到本地队列
8  MessageQueue myQueue = new MessageQueue(".\\private$\\myMailQueue");
9  myQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(MailInfo) });
10  try
11  {
12    if (myQueue.Transactional)
13    {
14      MessageQueueTransaction myTransaction = new MessageQueueTransaction();
15      //启动事务
16      myTransaction.Begin();
17      //从队列中接收消息
18      Message myMessage = myQueue.Receive(myTransaction);
19      info = myMessage.Body as MailInfo; //获取消息的内容
20      myTransaction.Commit();
21      return info;
22    }
23
24  }
25  catch (MessageQueueException e)
26  {
27    this.tdError.InnerText = e.Message;
28  }
29  return info;
30}

该方法(ReceiveMessage)返回的是从队列里读取到的邮件信息,本示例中只是做了读一条信息的实现,如果要把队列里的全部信息读出并发送到目的邮箱,可以参考我前面所介绍的相关知识点来实现。得到了邮件的详细信息,我们就可以使用相应的技术将这信息发送到目标邮箱去,本示例中我采用的是.NET Framework里提供的SmtpClient类来完成的邮件发送,关于SmtpClient类的使用网上有相当丰富的资料介绍,这里我就不做详细的说明,核心代码如下:

1protected void Button2_Click(object sender, EventArgs e)
2{
3 if (info != null)
4 {
5 SmtpClient client = new SmtpClient();
6 client.Host = info.StmpServer;
7 client.UseDefaultCredentials = false;
8 c

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号