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));
        }
    }

到此这篇关于C#实现收发邮件功能的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C#实现SMTP邮件发送程序实例

    通常来说邮件发送功能在网站应用程序中经常会用到,包括大家经常看到的博客,在添加评论后,系统会自动发送邮件通知到我邮箱的,把系统发送邮件的功能整理了下,本文展示了一个客户端Demo,希望对有需要的朋友有所帮助.运行效果如下图所示: 核心代码如下: 复制代码 代码如下: using System; using System.Net; using System.Net.Mail; using System.Text; namespace HC.Email {     /// <summary>   

  • c# 两种发送邮件的方法

    目录 一.两种发送邮件的方法 二.遇到的问题 三.示例 System.Web.Mail System.Net.Mail 一.两种发送邮件的方法 有用到两种方式发邮件,一种是用System.Web.Mail类,另一种是System.Net.Mail类. System.Net.Mail是作为System.Web.Mail的替代存在的. System.Web.Mail使用时会提示已过时,但目前任然可以正常使用. 二.遇到的问题 我在使用System.Net.Mail发邮件的时候遇到一个问题,如果是用的

  • C#使用windows服务发送邮件

    最近做了一个使用 C# 写了一个发送邮件的windows 服务,在这里记录一下. 首先使用 Visual Studio 2015 创建一个 windows 服务项目. 然后在设计器上面右击添加安装程序.如下图. 安装好后,选择安装程序设计界面,选择服务和安装程序右击选择属性修改一些属性值. PS:如果不给服务添加安装程序,后面是没法把服务安装至 windows 系统里的. 在数据库创建一个表,用于存储需要发送的邮件信息. create table MainInfo ( MainInfoID in

  • C#实现发送邮件的三种方法

    本文实例讲述了C#实现发送邮件的三种方法.分享给大家供大家参考.具体方法分析如下: 一.问题: 最近公司由于一个R&I项目的需要,用户要求在购买产品或出货等一些环节,需要发送邮件提醒或者说每周一让系统自动采集数据发送一封E-mail,因此我也就找来相关资料,写了一个Demo分享给大家,大家共同学习学习. 二.实现代码: 通过.Net FrameWork 2.0下提供的"System.Net.Mail"可以轻松的实现,本文列举了3种途径来发送: 1.通过Localhost: 2.

  • C# 邮件发送和接收实现代码

    邮件发送 方法一:使用System.Web.Mail命名空间(此方法我测试没有成功过)  复制代码 代码如下: #region 发送邮件:此方法失败 protected void SendFailed() { System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage(); mail.From = "test@ gmail.com"; mail.To = " test@ gmail.com "

  • c# 实现发送邮件到指定邮箱

    很多小伙伴对于[程序发送邮件]不明觉厉的同时又羡慕嫉妒恨,其实发送邮件是一个很常用的功能, 我们这里就简单做一个发送邮箱的案例. PS:案例使用qq邮箱,当然,也可以使用其他邮箱,只要替换邮箱关键字即可,下面案例已做标注. 首先,我们需要一个[当前发件授权码],这个码需要登录发件箱里面进行开启,我们先开启一下. 1.登录发件箱的邮箱,进入[设置] 2.点击[账户] 3.下滑找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,点击开启,根据提示操作完成后得到一个授

  • C#编程实现发送邮件的方法(可添加附件)

    本文实例讲述了C#编程实现发送邮件的方法.分享给大家供大家参考,具体如下: using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Mail; namespace WindowsFo

  • C#中发送邮件代码

    始找的代码只能发送无SMTP验证的邮件,但现在很多EMAIL发送时都需要验证,后来查找了下MSDN的帮助,找到了发送验证的代码,贴出来希望对大家有所帮助! 复制代码 代码如下: public static int sendmail(string to, string body,string subject) { try { int nContain = 0; ///添加发件人地址 string from = "你的发送EMAIL"; MailMessage mailMsg = new

  • c# 实现发送邮件的功能

    微软已经为我们准备好了现成的工具类供我们调用: MailMessage //邮件信息类 SmtpClient //邮件发送类 首先需要在项目的类文件中引用以下命名空间: using System.Net; using System.Net.Mail; 然后直接上封装好的代码: /// <summary> /// 发送邮件方法 /// </summary> /// <param name="mailTo">接收人邮件</param> ///

  • C#实现发送邮件的方法

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 #region 发送邮件部分 private static String fromMail = "1111@126.com"; ///邮箱名称 private static String mailPwd = "111111"; ///密码 private static string toMail = "2222@163.com"; ///邮箱服务器 privat

随机推荐