C#实现邮件发送

C#实现邮件单人发送 一、邮件发送过程 A使用163邮箱发送邮件给B(qq邮箱)。首先A会把邮件通过SMTP(Simple Mail Transfer Protocol)协议传输到163的Smtp服务器上,163的Smtp服务器会根据B的邮箱账号,把邮件通过Smtp协议发给QQ邮箱的Smtp服务器。QQ的Smtp服务器接收到邮件消息后会将之存储在QQ邮箱的邮件存储设备上。当B登陆QQ邮箱后,如果有新邮件,POP3... 阅读详情

首先是邮件帮助类

using System;  
using System.Collections.Generic;  
using System.Text;  
using System.Net.Mail;  
using System.Windows.Forms;  
  
namespace zzEmail  
{  
    //邮件帮助类  
    class MailHelper  
    {  
        SmtpClient smtpClient;  
        //邮件实体类,包含用户名密码  
        MailModel mail;  
        UserModel to;  
        public MailHelper()  
        {   
        }  
        public MailHelper(MailModel mail, UserModel t)  
        {  
            smtpClient = new SmtpClient();  
            this.mail = mail;  
            this.to = t;  
        }  
        public void send()  
        {  
            MailMessage msg=null;  
            smtpClient.Credentials = new System.Net.NetworkCredential(mail.from.Send_Address.Address, mail.from.password);//设置发件人身份的票据    
            smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;  
            smtpClient.Host = "smtp." + mail.from.Send_Address.Host;  
            try  
            {  
                msg = mail.GetMail();  
                msg.To.Add(to.Send_Address.Address);  
                smtpClient.Send(msg);  
                MessageBox.Show("发送成功");  
            }  
            catch (SmtpException err)  
            {  
                //如果错误原因是没有找到服务器,则尝试不加smtp.前缀的服务器  
                if (err.StatusCode == SmtpStatusCode.GeneralFailure)  
                {  
                    try  
                    {  
                        //有些邮件服务器不加smtp.前缀  
                        smtpClient.Host = null;  
                        smtpClient.Send(mail.GetMail());  
                    }  
                    catch (SmtpException err1)  
                    {  
                        MessageBox.Show(err1.Message, "发送失败");  
                    }  
                }  
                else  
                {  
                    MessageBox.Show(err.Message, "发送失败");  
                }  
            }  
            finally  
            {  
                //及时释放占用的资源  
                msg.Dispose();  
            }  
        }  
    }  
}  

邮件实体类

using System;  
using System.Collections.Generic;  
using System.Text;  
using System.Net.Mail;  
  
namespace zzEmail  
{  
    //邮件实体类  
    class MailModel  
    {  
        //主题  
        public string Subject { get;set;}  
        public string SubjectEncoding { get; set; }  
        //内容  
        public string Body { get;set;}  
        public string BodyEncoding { get; set; }  
        //附件  
        public List<Attachment> Attachments=new List<Attachment>();  
        public MailMessage message;  
        //发送人  
        public UserModel from;  
  
        public MailModel(string subject,string body,UserModel f)  
        {  
            message = new MailMessage();  
            this.Subject = subject;  
            this.Body = body;  
            this.from = f;  
        }  
        //添加附件  
        public void AddAttach(Attachment file)  
        {  
            Attachments.Add(file);  
        }  
        //添加一群附件  
        public void AddAttach(List<Attachment> files)  
        {  
            foreach (Attachment item in files)  
            {  
                if(item!=null)  
                    this.Attachments.Add(item);  
            }  
        }  
        //返回邮件实体  
        public MailMessage GetMail()  
        {  
            if (this.message != null)  
            {  
                message.Subject = this.Subject;  
                message.SubjectEncoding = System.Text.Encoding.UTF8;  
                message.Body = this.Body;  
                message.BodyEncoding = System.Text.Encoding.UTF8;  
                message.From = from.Send_Address;//设置发邮件人地址  
                foreach (Attachment item in Attachments)  
                {  
                    if (item != null)  
                        this.message.Attachments.Add(item);  
                }  
                return message;  
            }  
            else  
                return null;  
        }  
    }  
}  

