用到的控件大家基本能看出来哈,运行效果如下

C#发送邮件运行效果图

完整代码如下

using System;
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;
using System.Threading;
           
namespace EmailText
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Thread t;
        private void button1_Click(object sender, EventArgs e)
        {
            if (!tb_res.Text.Trim().Contains("@"))
                MessageBox.Show("收件人错误");
            else if (comboBox1.Text.Trim() == "")
                MessageBox.Show("请选择是否支持html格式邮件发送");
            else if (!tb_send.Text.Trim().Contains("@"))
                MessageBox.Show("发件人设定错误");
            else if (tb_pw.Text.Trim() == "")
                MessageBox.Show("密码不能为空");
            else if (tb_title.Text.Trim() == "")
                MessageBox.Show("邮件标题不能为空");
            else if (tb_cont.Text.Trim() == "")
                MessageBox.Show("邮件正文不能为空");
            else
            {
                CheckForIllegalCrossThreadCalls = false;//线程操作控件, 是否捕获对错误线程的调用
                button1.Enabled = false;
                pictureBox1.Visible = true;
                t = new Thread(fasong);
                t.Start();
           
            }
           
        }
           
        public void fasong()
        {
            string temp = "smtp." + tb_send.Text.Trim().Substring(tb_send.Text.Trim().IndexOf("@") + 1);//获取该发件箱的smtp服务器
           
            try
            {
                //配置smtp发信服务器
               SmtpClient lygsmtp = new SmtpClient();//新建smtp服务器连接  
               lygsmtp.Host = temp;//如 smtp.126.com
               lygsmtp.Port = 25;//默认端口
               lygsmtp.Credentials = new System.Net.NetworkCredential(tb_send.Text.Trim(), tb_pw.Text.Trim());//发件邮箱 密码
           
                          
               //新建邮件信息
               MailMessage emails = new MailMessage();//新建一封邮件
               MailAddress add = new MailAddress(tb_res.Text.Trim());//收件人地址
               emails.Subject = tb_title.Text.Trim();//标题
               emails.Body = tb_cont.Text.Trim();//邮件正文
               emails.To.Add(add);//指定邮件收件人   可以重复添加
               emails.From = new MailAddress(tb_send.Text.Trim());//指定发件人
           
               //添加附件
               if (tb_fujian.Text.Trim() != "" && tb_fujian.Text.Trim().Contains(".") && tb_fujian.Text.Trim().Length > 2)
               {
                   emails.Attachments.Add(new Attachment(tb_fujian.Text.Trim()));
               }
               //如果一次只发送给一个人 则在新建email的时候 指定new MailMessage(发件人邮箱,收件人邮箱); 这里的To 和Form就不需要了
           
                if(comboBox1.Text.Trim()=="真")
                    emails.IsBodyHtml = true;//支持html
                else emails.IsBodyHtml =false;//不支持html
                    lygsmtp.Send(emails);
           
                    MessageBox.Show("发送成功");
            }
            catch (Exception err) 
            {
                MessageBox.Show(err.Message); 
            }
           
            button1.Enabled = true;
            pictureBox1.Visible = false;
            t.Abort();
            
        }
        /// <summary>
        /// 添加附件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog fbd = new OpenFileDialog();
            if (fbd.ShowDialog() == DialogResult.OK)
            {
                tb_fujian.Text = fbd.FileName;
            }
        }
    }
}