C# WinFrom 发送邮件
C# Winforms 发送邮件

发送邮件时用到以下来个命名空间:

using System.Net;

using System.Net.Mail;

发送邮件的发信人邮箱必须使用smtp协议的邮箱,例如163、126、sina 等邮箱(但是163、226的早期注册的用户使用了些协议,126邮箱从06年6六月份后的注册的邮箱都不可用,而sina邮箱里可以自己设置是否启用smtp协议)其它邮箱类同

以126为例 smtp服务器为:smtp.126.com

以下为程序截图:

以下为全部代码:

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;

using System.Net.Mail;

namespace Mail

{

public partial class mailone : Form

{

public mailone()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

if (fjr.Text.Length == 0 || sjr.Text.Length == 0)

{

MessageBox.Show("请填写Email地址", "填写不完整", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);

return;

}

try

{

YanZheng(fjr.Text, sjr.Text); //验证邮件格式

}

catch (EmailErrorException ex)

{

MessageBox.Show(ex.Message, "Email格式错误", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);

return;

}

string fjrtxt = fjr.Text;

string mmtxt = mm.Text;

string sjrtxt = sjr.Text;

string zttxt = zt.Text;

string fjtxt = fj.Text;

string nrtxt = nr.Text;

string[] fasong = fjrtxt.Split('@');

string[] fs = fasong[1].Split('.');

//发送

SmtpClient client = new SmtpClient("smtp." + fs[0].ToString().Trim() + ".com"); //设置邮件协议

client.UseDefaultCredentials = false;//这一句得写前面

client.DeliveryMethod = SmtpDeliveryMethod.Network; //通过网络发送到Smtp服务器

client.Credentials = new NetworkCredential(fasong[0].ToString(), mmtxt); //通过用户名和密码 认证

MailMessage mmsg = new MailMessage(new MailAddress(fjrtxt), new MailAddress(sjrtxt)); //发件人和收件人的邮箱地址

mmsg.Subject = zttxt; //邮件主题

mmsg.SubjectEncoding = Encoding.UTF8; //主题编码

mmsg.Body = nrtxt; //邮件正文

mmsg.BodyEncoding = Encoding.UTF8; //正文编码

mmsg.IsBodyHtml = true; //设置为HTML格式

mmsg.Priority = MailPriority.High; //优先级

if (fj.Text.Trim() != "")

{

mmsg.Attachments.Add(new Attachment(fj.Text));//增加附件

}

try

{

client.Send(mmsg);

MessageBox.Show("邮件已发成功");

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

private void button3_Click(object sender, EventArgs e)

{

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

fj.Text = openFileDialog1.FileName; //得到附件的地址

}

}

private void button2_Click(object sender, EventArgs e)

{

this.Close();

}

private bool YanZheng(string fmail, string smail)

{

string[] subStrings = smail.Split('@');

string[] subStrings1 = fmail.Split('@');

if (subStrings.Length != 2 || subStrings1.Length != 2)

{

throw new EmailErrorException();

}

else

{

int index = subStrings[1].IndexOf(".");

int index1 = subStrings1[1].IndexOf(".");

if (index <= 0 || index1 <= 0)

{

throw new EmailErrorException();

}

if (subStrings[1][subStrings[1].Length - 1] == '.' || subStrings1[1][subStrings[1].Length - 1] == '.')

{

throw new EmailErrorException();

}

}

return true;

}

}

}

//以下为程序类文件,用于验证填写邮箱地址是否正确

using System;

using System.Collections.Generic;

using System.Text;

namespace Mail

{

public class EmailErrorException : ApplicationException

{

public string _message;

public EmailErrorException()

: base()

{

_message = null;

}

public EmailErrorException(string message)

: base()

{

_message = message.ToString();

}

public EmailErrorException(string message, Exception myNew)

: base(message, myNew)

{

_message = message.ToString();

}

public override string Message

{

get

{

return "Email格式错误。";

}

}

}

}

