软件编程
位置:首页>> 软件编程>> C#编程>> C#实现收发邮件功能

C#实现收发邮件功能

作者:springsnow  发布时间:2021-09-20 19:40:46 

标签:C#,邮件

一、服务端

TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 13000);//定义 *
   server.Start();//启动 *
   byte[] buffer = new byte[1024]; //创建一个容器用于接受数据
   string data = null;
   while (true)
   {
       //等待客户端连接过来
       TcpClient client = server.AcceptTcpClient();

//Task<TcpClient> task1 = server.AcceptTcpClientAsync();
       //Socket socket = server.AcceptSocket();
       //Task<Socket> task2 = server.AcceptSocketAsync();
       //server.Pending();

//取得客户端发送过来的数据
       int len = client.Available;//获取已经从网络流接收且可供读取的数据量
       NetworkStream nstream = client.GetStream(); //返回一个可供读写的网络流
       int bytesRead;
       do
       {
           bytesRead = nstream.Read(buffer, 0, buffer.Length); //接收消息
           data = Encoding.UTF8.GetString(buffer, 0, bytesRead); //先将接收到的数据转化可输出的字符串类型
           Console.WriteLine("收到消息:" + data); 输出收到的信息
           byte[] msg = Encoding.UTF8.GetBytes(data.ToUpper());
           nstream.Write(buffer, 0, buffer.Length);//发送消息
       } while (bytesRead > 0);
       nstream.Close(); //1.先释放流的数据
       client.Close(); //2.再释放客户端的连接数据
   }
   server.Stop(); //3.关闭监听

二、客户端

TcpClient client = new TcpClient("127.0.0.1", 13000);//连接服务器
   //或者
   //    TcpClient client=new TcpClient();
   //    client.Connect("127.0.0.1", 13000);
   NetworkStream nstream = client.GetStream();
   //---其他同服务端
   nstream.Close(); //1.先释放流的数据
   client.Close(); //2.再释放客户端的连接数据

三、发送邮件

1、使用MailMessage和SmtpClient发送邮件。

在Wince中,可以使用OpenNetCF.Net.Mail类发送邮件。

MailMessage mailMessage = new MailMessage
   {
       //发件人
       From = new MailAddress("***@163.com", "您的朋友", Encoding.UTF8),
       Priority = MailPriority.High,
       //邮件主题
       SubjectEncoding = Encoding.UTF8,
       Subject = "Hello",
   };

//收件人 可以添加多个收件人
   mailMessage.To.Add(new MailAddress("137***126@qq.com"));

//mailMessage.CC 获取包含此电子邮件的抄送(CC)收件人的地址集合

//邮件正文            
   mailMessage.IsBodyHtml = true;//如果要发送html格式的消息,需要设置这个属性
   mailMessage.BodyEncoding = Encoding.UTF8;
   mailMessage.Body = "<p style='color:red;font-size:14px;'>邮件测试</p>";

//邮件内容即消息正文中中显示图片 ,需要为图片指明src='cid:idname(资源id)'
   AlternateView htmlBody = AlternateView.CreateAlternateViewFromString("<img src='cid:zfp'/>", null, "text/html");
   //然后在LinkedResource加入文件的绝对地址,和ContentType 例如image/gif,text/html...与http请求的响应报文中的ContentType一致
   LinkedResource lr = new LinkedResource("1.gif", "image/gif");
   //绑定上文中指定的idname
   lr.ContentId = "zfp";
   //添加链接资源
   htmlBody.LinkedResources.Add(lr);
   mailMessage.AlternateViews.Add(htmlBody);

//发送附件 指明附件的绝对地址
   Attachment attachment = new Attachment("1.txt");
   mailMessage.Attachments.Add(attachment);

//创建邮件发送客户端
   SmtpClient sendClient = new SmtpClient("smtp.qq.com", 25)
   {
       //指定邮箱账号和密码
       Credentials = new NetworkCredential(fromMail, "xmxyldrmtvnrddfe")
   };

//指定如何发送电子邮件
   sendClient.DeliveryMethod = SmtpDeliveryMethod.Network;

//指定使用使用安全套接字ssl加密的链接
   sendClient.EnableSsl = true;
   sendClient.Send(mailMessage);
   //或者可以一步发送
   sendClient.SendAsync(mailMessage, null);

 2、利用TcpClient类收取pop3邮件 

TcpClient client = new TcpClient("mail.**.com", 443);

//连接
   NetworkStream ns = client.GetStream();
   StreamReader sr = new StreamReader(ns, Encoding.Default);
   string result = sr.ReadLine(); //返回OK或ER

//登陆
   StreamWriter sw = new StreamWriter(ns);
   sw.WriteLine("user  b**");
   sw.Flush();
   result = sr.ReadLine();

sw.WriteLine("pass  **");
   sw.Flush();
   result = sr.ReadLine();
   //获取邮件数量
   sw.WriteLine("stat");
   sw.Flush();
   result = sr.ReadLine();//result.split(' ')[1]表示邮件数量

//获取邮件信息
   sw.WriteLine("top 1 0 ");
   sw.Flush();
   result = sr.ReadLine();
   while (true)
   {
       result = sr.ReadLine();
       if (result == ".") break;
       if (result.Length > 4 && result.Substring(0, 8) == "Subject:")
       {
           //result为标题,乱码用Base64解码
           Encoding.GetEncoding("gb2312").GetString(Convert.FromBase64String(result));
       }
   }

来源:https://www.cnblogs.com/springsnow/p/9433990.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com