我要用.NET(C#或ASP.NET)做一个邮件发送程序,在CSDN上看了很多关于邮件发送的解决方案,但实际上真正能实现的不多,因为都没有考虑邮件服务器的配置,我尝试过用JMAIL组件:(如下)
private void Button2_Click(object sender, System.EventArgs e)
{
try
{
jmail.Message  Jmail=new jmail.Message();
DateTime t=DateTime.Now;   
String Subject=" From EMail .net";   
String body="你好科学12:15";
String FromEmail="[email protected]";   
String ToEmail="[email protected]";
//Silent属性:如果设置为true,JMail不会抛出例外错误. JMail. Send( () 会根据操作结果返回true或false
Jmail.Silent=true;
//Jmail创建的日志,前提loging属性设置为true
Jmail.Logging=true;
//字符集,缺省为"US-ASCII"
Jmail.Charset="GB2312";
//信件的contentype. 缺省是"text/plain") : 字符串如果你以HTML格式发送邮件, 改为"text/html"即可。
Jmail.ContentType="text/html";
//添加收件人
Jmail.AddRecipient(ToEmail,"","");
Jmail.From=FromEmail;
//发件人邮件用户名
Jmail.MailServerUserName="goodtyl" ;
//发件人邮件密码
Jmail.MailServerPassWord="dearwife" ;
//设置邮件标题
Jmail.Subject=Subject;
//邮件添加附件,(多附件的话,可以再加一条Jmail.AddAttachment( "c:\\test.jpg",true,null);)就可以搞定了。[注]:加了附件,讲把上面的Jmail.ContentType="text/html";删掉。否则会在邮件里出现乱码。
//Jmail.AddAttachment( "c:\\test.jpg",true,null);
//邮件内容
Jmail.Body=body+t.ToString();
//Jmail发送的方法
Jmail.Send("wife",false);
Jmail.Close() ; }
catch(Exception bc)
{}
}
也尝试过用.NET自带的system.web.mail类:(如下)
private void Button1_Click(object sender, System.EventArgs e)
{
try
{
MailMessage Message = new MailMessage();
Message.To = "[email protected]";
Message.From = "[email protected]";
Message.Subject = "aa";
Message.Body = "aaaaaa!";
//Message.Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"] = 2;
//Message.Fields["http://schemas.microsoft.com/cdo/configuration/sendemailaddress"] = "[email protected]";//发送地址;如果mm.From写了这儿可以不写这句
//Message.Fields["http://schemas.microsoft.com/cdo/configuration/smtpaccountname"] = "[email protected]"; 
Message.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"] = "goodtanweina";//验证账号:发送者邮箱账号
Message.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"] = "dearwife"; //验证密码:发送者邮箱密码
Message.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"] = 1; //验证级别0,1,2
//Message.Fields["http://schemas.microsoft.com/cdo/configuration/languagecode"] = 0x0804;//语言代码
//Message.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"] = "SMTP.XXX.com"; //SMTP Server try
{
SmtpMail.SmtpServer = "wife";
SmtpMail.Send(Message);
}
catch(System.Web.HttpException ehttp)
{
TextBox1.Text = ehttp.Message + "\n" + ehttp.ToString();
}
}
catch(Exception eee)
{
this.Response.Write(eee.ToString());
}
}
以上代码运行都不报错,但实际上不能正确的发送邮件
我分析了原因,我采用的是WIN2000默认的SMTP邮件服务器,设置也很简单,估计是这个邮件服务器功能太弱,惟一运行成功的几次是偶尔可以把邮件发到hotmail里面去,求高手指点,详细说明一下采用什么的邮件服务器,如何配置,能解决上面的问题!谢谢!!!!!

解决方案 »

  1.   

    基于.NET的邮件解决方案基于.NET的邮件解决方案第一次开始使用.net的System.Web.Mail消息组件,觉得很好用,而且简单。但后来发现.net自带的SmtpMail不支持SMTP认证,而且许多许多SMTP服务器不只需要登陆验证,还对MAILFrom作了验证(比如263),如果和登陆用的用户名不符也不能发信。再有就是pop3邮件的信息解析问题,比如说解析出中文。总结起来邮件问题也就2个问题:一是smtp的身份验证,二是pop3邮件的信息解析问题。 以上两个问题,也正是ms没有提供部分的核心问题。我也问过ms的专家,有关mail解决方案的问题,他们也没给我一个什么样答复。网上也有不少高手倾情奉献自己的源码,可上述的两个问题始终都没有(或我没在网上找到)。看有些coder们现在正在找这些,所以,还是把我的解决方案提供给大家,只是给大家一个参考。 用Jmail组件:可以解决上述两个问题,Jmail组件(Ver4.3)发送时提供身份验证,而且接收的信息解析问题也能得到很好解决! 以下是两个WEBService方法    '发送Email   <WebMethod()>PublicFunctionJmail_Send(ByValfromEmailAddressAsString,_                       ByValtoEmailAddressAsString,_                       ByValccEmailAddressAsString,_                       ByValbccEmailAddressAsString,_                       ByValsubjectAsString,_                       ByValbodyAsString,ByValMailServerAsString)AsBoolean        DimemailAsNewjmail.Message()       email.Logging=True       email.Silent=True       '  email.MailServerUserName="" 'smtp服务器用户名       '  email.MailServerPassWord="" 'smtp服务器密码       email.From=fromEmailAddress       email.Subject=subject       email.Body=body       email.AddRecipient(toEmailAddress)       Ifemail.Send(MailServer)Then           ReturnTrue       Else           ReturnFalse       EndIf   EndFunction    '接收Email   <WebMethod()>PublicFunctionJmail_Receivemail(ByValUserNameAsString,_                       ByValPasswordAsString,ByValMailServerAsString)AsBoolean        DimemailAsNewjmail.POP3()       DimMSGAsNewjmail.Message()        email.Connect(UserName,Password,MailServer,110)        Ifemail.Count()>0Then           MSG=email.Messages.Item(1)            Debug.Write(MSG.FromName)           Debug.Write(MSG.Subject)           Debug.Write(MSG.Date)           Debug.Write(MSG.Body)           ReturnTrue       EndIf       email.Disconnect()   EndFunction  以上代码是利用Jmail发送、接收邮件代码的一个原形,大家可以在此基础上扩充。Jmail提供了强大的邮件发送及处理功能,你不用自己费太长的时间,就可以完成所有需要的功能,不是很好么?当然,你也可以自己写组件,接收邮件可以用ImportsSystem.Convert来进行Base64的处理,进行解码!但愿大家都能找到适合自己的解决方案!
      

  2.   

    有一个开源的邮件组件,我感觉发送邮件不错,我拿它做群发软件名字叫做 OpenSmtp 吧
      

  3.   

    能不能请高手详细解释一下jmail组件中各个属性的含义?
    我用WIN2000默认的SMTP邮件服务器,加.NET内的system.web.mail类写出来的发送邮件的程序,只能发到hotmail这样的邮箱中去,不晓得怎么回事?是不是因为hotmail是基于http协议的原因啊?
    如果能够介绍一下邮件服务器方面就好了,我专做办公OA的开发,谢谢指点!!