这几天整理前段时间的资料,发现很多有趣的东西,很多也是以前困扰了很久的问题。这个邮件发送的问题当初我就用了几天时间来搞,在网上查了很多资料,问了很多朋友才做成功的。也有很多值得注意的地方,总的归纳如下:
1. .net自带的System.Web.Mail类可以进行验证。具体的参看下面代码。
2.webform的发邮件程序在使用和调试时都要关闭防火墙和某些杀毒软件,要不会出现cpu占用100%的问题和其他很奇怪的问题;在这种情况下winform任然可以正常发送,不过杀毒软件要检测一下(我测试的时候的情况)。
3.要发送邮件的话必须要有smtp服务器,可以到163去申请一个用户名和密码就像申请邮箱那样申请,但是这样的话你发出去的邮件from地址始终是163.com的不能使用其他的。
4.或者自己建立一个邮件服务器,我使用的webeasymail企业版的,然后可以自己在这个服务器建立任何域名,程序里的from地址设置为你这里建立的域名即可,即使这个域名不存在或者没有被你申请。webeasymail帮助里面写的只要你能上网就可以发送邮件,不需要有域名,但是接收邮件必须要有域名。
下面贴出两段代码:
1.使用jmail发送的,使用的是163申请的用户名bmonkey1024和密码123456。
MessageClass email = new MessageClass();
email.Logging = true;
email.Silent = true;
email.MailServerUserName = "bmonkey1024";
email.MailServerPassWord = "123456";
email.From = "bmonkey1024@163.com";
email.Subject = "testjmail";
email.Body = "test jmail send mail";
email.Charset="GB2312";
email.ContentType="text/html";
email.AddRecipient("bmonkey@tom.com","","");
email.Send("smtp.163.com",false);
email.Close();
2.使用System.Web.Mail来发送邮件,在webeasymail里新建用户bmonkey,密码123456,域名testmymail。
MailMessage myMessage=new MailMessage();
myMessage.To="bmonkey@tom.com";
myMessage.From="bmonkey@testmymail.com";
myMessage.Subject="testWebMail";
myMessage.BodyFormat=MailFormat.Text;
SmtpMail.SmtpServer="127.0.0.1";
myMessage.Body="我终于发送成功了!";
myMessage.Fields.Add
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication
myMessage.Fields.Add
("http://schemas.microsoft.com/cdo/configuration/sendusername", "bmonkey"); //set your username here
myMessage.Fields.Add
("http://schemas.microsoft.com/cdo/configuration/sendpassword", "123456"); //set your password here
SmtpMail.Send(myMessage);
最后注意一下第二段代码里System.Web.Mail的验证方式。^_^,这是在joycode的blog上看到的,msdn里面没有哦。