C# WinFrom 发送邮件的更多相关文章

  1. C# Winfrom 发送邮件验证码&Timer控件

    邮件发送: //定义一个全局的string类型的验证码: string yzm = ""; //定义一个字符串,这里面包含所有需要的验证码的元素: string a = " ...

  2. asp.net利用QQ邮箱发送邮件,关键在于开启pop并设置授权码为发送密码

    public static bool SendEmail(string mailTo, string mailSubject, string mailContent)        {         ...

  3. 利用SQLServer数据库发送邮件

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 这个应用案例很多,一般都是预警,比如异常连接的时候,或者数据库报错的时候.等等,,, 先 ...

  4. C# 多种方式发送邮件(附帮助类)

    因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...

  5. JavaMail发送邮件

    发送邮件包含的内容有: from字段  --用于指明发件人 to字段      --用于指明收件人 subject字段  --用于说明邮件主题 cc字段     -- 抄送,将邮件发送给收件人的同时抄 ...

  6. 技术笔记:Indy控件发送邮件

    工作中有个需求需要发送邮件,因为使用的delphi6,所以自然就选择了indy组件,想想这事挺简单的.实现的过程倒是简单,看着Indy的demo很快就完了,毕竟也不是很复杂的功能. 功能要求: 1.压 ...

  7. mono中发送邮件并保存本次收件人的地址

    在ios端mono开发中,发送邮件可以选择调用ios原生email程序.有两种方式实现这种功能,一是程序跳转到ipad中email程序,另外一种是将发送邮件的界面在自己应用里弹出. 首先第一种方式的代 ...

  8. Azure 上通过 SendGrid 发送邮件

    SendGrid 是什么? SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递. 并且具有可扩充性和实时分析的能力.常见的用例有: 自动回复用户的邮件 定期发送信息给用 ...

  9. 使用nodemailer发送邮件

    今天闲来无事,一时兴起看了下如果使用javascript来发送邮件.经过调研发现,nodeJs可以实现这个功能. 具体的步骤如下: 1.安装依赖 npm install nodemailer -g ( ...

随机推荐

  1. mysql使用触发器生成唯一订单号,

    需求:订单号唯一,并且期望是时间格式加其他字符串, 实现:采用触发机制,在新增时根据新增id值加1作为订单生成的随机且确定唯一的数,因为id唯一: 遇到问题:新增时不能提前知道id值, 解决:取到当前 ...

  2. 第七周实验报告&课程总结

    一.完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 代码: public cla ...

  3. APM全链路监控--日志收集篇

    一.监控的意义: 随着互联网普及的广度和深度,对于项目的监控显得格外重要:无论是web服务器进程.内存.cpu等资源监控,还是爬虫程序请求频率,状态码以及储存结果的监控,都需要一个及时的反馈机制. 二 ...

  4. mysql 小数位

    1    select convert(t/100,decimal(15,2)) as a from user (1) convert() 一.在mysql操作中我们经常需要对数据进行类型转换.此时我 ...

  5. jvm学习(2)JVM内存说明

    前言 一.类方法 类方法是静态方法,前面需要有static修饰符修饰.类方法内不能涉及有关变量的内容1.不能调用类的对象方法2.不能引用对象变量3.类方法不能被重写(覆盖)4.类方法不能使用super ...

  6. 《剑指offer》面试题15 链表中的倒数第k个节点 Java版

    书中方法:用两个节点一次遍历求得倒数第k个节点.注意头节点为空,k<=0,k大于节点个数的情况. public ListNode find(ListNode head, int k){ if(h ...

  7. 如何在nuxt中添加proxyTable代理

    背景 在本地开发vue项目的时候,当你习惯了proxyTable解决本地跨域的问题,切换到nuxt的时候,你会发现,添加了proxyTable设置并没有什么作用,那是因为你是用的vue脚手架生成的vu ...

  8. 前后台交互实例二:前台通过django在数据库里面增删改查数据

    url(r'^userinfo/', views.userinfo), url(r'^userdetail-(?P<nid>\d+)/', views.userdetail), url(r ...

  9. 遍历并读取指定目录下的所有文件内容,写入Map集合然后输出在控制台和本地文件

    public class FileWrite { public static void main(String[] args) throws Exception { //封装数据源目录 File sr ...

  10. This page includes a password or credit card input in a non-secure context. A warning has been added

    此页面包含非安全上下文中的密码或信用卡输入.URL栏中添加了一个警告.有关更多信息,请参阅https://goo.gl/zmWq3m. 因为你的页面里面有input type是password,谷歌浏 ...