邮件的用户类

using System;  
using System.Collections.Generic;  
using System.Text;  
using System.Net.Mail;  
  
namespace zzEmail  
{  
    //接收邮件的用户实体类  
    class UserModel  
    {  
        public string nickname { get; set; }  
        public string password { get; set; }  
        public MailAddress Send_Address{get;set;}  
        public UserModel(string useraddr)  
        {  
            Send_Address = new MailAddress(useraddr);  
        }  
        public UserModel(string useraddr,string nickname)  
        {  
            this.nickname = nickname;  
            Send_Address = new MailAddress(useraddr);  
        }  
    }  
}  

最后是具体的操作

使用多线程来对邮件进行发送

using System;  
using System.Collections.Generic;  
using System.ComponentModel;  
using System.Data;  
using System.Drawing;  
using System.Text;  
using System.Windows.Forms;  
using System.Net.Mail;  
using System.Threading;  
  
namespace zzEmail  
{  
    public partial class Form1 : Form  
    {  
        public Form1()  
        {  
            InitializeComponent();  
        }  
  
        private void btn_addFile_Click(object sender, EventArgs e)  
        {  
            OpenFileDialog myOpenFileDialog = new OpenFileDialog();  
            myOpenFileDialog.CheckFileExists = true;  
            //只接收有效的文件名  
            myOpenFileDialog.ValidateNames = true;  
            //允许一次选择多个文件作为附件  
            myOpenFileDialog.Multiselect = true;  
            myOpenFileDialog.ShowDialog();  
            if (myOpenFileDialog.FileNames.Length > 0)  
            {  
                FileList.Items.AddRange(myOpenFileDialog.FileNames);  
            }  
        }  
  
        private void btn_Send_Click(object sender, EventArgs e)  
        {  
            UserModel from = new UserModel(txt_UserName.Text);  
            from.password = txt_Pass.Text;  
  
            UserModel to = new UserModel(txt_rec.Text);  
  
            MailModel mail = new MailModel(txt_sub.Text, txt_content.Text, from);  
  
            List<Attachment> filelist = new List<Attachment>();  
            //添加附件  
            if (FileList.Items.Count > 0)  
            {  
                for (int i = 0; i < FileList.Items.Count; i++)  
                {  
                    Attachment attachFile = new Attachment(FileList.Items[i].ToString());  
                    filelist.Add(attachFile);  
                }  
            }  
  
            mail.AddAttach(filelist);//添加附件  
            MailHelper helper = new MailHelper(mail, to);  
            //启动一个线程发送邮件  
            Thread mythread = new Thread(new ThreadStart(helper.send));  
            mythread.Start();  
        }  
    }  
}  

原作者不详,转自【http://www.open-open.com/lib/view/open1391349064598.html】
C# 实现邮件发送功能详解 C#(发音为”See Sharp”)是一种由微软公司开发的面向对象的编程语言,它以简洁易用、类型安全著称。自2002年随.NET框架发布以来,C#成为了Windows平台上应用最广泛的开发语言之一。是.NET Framework中用于处理电子邮件发送功能的命名空间。它提供了构建、配置和发送电子邮件消息的类和接口,是开发者进行邮件服务开发时不可或缺的一部分。在深入探讨的细节前,我们需要先了解它的组成。该命名空间包括了几个关键类,如SmtpClient等。 阅读详情

相关推荐

C#实现定时邮件发送的完整指南

