C# WinFrom 发送邮件
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 发送邮件的更多相关文章
- C# Winfrom 发送邮件验证码&Timer控件
邮件发送: //定义一个全局的string类型的验证码: string yzm = ""; //定义一个字符串,这里面包含所有需要的验证码的元素: string a = " ...
- asp.net利用QQ邮箱发送邮件,关键在于开启pop并设置授权码为发送密码
public static bool SendEmail(string mailTo, string mailSubject, string mailContent) { ...
- 利用SQLServer数据库发送邮件
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 这个应用案例很多,一般都是预警,比如异常连接的时候,或者数据库报错的时候.等等,,, 先 ...
- C# 多种方式发送邮件(附帮助类)
因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...
- JavaMail发送邮件
发送邮件包含的内容有: from字段 --用于指明发件人 to字段 --用于指明收件人 subject字段 --用于说明邮件主题 cc字段 -- 抄送,将邮件发送给收件人的同时抄 ...
- 技术笔记:Indy控件发送邮件
工作中有个需求需要发送邮件,因为使用的delphi6,所以自然就选择了indy组件,想想这事挺简单的.实现的过程倒是简单,看着Indy的demo很快就完了,毕竟也不是很复杂的功能. 功能要求: 1.压 ...
- mono中发送邮件并保存本次收件人的地址
在ios端mono开发中,发送邮件可以选择调用ios原生email程序.有两种方式实现这种功能,一是程序跳转到ipad中email程序,另外一种是将发送邮件的界面在自己应用里弹出. 首先第一种方式的代 ...
- Azure 上通过 SendGrid 发送邮件
SendGrid 是什么? SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递. 并且具有可扩充性和实时分析的能力.常见的用例有: 自动回复用户的邮件 定期发送信息给用 ...
- 使用nodemailer发送邮件
今天闲来无事,一时兴起看了下如果使用javascript来发送邮件.经过调研发现,nodeJs可以实现这个功能. 具体的步骤如下: 1.安装依赖 npm install nodemailer -g ( ...
随机推荐
- truncate()函数
1 truncate()方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符,截断之后 size 后面的所有字符被删除. 参考: https://www.runoob.c ...
- C++ 命名管道示例
想做一个 Hook CreateFile 重定向到内存的功能,貌似可以假借命名管道实现这个功能.不熟悉命名管道,做了几个demo,如下: Server: // NamedPipeServer.cpp ...
- 编程字体Source Code Pro 免费下载
对于程序员来说,好的字体应该满足的基本条件: 字母和数字易于分辨,如: 英文字母o 和 阿拉伯数字 0 ,或者 英文字母 l 和 阿拉伯数字 1 ,两个单引号 '' 和双引号 ”. 字体等宽,保持对齐 ...
- Cassandra commands
Common commands: describe keyspaces // 列出所有db use your_db; // 进去db describe tables; // 列出所有table ...
- 前端表格选中列合计,select-chosen,set集合,display隐藏
业务涉及到table选中列合计,同时隐藏未选中列.为了减少后端请求数据,前端获得所有数据后筛选计算. 1.select下拉框初始化 $(function() { $('.chosen-select') ...
- Redis数据类型:Hashes、Geo操作指令
Redis数据类型:Hashes.Geo操作指令 Hashes常用操作指令 Redis Hashes是一个键值对的映射表,最对能存储2^32-1(约40亿)个键值对. HSET HGET HSET:将 ...
- (一) MySQL架构
1.MySQL架构 MySQL拥有分层的架构,上层是服务器层的服务和查询执行引擎,下层是存储引擎,真正负责数据的存储和提取. 服务层包含了连接和线程处理,以及大多数MySQL的核心服务,如对SQL的解 ...
- 洛谷 P2672 推销员(贪心,模拟)
传送门 解题思路 第一种: 对于选i家,很显然,a值前i-1家的一定会选,所以只需要考虑最后一家的选法.要么是选择a值第i大的(就不管s了),要么选择剩下的中s最大的. 我们把每一家的情况(s和a)存 ...
- Codeforces 1159D The minimal unique substring(构造)
首先我们先观察三个串 10,1110,11101110,答案都是红色部分,我们可以下一个结论,形如 1,1101,111101,那么答案为红色部分.我们可以发现,通过我们末尾添加的1,导致之前红色部分 ...
- Acwing143. 最大异或对
在给定的N个整数A1,A2……ANA1,A2……AN中选出两个进行xor(异或)运算,得到的结果最大是多少? 输入格式 第一行输入一个整数N. 第二行输入N个整数A1A1-ANAN. 输出格式 输出一 ...