• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > 使用C#编写简单的图形化的可发送附件的邮件客户端程序

使用C#编写简单的图形化的可发送附件的邮件客户端程序

作者:锋哥 字体:[增加 减小] 来源:互联网 时间:2017-05-28

锋哥 通过本文主要向大家介绍了c语言括号的使用,罗技c930摄像头使用,sony闹钟c218使用,中诺c256使用说明书,索尼2500c使用教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

今天谈一下C#(WinForm)如何发送带附件的电子邮件!废话少说,先截图伺候:

201621170222646.jpg (896×532)

首先C#发送邮件需要smtp服务的支持,我也不知道是不是C#只支持smtp协议,不过好像在MSDN里,Mail这个命名空间下只有介绍smtp的方法的,好像没看到POP的,算了,先不要说这个

我们暂时用smtp协议来做就好了!因此首先你要确保你的发件邮箱支持smtp服务,据我说知,雅虎邮箱,HotMail邮箱和GMail邮箱都不支持smtp的,不过没事,还好我们常用的QQ邮箱,163邮箱,新浪邮箱等邮箱都支持smtp的,这样我们就可以用这些邮箱来发邮件了,哈哈,不过QQ邮箱的smtp服务默认是关闭的,需要我们手动去开通,开通很简单,进入你的QQ邮箱后,选择【设置】,在账户选项卡里就有个smtp的复选框,打个勾保存一下就OK了。163邮箱和新浪邮箱开通smtp服务也差不多这样的,很简单。好了 开通好了接下来就开始来讲代码了 OK!
为了方便菜鸟理解,我把整个程序分成一下几部分:

  • smtp服务信息设置
  • 验证发件人信息
  • 添加附件
  • 正式发送邮件
  • 发送邮件后处理

OK 以下代码伺候:
一些全局变量,都有注释的

SmtpClient SmtpClient = null; //设置SMTP协议
MailAddress MailAddress_from = null; //设置发信人地址 当然还需要密码
MailAddress MailAddress_to = null; //设置收信人地址 不需要密码
MailMessage MailMessage_Mai = null;
FileStream FileStream_my = null; //附件文件流

</div>

1.smtp服务信息设置

#region 设置Smtp服务器信息
/// <summary>
/// 设置Smtp服务器信息
/// </summary>
/// <param name="ServerName">SMTP服务名</param>
/// <param name="Port">端口号</param>
private void setSmtpClient(string ServerHost, int Port)
{
SmtpClient = new SmtpClient();
SmtpClient.Host = ServerHost;//指定SMTP服务名 例如QQ邮箱为 smtp.qq.com 新浪cn邮箱为 smtp.sina.cn等
SmtpClient.Port = Port; //指定端口号
SmtpClient.Timeout = 0; //超时时间
}
#endregion
</div>

2.验证发件人信息

#region 验证发件人信息
/// <summary>
/// 验证发件人信息
/// </summary>
/// <param name="MailAddress">发件邮箱地址</param>
/// <param name="MailPwd">邮箱密码</param>
private void setAddressform(string MailAddress, string MailPwd)
{
//创建服务器认证
NetworkCredential NetworkCredential_my = new NetworkCredential(MailAddress, MailPwd);
//实例化发件人地址
MailAddress_from = new System.Net.Mail.MailAddress(MailAddress, textBoxX4.Text);
//指定发件人信息 包括邮箱地址和邮箱密码
SmtpClient.Credentials = new System.Net.NetworkCredential(MailAddress_from.Address, MailPwd);
;
}
#endregion
</div>

3.添加附件

