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.Net;
using System.IO;
using System.Net.Mime;
using System.Threading;

服务引用

private void Form1_Load(object sender, EventArgs e)
{
comboBoxEx3.SelectedIndex = ;
txtMailFrom.SelectedIndex = ;
txtSmtpServer.SelectedIndex = ;
txtMailTo.SelectedIndex = ;
}
//发送邮件
private void btnSend_Click(object sender, EventArgs e)
{
if (IsValid())
{
if (MessageBox.Show("您确定要发送当前邮件吗?", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
string serverHost = "smtp." + txtSmtpServer.Text + comboBoxEx3.Text; //smtp 地址
int port = Int32.Parse(numericUpDown1.Value.ToString()); //smtp 密码
string mailFrom = txtMailFromEx.Text + "@" + txtMailFrom.Text; //发信人,必须是提供smtp服务的邮件服务器
string mailPwd = txtformPwd.Text; //密码
string displayName = txtDisplayName.Text; //显示名
string mailSubject = txtMailSubject.Text; //主题
string mailBody = txtMailBody.Text; //正文
string file = string.IsNullOrEmpty(txtPath.Text) ? null : txtPath.Text;
int contactNum = dgvContact.Rows.Count - ; //联系人数量
//循环给每个联系人发送指定数量的邮件
for (int i = ; i < contactNum; i++)
{
string mailTo = dgvContact.Rows[i].Cells[].Value.ToString(); //收件人
//发送指定数量的邮件
for (int j = ; j <= Int32.Parse(txtNum.Text); j++)
{
try
{
EmailHelper.SendEmail(serverHost, port, mailFrom, mailPwd, displayName, mailTo, mailSubject, mailBody, file);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
}
}
//验证输入是否有误
private bool IsValid()
{
//检测附件大小 发件必需小于10M 否则返回 不会执行以下代码
if (txtPath.Text != "")
{
if (!EmailHelper.CheckAttachment(txtPath.Text.Trim()))
{
return false;
}
}
if (txtSmtpServer.Text == "")
{
MessageBox.Show("请输入SMTP服务器名!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return false;
}
if (txtMailFromEx.Text == "")
{
MessageBox.Show("请输入发件人邮箱地址!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return false;
}
if (txtformPwd.Text == "")
{
MessageBox.Show("请输入发件人邮箱密码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return false;
} if (dgvContact.Rows.Count <= )
{
MessageBox.Show("请添加收件人!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return false;
}
return true;
}
//添加联系人
int i = ; //拼接联系人描述字段,加入联系人框
private void btnAddContact_Click(object sender, EventArgs e)
{
string Contact = txtMailToEx.Text + "@" + txtMailTo.Text;
for (int m = ; m < dgvContact.Rows.Count - ; m++)
{
if (dgvContact.Rows[m].Cells[].Value.ToString().Equals(Contact))
{
MessageBox.Show("已存在!");
return;
}
}
string[] row1 = new string[] { Contact, "Contacter" + i };
dgvContact.Rows.Add(row1);
i++;
}
//移除联系人
private void btnDelContact_Click(object sender, EventArgs e)
{
dgvContact.Rows.RemoveAt(dgvContact.Rows.Count - );
i--;
}
//添加附件
private void btnAttachment_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
txtPath.Text = openFileDialog1.FileName;
}
}
// 发送邮件后所处理的函数
private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
try
{
if (e.Cancelled)
{
MessageBox.Show("发送已取消!");
}
if (e.Error != null)
{
MessageBox.Show("邮件发送失败!" + "\n" + "技术信息:\n" + e.Error.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);
}
}

                                                          2013-12-19  11:05:05

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

  1. [工具-008] C#邮件发送系统

    邮件发送系统很多,但是我这边给大家展示下我最近开发的一款邮件发送系统,有参照网上的一个兄弟的界面,进行了升级,界面如下. 从界面上我们可以看到了该邮件系统有如下功能: 1)服务器的设置 2)发件人的设 ...

  2. Smtp邮件发送系统公用代码整理—总结

    1.前言 a.在软件开发中,我们经常能够遇到给用户或者客户推送邮件,推送邮件也分为很多方式,比如:推送一句话,推送一个网页等等.那么在系统开发中我们一般在什么情况下会使用邮件发送呢?下面我简单总结了一 ...

  3. EDM营销算法:python自动批量发邮件

    EDM营销:全称Email Direct Marketing,即电子邮件营销.企业可以通过使用EDM软件向目标客户发送EDM邮件,建立同目标顾客的沟通渠道,向其直接传达相关信息,用来促进销售.EDM软 ...

  4. SpringBoot邮件推送功能

    鞠躬,道歉 抱歉,迟到了近一年的更新,这一年挺忙的,发生了很多事情,就厚脸皮拖更了,抱歉. 现在状态回来了,打算分享下近期学到的东西,这一年期间学到的东西可能会随意更新,其实也就是玩了下C# + un ...

  5. 玩转 SpringBoot2.x 之整合邮件发送

    序 在实际项目中,经常需要用到邮件通知功能.比如,用户通过邮件注册,通过邮件找回密码等:又比如通过邮件发送系统情况,通过邮件发送报表信息等等,实际应用场景很多. 原文地址:https://www.mm ...

  6. 程序开发心理学阅读笔记——第II篇

    作为社会行为的软件开发程序开发组->程序开发团队->程序开发项目1.要判断程序员的某个集体是否构成一支团队,要看其中的成员以何种方式相互协作,以共同开发软件产品.2.健康的团队要始终能够保 ...

  7. Django——发送邮件

    Django--发送邮件 在web应用中,服务器对客户发送邮件来通知用户一些信息,可以使用邮件来实现. Django中提供了邮件接口,使我们可以快捷的建设一个邮件发送系统. 以下是一个简单实例: se ...

  8. Delphi 发送邮件 通过Office Outlook

    Delphi 发送邮件 通过Office Outlook 网上搜到的Delphi邮件发送系统,绝大多数是使用SMTP协议来发送. 但是事实上它们已经过时了,大多数邮件服务器已经屏蔽了Delphi In ...

  9. Web.Config文件配置之限制上传文件大小和时间

    在邮件发送系统或者其他一些传送文件的网站中,用户传送文件的大小是有限制的,因为这样不但可以节省服务器的空间,还可以提高传送文件的速度.下面介绍如何在Web.Config文件中配置限制上传文件大小与时间 ...

随机推荐

  1. Javascript中的Cookie操作

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  2. 拼写sql语句随笔

    DECLARE @str NVARCHAR(1000)='SELECT * FROM dbo.V_MicroUserInfo ',@where VARCHAR(1000)=' where 1=1' D ...

  3. 深入浅出Java并发包—锁(Lock)VS同步(synchronized)

    今天我们来探讨一下Java中的锁机制.前面我们提到,在JDK1.5之前只能通过synchronized关键字来实现同步,这个前面我们已经提到是属于独占锁,性能并不高,因此JDK1.5之后开始借助JNI ...

  4. 解决NTFS分区上的代码在linux上编译后没有权限执行

    win7下的cpp代码,在ubuntu下编译后,可执行文件不能执行,root也不行. 将代码拷贝到ubuntu上,再编译生成的可执行文件则可以执行.或者将win7分区上的可执行文件拷贝出来,然后chm ...

  5. HackDemo.java

    import java.io.*; import java.awt.*; public class HackDemo{ public static void main(String args[]) t ...

  6. MSSQLServer基础07(事务,存储过程,分页的存储过程,触发器)

    事务 事务:保证多个操作全部成功,否则全部失败,这处机制就是事务 思考:下了个订单,但是在保存详细信息时出错了,这样可以成功吗? 数据库中的事务:代码全都成功则提交,如果有某一条语句失败则回滚,整体失 ...

  7. epmap服务

    epmap是 tcp 135和udp135端口135端口的“epmap - DCE endpoint resolution”记录可以通过连接到135端口和做适当的查询列举出来. 135端口大多数情况下 ...

  8. Retrofit所有知识场景汇总

    https://futurestud.io/blog/retrofit-getting-started-and-android-client Retrofit Series Overview Gett ...

  9. [HDOJ1827]Summer Holiday(强连通分量,缩点)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1827 缩点后统计入度和当前强连通分量中最小花费,然后记录入度为0的点的个数和花费和就行了. /* ━━ ...

  10. Ubuntu下jdk配置

    在Oracle官网下载linux版本的以tar.gz结尾的jdk建立文件夹用来存放解压后的jdksudo mkdir /usr/java进入jdk下载文件夹,解压并存放jdksudo tar zxvf ...