用到的控件大家基本能看出来哈,运行效果如下
完整代码如下
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; } } } }