一个发邮件的例子,涉及MSMQ,RSA,JMAIL

jmail|发邮件

 
1.先生成公钥密钥

   RSACryptoServiceProvider crypt=new RSACryptoServiceProvider();
   string publickey=crypt.ToXmlString(false);//(公钥)
   string privatekey=crypt.ToXmlString(true);
   crypt.Clear();
   StreamWriter one=new StreamWriter(@"c:\a.txt",true,UTF8Encoding.UTF8);
   one.Write(publickey);
   StreamWriter two=new StreamWriter(@"c:\b.txt",true,UTF8Encoding.UTF8);
   two.Write(privatekey);
   one.Flush();
   two.Flush();
   one.Close();
   two.Close();
   Console.WriteLine("成功保存公匙和密匙!");

2.对信息加密,然后用通过队列发送信息

   string from=TextBoxFrom.Text+DropDownList2.SelectedValue;
   string sub=textBoxSub.Text;
   string bodys=TextBoxBody.Text;
   string pwd=TextBoxPwd.Text;

   StreamReader sr = new StreamReader(@"c:\a.txt",UTF8Encoding.UTF8);
   string readpublickey = sr.ReadToEnd();
   sr.Close();

   RSACryptoServiceProvider crypt=new RSACryptoServiceProvider();
   UTF8Encoding enc=new UTF8Encoding();
   byte[] bytes=enc.GetBytes(pwd);
   crypt.FromXmlString( readpublickey );//读取公钥
   bytes = crypt.Encrypt( bytes,false ); //进行加密
   string encryttext=Convert.ToBase64String(bytes); //转码
   
   MailerInfo mf=new MailerInfo();
   //mf.body=bodys;
   mf.Body=bodys;
   mf.From=from;
   mf.Fromname=TextBoxFrom.Text;
   mf.Password=encryttext;
   mf.Sub=sub;
   

   //CreateQueue(".\\myQueue");

   SendMessage(mf);

  }

  public static void CreateQueue(string queuePath)
  {
   try               
   {
    if(!MessageQueue.Exists(queuePath))
    {
     MessageQueue.Create(@".\private$\myQueue");
    }
    else
    {
     Console.WriteLine(queuePath + " already exists.");
    }
   }
   catch (MessageQueueException e)
   {
    Console.WriteLine(e.Message);
   }
  }

  public void SendMessage(MailerInfo mf)
  {
   try
   {
    MessageQueue myQueue = new MessageQueue(".\\private$\\myQueue");
    
    System.Messaging.Message myMessage = new System.Messaging.Message(mf);
    myQueue.Send(myMessage);
   }
   catch(ArgumentException e)
   {
    Console.WriteLine(e.Message);
   }

   return;
  }

3.在服务器端独立运行程序,在队列里面读取信息

 public  void ReceiveMessage()
  {

   MessageQueue myQueue = new MessageQueue(".\\private$\\myQueue");
   myQueue.Formatter = new XmlMessageFormatter(new Type[]{typeof(MessageRec.MailerInfo)});
   try
   {
    System.Messaging.Message myMessage =    myQueue.Receive();
    MailerInfo mf = (MailerInfo)myMessage.Body;
    //解码

    StreamReader sr = new StreamReader(@"c:\b.txt",UTF8Encoding.UTF8);
    string readprivatekey = sr.ReadToEnd();
    sr.Close();

    RSACryptoServiceProvider crypt=new RSACryptoServiceProvider();
    UTF8Encoding enc=new UTF8Encoding();
    byte[] bytes = Convert.FromBase64String(mf.password);
    crypt.FromXmlString ( readprivatekey ) ;
    byte[] decryptbyte = crypt.Decrypt( bytes,false );
    password=enc.GetString( decryptbyte );
    from=mf.from;
    fromname=mf.Fromname;
    sub=mf.sub;
    body=mf.body;
    to="dankes@163.com";

   }
   catch (MessageQueueException)
   {
   }
   catch (InvalidOperationException e)
   {
    Console.WriteLine(e.Message);
   }
   
   //发送邮件

   jmail.Message Jmail=new jmail.Message();
   Jmail.Silent=false;
   Jmail.Logging=true;
   Jmail.Charset="GB2312";
   Jmail.ContentType="text/html";
   Jmail.AddRecipient(to,"","");
   Jmail.From=from;
   Jmail.MailServerUserName=fromname;
   Jmail.MailServerPassWord=password;
   Jmail.Subject=sub;
   Jmail.Body=body;
   string smtp="smtp.163.com";
   if(from.EndsWith("tom.com"))
   {
    smtp="smtp.tom.com";
   }
   else if(from.EndsWith("21cn.com"))
   {
    smtp="smtp.21cn.com";
   }
   else if(from.EndsWith("sina.com"))
   {
    smtp="smtp.sina.com";
   }
   else if(from.EndsWith("263.com"))
   {
    smtp="smtp.263.com";
   }
   //开始发送邮件
   int i=0;
   try
   {
    Jmail.Send(smtp,false);
   }
   catch(Exception ee)
   {
    i=1;
   }
   Jmail.Close() ;

   if(i==0)
      Console.WriteLine("邮件发送成功"+"发送人:"+from+"接收方:"+to+"主题是:"+sub);
   if(i==1)
    Console.WriteLine("登陆失败,或者网络故障");

   
  }

