发送邮件程序(Csharp2005)

我觉得懂得编写发送邮件客服端丰常重要.这可以把它嵌入到你的软件里加强与用户的沟通与可以收集程运行的错误信息.以与我编写一小的发送邮件客服端来与在家交流.
程序如下:

发送邮件解决方案下载

接下来,我来说一下我开发的过程与体会:
创建发送邮件客服端步骤:
1.创建Smtp服务器.
2.创建发件人,与收件人邮箱地址.
3.创建发送信息.
4.建件发送附件.

1.Smtp服务器,可用本地的也可以用其它的可用有Smtp服务器.如。smtp.126.com;smtp163.com.
需要注意的时:
(1)如果用本的的,本地要装Smtp用服也就是系统组件,默认没有安装。
(2)如果用邮件服务商的,你要有其上面的帐号与密码,即你要申请个邮箱,做为的身份认证。
(3)smtp类初始化时只能用IP而不能用用务器名称。因为我个人觉得,一般提供邮件服务都有好几台服务器。你在CMD命令行里,pingsmtp.126.com,在不同时候返回不同的IP。这个问题找了很久才发觉。所在在程序里要用先得到,Smtp服务器的IP列表,然后用PING命令判断那个可用。然后再用此IP来初始化Smtp服务类。
取得SMTP服务器列表.
http://xuanfeng.cnblogs.com/archive/2006/05/15/400158.html(此连接是有我一编写的一个取得网络信息的解决方案可以查找服务器的IP地址的列表.)
IPAddress[]IpAddress=Dns.GetHostEntry(ServerName).AddressList;
Pingping=newPing();
PingReplypingReply=null;
//取得smt服务器可用的IP
foreach(IPAddressIPinIpAddress)
{
pingReply=ping.Send(IP);
if(pingReply.Status==IPStatus.Success)
{
ip=IP.ToString();
break;

}

}

SmtpClient_my=newSmtpClient(ip,Port);


2.创建发件人,与收件人邮箱地址.
MailAddress_from=newMailAddress(Tb_Email_from.Text,Tb_Print.Text);
MailAddress_to=newMailAddress(Tb_Email_to.Text);

3.创建发送信息
MailMessage_my=newMailMessage();
MailMessage_my.Subject=Tb_Content.Text;
MailMessage_my.ReplyTo=MailAddress_from;
MailMessage_my.Sender=MailAddress_from;
MailMessage_my.From=MailAddress_from;
MailMessage_my.To.Add(MailAddress_to);


4.建件发送附件.

Attachment_my=newAttachment(path,MediaTypeNames.Application.Octet);

注意要控制附件的大小,因为很多邮件服务商附件大小都是有限件的。

FileStreamFileStream_my=newFileStream(path,FileMode.Open);
stringname=FileStream_my.Name;
intsize=(int)(FileStream_my.Length/1024);
//控制文件大小不大于10M
if(size>10240)
{

MessageBox.Show("文件长度不能大于10M!你选择的文件大小为{0}",size.ToString());
return;
}

FileStream_my.Close();

5。发送后事件处理。
创建事件
SmtpClient_my.SendCompleted+=newSendCompletedEventHandler(SmtpClient_my_SendCompleted);
事件处理函数。
voidSmtpClient_my_SendCompleted(objectsender,AsyncCompletedEventArgse)
{
if(e.Cancelled)
{MessageBox.Show("发送已取消!");}
if(e.Error!=null)
{

MessageBox.Show(e.UserState.ToString()+"发送错误:"+e.Error.Message,"发送错误",MessageBoxButtons.OK,MessageBoxIcon.Error);

}
else
{
MessageBox.Show("邮件成功发出!","恭喜!",MessageBoxButtons.OK,MessageBoxIcon.Information);
}

}
#endre

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
主要功能: 1、可以发送带附件的邮件,附件可以是多个,附件大小限制由发送方服务器而定,暂未测试具体为多少MB 2、邮件内容和主题可以是空,但当有附件时,主题取第一个附件的文件名(不含扩展名) 3、密码验证均为base64加密 4、邮件正文和附件的数据传送方式,均为base64 5、自动解析发件箱的SMTP服务器 压缩包文件简介: base.c:包含一些基本的函数,其中有一些在此程序中并未用到,只要使用了其中的base64加密算法 mail.c:包含邮件发送、数据读取、编码转换、smtp服务器连接、ip解析等函数 mailsend.c:包含main的c源文件,mail.exe则是根据mailsend.c、mail.c、base.c编译成的,具体编译方 法可参考makefile libbase.a:make之后生成的静态库 moontalk.cfg:base.c用到的配置文件,可能没用,放在这里进攻阅读参考 mail.cfg:自定义用户的配置文件,可用可不用,用作读代码的参考 mail.exe:邮件发送的执行文件,仅有命令行模式完善了,逐步输入(直接双击)的方式还不完善 b64.exe:base64加密解密的小工具,仅供参考,mail.cfg中用到密码的地方,可以使这个工具得到。 makefile:工程编译链接文件 注意:在本地使用mingw环境开发,遵循ANSI C标准,本地有系统的工程库,但是上传的时候,把这些文件 都放在一起了,可以先参考makefile进行工程调整,如果有任何问题,请发送到邮箱moontalk@yeah.net, 技术交流,不胜感激。
以下是一个使用C#编写的控制台程序,用于发送邮件: ```csharp using System; using System.Net; using System.Net.Mail; class Program { static void Main(string[] args) { // 设置邮件服务器 string smtpServer = args[0]; int smtpPort = 25; SmtpClient client = new SmtpClient(smtpServer, smtpPort); // 设置发件人 string from = args[1]; string displayName = args[2]; MailAddress fromAddress = new MailAddress(from, displayName); // 设置收件人 string to = args[3]; MailAddress toAddress = new MailAddress(to); // 创建邮件对象 MailMessage message = new MailMessage(fromAddress, toAddress); // 设置抄送和密送 if (args.Length > 4) { string[] cc = args[4].Split(','); foreach (string c in cc) { message.CC.Add(c); } } if (args.Length > 5) { string[] bcc = args[5].Split(','); foreach (string b in bcc) { message.Bcc.Add(b); } } // 设置主题和内容 message.Subject = args[6]; message.Body = args[7]; // 添加附件 if (args.Length > 8) { string[] attachments = args[8].Split(','); foreach (string attachment in attachments) { Attachment file = new Attachment(attachment); message.Attachments.Add(file); } } // 发送邮件 client.Send(message); Console.WriteLine("邮件发送成功!"); } } ``` 在命令行中输入以下命令即可发送邮件: ``` SendMail 邮件服务器IP 发件人 显示名称 收件人 抄送 密送 主题 内容 文件 ``` 其中,邮件服务器IP、发件人、显示名称、收件人、主题和内容是必填项,抄送、密送和文件是可选项。如果有多个收件人、抄送或密送,可以用逗号分隔。如果有多个文件,也可以用逗号分隔。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值