C#实现发送邮件——核心部分代码
在KS系统中有个发送邮件的功能需要做上网查阅资料以后,通过自己的部分修改实现了发送邮件的功能话不多说先来个界面:
邮件发送分一下步骤:
1.smtp服务信息设置
2.验证发件人信息
3.添加附件
4.正式发送邮件
5.发送邮件后处理
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; //超时时间 }
#endregion2.验证发件人信息
#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);
;
}
#endregion3.添加附件
#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;
} }
#endregion4.正式发送邮件
private void btnSend_Click_1(object sender, EventArgs e)
{
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 (MessageBox.Show("您确定要发送当前邮件吗?", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{ try
{
//初始化Smtp服务器信息
setSmtpClient("smtp." + txt_SmtpServer.Text.Trim() + comboBoxEx3.Text, Convert.ToInt32(numericUpDown1.Text));
}
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 = new MailMessage();
MailMessage_Mai.To.Clear();
//添加收件人邮箱地址 MailAddress_to = new MailAddress(textBox4.Text.Trim() + comboBox4.Text.Trim());
MailMessage_Mai.To.Add(MailAddress_to); //发件人邮箱
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(); //注册邮件发送完毕后的处理事件
SmtpClient.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
//开始发送邮件
SmtpClient.SendAsync(MailMessage_Mai, "000000000"); } }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参考资料连接:http://www.cnblogs.com/maiweibiao/articles/1837821.html
C#实现发送邮件——核心部分代码的更多相关文章
- 用Java实现MVPtree——MVPtree核心算法代码的搭建
项目需要,需要把MVPtree这种冷门的数据结构写入Java,然网上没有成形的Java实现,虽说C++看惯了不过对C++实现复杂结构也是看得蒙蔽,幸好客户给了个github上job什么的人用Java写 ...
- python发送邮件的实例代码(支持html、图片、附件)
转自http://www.jb51.net/article/34498.htm 第一段代码 #!/usr/bin/python# -*- coding: utf-8 -*- import emaili ...
- 【CSS】329- 非常强!3行核心css代码的rate评分组件
像rate评分组件一般都用javascript写,所以这次将是一个全新的尝试,用css实现一个rate评分 ❗ 核心代码也就三行? 01 效果图 02 原理 主要是借助radio单选框,梳理如下: 去 ...
- python2.7发送邮件失败之——代码问题
使用python2.7发送邮件,代码如下: from email.header import Headerfrom email.mime.text import MIMETextimport smtp ...
- BootLoader(2440)核心初始化代码
1.gboot.lds OUTPUT_ARCH(arm)ENTRY(_start)SECTIONS { . = 0x30008000; //起始地址 . = ALIGN(4);// ...
- 使用PHPmailer发送邮件的详细代码
一.使用PHPMailer发送邮件的原因 PHP有内置的mail()方法,但是由于一些主机空间不支持该方法,所以经常会遇到无法发送邮件的情况. 所以,可以下载PHPMailer类,实现邮件发送. 二. ...
- 通过SMTP发送邮件的Python代码
贴上一段用Python开发的发送邮件程序 #coding=UTF-8 import smtplib from email.mime.text import MIMEText smtp_host=&qu ...
- CVE-2018-7600 Drupal核心远程代码执行漏洞分析
0x01 漏洞介绍 Drupal是一个开源内容管理系统(CMS),全球超过100万个网站(包括政府,电子零售,企业组织,金融机构等)使用.两周前,Drupal安全团队披露了一个非常关键的漏洞,编号CV ...
- 预计阅读时间核心jS代码
<script type="text/javascript"> jq(document).ready(function() { var read_time=jq(&qu ...
随机推荐
- 如何解决sql server 2008附加数据库失败
MDF文件是数据库存贮数据的文件,可以通过附加的方法添加到数据库,在添加mdf文件的时候遇到附加数据库失败,具体提示如下: microsoft SQL server,错误5120 最初以为是附加权限的 ...
- php 短信网关短信内容不能有空格
最近在做一个短信通知功能,接口参数都按文档写好了,就是不能发送短信,查了半天,原来是短信内容有空格,之前短信用的英文标点符号,符号后都有一个空格,用了date('Y-m-d H,i,s')函数,后来把 ...
- Spring学习总结三——SpringIOC容器三
一:spring容器自动装配注入 为了减少xml中配置内容,可以使用自动装配注入,代替setter注入,只需要在 bean对象配置中添加属性autoWire即可,那么在类中就会自动扫描setXXX() ...
- AngularJs指令(一)
AngularJs应用现在越来越流行了,谷歌都与微软合作支持AngularJS2.0,这是要逆天了,说明AngularJs将来大势所趋.最近想跳槽,又重新拾起了AngluarJs(之前由于缺少项目应用 ...
- umbraco使用VS安装
新建——程序包管理器控制台——install - package umbracocms vs中的快捷键: ctrl+F5为调试: ctrl+shift+B生成解决方案: 打包前,App_data文件夹 ...
- html5技术介绍
什么是HTML5 1>网页的5.0版本 1> 2014年才定制完HTML5的标准,历时8年 2> 移动先行 为什么要用HTML5 1> 跨平台 利用HTML5编写的UI界面能运 ...
- Backbone Events 源码笔记
用了backbone一段时间了,做一些笔记和总结,看的源码是1.12 backbone有events,model,collection,histoty,router,view这些模块,其中events ...
- MVC中验证码的生成
在项目中验证码的生成通常是需要页面无刷新的,所以验证码图片实际是跟在某个input后面的img,通过控制该img来控制验证码显示的位置,例如: <div> <input id=&qu ...
- Part 1 What is AngularJS
What is AngularJS ? AngularJS is a JavaScirpt framework that helps build web application. AngularJS ...
- iOS-GCD多线程
GCD GCD -- Grand Central Dispatch 是基于C语言的底层API 用Block定义任务,将任务添加到线程中使用.集中管理 1.GCD的执行函数 //同步 dispatch_ ...