时间: 2025-01-26 23:47:56

一个发邮件的例子,涉及MSMQ,RSA,JMAIL的相关文章

一个发邮件的例子

发邮件 import javax.mail.*;import javax.mail.internet.*;import java.util.Properties;import java.util.Date; public class sendMail{ public static void main(String args[]) throws Exception { // String host = "smtp.sina.com.cn"; String host = "smt

Jmail发邮件的例子_应用技巧

在Asp程序中用Jmail发邮件的比较多,主要是因为多数虚拟主机支持他,其它的支持的较少. 下面是一个Jmail发邮件的例子代码:  如果您在自己的机器上试,请下载 Jmail.dll ,下载解压后,双击Setup.bat 即可完成安装!  复制代码 代码如下: <% On error resume next Dim JMail, contentId Set JMail = Server.CreateObject("JMail.Message")  JMail.Charset =

Jmail发邮件的例子

在Asp程序中用Jmail发邮件的比较多,主要是因为多数虚拟主机支持他,其它的支持的较少. 下面是一个Jmail发邮件的例子代码:  如果您在自己的机器上试,请下载 Jmail.dll ,下载解压后,双击Setup.bat 即可完成安装!  复制代码 代码如下: <% On error resume next Dim JMail, contentId Set JMail = Server.CreateObject("JMail.Message")  JMail.Charset =

记录一个发邮件的cs文件

    /**//* ---------------------------------     *     E-mail 发送接口     *     调用示例      * ---------------------------------     */     public class webMail    {        -- declare the variables --#region -- declare the variables --        private strin

请教一个ASP发邮件的问题

问题描述 我在ASP里面做了一个发邮件的代码:<%DimjmailSetjmail=Server.CreateObject("Jmail.SMTPMail")jmail.AddRecipientRequest("Receipt")jmail.Sender=Request("Sender")jmail.Subject=Request("Receipt2")jmail.body=Request("body"

请教一个利用OpenSmtp发邮件的问题

问题描述 最近我用OpenSmtp做了一个发邮件程序,该邮件的客户端都是用outlook2003,但是很奇怪,一部分用户会显示正常,一部分用户会显示乱码,这是什么原因?下面是乱码:To:<PCITYDS@gnpjvc.com.cn>;CC:<PCITYDS@gnpjvc.com.cn>;Subject:=?gb2312?Q?=a1=be=ce=c4=bc=fe=b4=ab=cb=cd=a1=bf=a3=ba(=b3=cc=d0=f2)=b9=ab=cb=be=ce=e5=c4=ea

谁能帮我做一个asp发邮件的程序(有酬)

问题描述 要求:做一个发邮件的程序,每发一份邮件,自动随机建立一个发件人地址,程序有调节每几分钟自动执行,每分钟的发件数.可以点击自动执行,自动随机在主题插字母. 解决方案 解决方案二:随机建立发件人地址,太搞了吧.别人都是去买数据库的吧解决方案三:而且这里是.net版,会asp的不多解决方案四:以前做个类似案例,楼主是想实现邮件群发效果?其中email可以手工输入或从数据库编好并分成若干组,主题和内容可以自己编写或直接发送已编辑好的HTML页面内容,延迟可以通过setInterval函数定义下

使用asp的jmail组件发邮件

JMail 组件 Dimac 公司的邮件收发组件,这是一个非常成熟和强大的邮件组件.它不但可以完成发邮件的工作,还可以POP收信,并支持收发邮件时的PGP加密,内置一个群发邮件的对象,可以使群发编程更简单. 即使是很多其他组件也都能完成的发邮件功能,JMail 的完成也可以称得上最出色的,除了常见的抄送暗送等多收件人功能外,它还支持添加嵌入式图片附件,并且可以从URL读取文件作为附件. JMail 的免费版本拥有全部完成的发邮件功能,只在收邮件和加密邮件等我们不常用到的方面进行了限制. 免费版下

简单快捷实现ASP在线发邮件功能

发邮件|在线 简单快捷实现ASP在线发邮件功能 -------------------------------------------------------------------------------- 在编写网上应用程序时,经常碰到需要在线发送邮件的问题,邮件内容是由程序动态决定的,如果你采用的是ASP方式来编写网上应用程序,如何简单.快捷地实现这一功能呢? 笔者在实践中利用ASP的com组件功能,在vb中实现了一个发邮件的小组件,在ASP中只通过轻松调用,就可以实现该功能.所有邮件处理