随着信息技术的快速发展,定时发送邮件的需求在商业和日常沟通中变得越来越普遍。在C#中实现邮件发送功能,不仅可以处理日常的邮件通知,还能在特定时间自动向用户发送预定内容,从而提高工作效率和用户体验。本章将概述定时发送邮件的概念和开发必要性,为读者提供一个整体的框架和思维导图,为后续章节的具体实现奠定基础。我们将从简单的邮件发送功能开始,逐步深入到定时发送机制、邮件模板应用以及异常处理等高级功能的探索。

weixin_42143092的博客 987

C#发送邮件

用于发送邮件的方法: public class Email { /// <summary> /// 发送者 /// </summary> public string mailFrom { get; set; } ///...

weixin_30535043的博客 186

C#实现SMTP邮件发送的完整示例

本文还有配套的精品资源,点击获取 简介:本文详细讲解了如何利用C#语言通过SMTP服务发送文本邮件。介绍了SMTP协议的基础知识,演示了如何创建邮件对象、配置SMTP客户端,并提供了完整的源码示例。读者将通过这些步骤和代码学习如何在.NET环境中使用***.Mail命名空间实现邮件的发送功能,并理解发送过程中的关键设置,如服务器配置、身份验证等。 1. SMTP协议基...

weixin_42511373的博客 1816

C#实现邮件发送功能

这里我们介绍使用C#实现发送邮件功能,使用C#发送邮件需要首先引入System.Net.Mail和System.Net头文件

m0_52994020的博客 6612

C#实现Outlook邮件发送功能的完整指南

COM(Component Object Model)接口是一种允许软件组件通过应用程序接口(API)进行交互的方法。在与Outlook交互的上下文中,COM允许C#代码以一种标准的方式操作Outlook的功能。这包括读取、发送邮件,以及管理日历等。理解COM接口的工作原理,对于编写能够与Outlook无缝集成的C#应用程序至关重要。在本章中,我们探索了如何在C#中设置邮件的基本属性,如收件人、主题和正文,并学习了如何对邮件的高级属性如优先级和读取回执进行配置。

weixin_33375360的博客 1530

C#实现邮件发送功能的源代码大全

C#(发音为 "看")是一种由微软开发的面向对象的、类型安全的编程语言。自从.NET框架发布以来,C#一直作为微软的主要开发语言,并被广泛应用于企业级应用、Web服务和游戏开发等多个领域。System.Net.Mail是.NET Framework提供的一个命名空间,用于处理电子邮件的创建、发送以及接收。它是基于SMTP协议工作的,允许开发人员以一种简单且直接的方式在应用程序中整合邮件功能。System.Net.Mail命名空间提供了多种类和接口,这些类和接口是处理邮件功能所必需的。

weixin_42576410的博客 1244

WinForm应用界面开发实战教程 - 实现定时发送邮件&关机处理

本文主要介绍如何在采集程序中增加定时发送邮件以及关机处理的实现,欢迎下载文中实用控件体验!

需要界面开发、IDE工具研发中文教程资料的小伙伴,记得私信我~ 875

C#发送邮件实例

C#开发,winfrom实例,利用QQ发送邮件,发送文字,文件,附件等都可以发送,秒到的效率,只需要配置下账号就可以使用。

C#实现发送和接收邮件的winform邮箱(保存至MySQL本地数据库)Mail Client

C#实现发送和接收邮件的winform邮箱(保存至MySQL本地数据库)Mail Client

qq_40419964的博客 3614

c#实现邮件发送

c# web 实现邮箱发送,也可用于winfrom开发

用C#语言写的一个 发送邮件功能

用C#语言写的邮件发送功能!具体实现下载后可知,一看懂了

如何在代理环境下发送邮件?——C#实现Socket代理方式的邮件发送

       前一阵子做项目的时候遇到一个功能需求:当程序异常或者重大事件时候,发送邮件通知管理员。按理说这是一个很简单的需求,但是在开发当中遇到了一个问题:因为客户那里的网络拓扑是一个需要设置代理才可以访问外网smtp服务器的网络环境,所以程序在直连外网时候好使,拿到内网就不能用了。于是我在网上找了很多关于使用C#程序发邮件的例子,但很少有关于使用代理方式,特别是支持审核代理方式发送的案例,我分

卢弋 的个人技术专栏 -- 总结使人进步 1万+

C#多线程发送邮件,发送工资条

使用C#开发的工资邮件发送程序,使用多线程快速发送。

C#实现电子邮件的发送

电子邮件(简称E-mail)又称电子信箱、电子邮政,它是一种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是一个简易、快速的方法。通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。到目前为止,可以说电子邮件是Internet资源使用最多的一种服务,E-mai1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。

懂搬砖 2781

Ubuntu24.04下Librenms的完整安装与配置指南

本文提供了在Ubuntu 24.04 LTS系统上完整安装与配置LibreNMS网络监控系统的详细指南。内容涵盖系统环境准备、依赖安装、源码获取、PHP/数据库/Nginx配置、Composer安装、网页向导设置以及设备添加与日常使用,帮助用户快速部署一套功能强大的开源网络监控解决方案。

tgb3456789的博客 1135

Verilog仿真时读取bin文件模拟输入数据流,将输出数据流写入bin文件

需要关注的是,一般会省略文件起始地址和读取长度,那么mem为多大,就会从文件中读取多大的数据出来填充mem。如果只需要读取一次文件,那么代码到此就结束了,但是如果还需要每一帧都读取该文件转换为数据流,则在循环里判断新的一帧信号是否到来,在新的一帧再次打开一次文件,从头开始读取数据。

qq_41137205的博客 2772

C# 实现发送邮件

/*定义邮箱实体类EmailInfo:*/ public class EmailInfo { private string email; private string userName; private string userPwd; public EmailInfo() { this.email = ""; this.us...

zyx2050的博客 270

Kali下RTL8812AU网卡5G抓包精准适配指南

WiFi监听模式是无线安全测试的基础能力,其核心在于网卡驱动对802.11a/n/ac协议栈的完整支持。RTL8812AU系列USB无线网卡因成本低、兼容性广被广泛用于渗透测试,但其芯片版本碎片化(如VA/VC/ACM)与Linux内核演进(6.1~6.5)存在严重适配断层,导致5GHz频段Beacon帧捕获失败、信道切换异常、注入功能残缺等典型问题。技术价值在于突破‘即插即用’幻觉,建立从USB设备ID识别、固件版本校验到射频寄存器级补丁的全链路可控流程。典型应用场景包括CTF无线赛题实战、红蓝对抗中的W

weixin_33783283的博客 760

如何使用c# 实现邮件发送功能 ,以及如何向邮件内容添加图片

1.添加引用: using System.Net.Mail; using System.Net;//验证发件人发件人邮箱需要用到NetworkCredential 2.创建发送邮件的方法(如果有多个收件人或者抄送人,先将收件人用特殊符号拼接,再用split切割成数组然后循环添加就好了) 具体看如下代码: public string sendmail(string toMail, s...

墨水直达的博客 2786

告别双系统!用PhyFusion在麒麟V10上无缝融合Win11,文件互传、GPU加速全搞定

本文详细介绍了在飞腾D3000平台上使用PhyFusion实现麒麟V10与Win11无缝融合的解决方案。通过视觉无界、数据互通和性能无损的三大突破,PhyFusion显著提升了跨系统工作效率,支持GPU加速和文件互传,是国产化平台的革命性工具。

weixin_28707365的博客 1008

【信道编码/Channel Coding】线性分组码

这是本专栏信道编码/Channel Coding的第二站,想对信道编码有一个系统性的认识可以看本专栏的信道编码的整体框架一文。而在本篇文章中,将介绍线性分组码的基本原理。

Tomatomatodo的博客 9243
上一篇: C#文件操作类
下一篇: C#通用JSON操作类
系统信息
系统信息 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄23年 2404粉丝 565原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值