#region 检测附件大小
private bool Attachment_MaiInit(string path)
{
try
{
FileStream_my = new FileStream(path, FileMode.Open);
string name = FileStream_my.Name;
int size = (int)(FileStream_my.Length / 1024/1024);
FileStream_my.Close();
//控制文件大小不大于10M
if (size > 10)
{
MessageBox.Show("文件长度不能大于10M!你选择的文件大小为"+ size.ToString()+"M","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return false;
}
return true;
}
catch (IOException E)
{
MessageBox.Show(E.Message);
return false;
}
}

#endregion

</div>

4.正式发送邮件

 private void btnSend_Click(object sender, EventArgs e)
{
//检测附件大小 发件必需小于10M 否则返回 不会执行以下代码
if (txt_Path.Text != "")
{
if (!Attachment_MaiInit(txt_Path.Text.Trim()))
{
return;
}
}
if (txt_SmtpServer.Text == "")
{
MessageBox.Show("请输入SMTP服务器名!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (textBoxX2.Text == "")
{
MessageBox.Show("请输入发件人邮箱地址!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (txtformPwd.Text == "")
{
MessageBox.Show("请输入发件人邮箱密码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (dataGridViewX1.Rows.Count == 0)
{
MessageBox.Show("请添加收件人!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (MessageBox.Show("您确定要发送当前邮件吗?", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
try
{
//初始化Smtp服务器信息
setSmtpClient("smtp." + txt_SmtpServer.Text.Trim() + comboBoxEx3.Text, Convert.ToInt32(numericUpDown1.Value));
}
catch (Exception Ex)
{
MessageBox.Show("邮件发送失败,请确定SMTP服务名是否正确!" + "\n" + "技术信息:\n" + Ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
try
{
//验证发件邮箱地址和密码
setAddressform(textBoxX2.Text.Trim() + comboBoxEx2.Text, txtformPwd.Text.Trim());
}
catch (Exception Ex)
{
MessageBox.Show("邮件发送失败,请确定发件邮箱地址和密码的正确性!" + "\n" + "技术信息:\n" + Ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
//清空历史发送信息 以防发送时收件人收到的错误信息(收件人列表会不断重复)
MailMessage_Mai.To.Clear();
//添加收件人邮箱地址
foreach (DataGridViewRow row in dataGridViewX1.Rows)
{
MailAddress_to = new MailAddress(row.Cells["Column1"].Value.ToString());
MailMessage_Mai.To.Add(MailAddress_to);
}
MessageBox.Show("收件人:" + dataGridViewX1.Rows.Count.ToString() + " 个");
//发件人邮箱
MailMessage_Mai.From = MailAddress_from;

//邮件主题
MailMessage_Mai.Subject = txttitle.Text;
MailMessage_Mai.SubjectEncoding = System.Text.Encoding.UTF8;

//邮件正文
MailMessage_Mai.Body = Rtb_Message.Text;
MailMessage_Mai.BodyEncoding = System.Text.Encoding.UTF8;

//清空历史附件 以防附件重复发送
MailMessage_Mai.Attachments.Clear();

//添加附件
MailMessage_Mai.Attachments.Add(new Attachment(txt_Path.Text.Trim(), MediaTypeNames.Application.Octet));

//注册邮件发送完毕后的处理事件
SmtpClient.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);

//开始发送邮件
SmtpClient.SendAsync(MailMessage_Mai, "000000000");

}
}

</div>

5.发送邮件后处理

#region 发送邮件后所处理的函数
private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
try
{
if (e.Cancelled)
{
MessageBox.Show("发送已取消!");
}
if (e.Error != null)
{
 
MessageBox.Show("邮件发送失败!" + "\n" + "技术信息:\n" + e.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
 
}
else
{
MessageBox.Show("邮件成功发出!", "恭喜!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception Ex)
{
MessageBox.Show("邮件发送失败!" + "\n" + "技术信息:\n" + Ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
 
}
#endregion
</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 使用C#编写15子游戏
  • 使用C#正则表达式获取必应每日图片地址
  • 使用C#开发ActiveX控件
  • 使用C#给PDF文档添加注释的实现代码
  • 使用C#语言实现的查询条件界面展开和收起功能
  • 使用C#发送Http请求实现模拟登陆实例
  • 使用C#实现基于TCP和UDP协议的网络通信程序的基本示例
  • 使用C#编写简单的图形化的可发送附件的邮件客户端程序
  • 使用C#发送带附件的电子邮件的方法的代码示例分析
  • 使用C#写了一个可以推算火车票身份证号码的小程序

相关文章

  • 2017-05-28C# 调用C++写的dll的实现方法
  • 2017-05-28C#实现TCP连接信息统计的方法
  • 2017-05-28基于XSLT调试的相关问题
  • 2017-05-28基于C#实现简单的随机抽奖小程序
  • 2017-05-28C# WinForm导出Excel方法介绍
  • 2017-05-28List转换成DataSet实现代码
  • 2017-05-28C#实现对字符串进行大小写切换的方法
  • 2017-05-28详解MongoDB for C#基础入门
  • 2017-05-28C#难点逐个击破(7):checked与unchecked
  • 2017-05-28C#创建安全的字典(Dictionary)存储结构

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#中DataTable导出为HTML格式的方法
    • C#观察者模式(Observer Pattern)实例教程
    • 在winform下实现左右布局多窗口界面的方法
    • 使用C#调用系统API实现内存注入的代码
    • C#+MO实现一些渲染功能
    • C#如何实现对sql server数据库的增删改查
    • C#实现将浮点数表示的货币数量以汉字大写形式输出的方法
    • C#中按引用传递与按值传递的区别,以及ref与out关键字的用法详解
    • 基于静态Singleton模式的使用介绍
    • c#网络唤醒功能实现

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有