总结:使用.net发送Email方法
在此非常感谢http://blog.youkuaiyun.com/zhoufoxcn
在.net1.0 及.net21.1中的方法:
在此引用using System.Web.Mail;在vs2008中需要自己添加引用
MailMessage objMailMessage;
objMailMessage = new MailMessage();
objMailMessage.From = "bmj_apple@sina.com";//源邮件地址
objMailMessage.To = "bai.mingjiang@gmail.com";//目的邮件地址,也就是发给我哈
objMailMessage.Subject = "邮件发送标题:你好";//发送邮件的标题
objMailMessage.Body = "邮件发送标内容:测试一下是否发送成功!将附件附加到邮件消息对象中";//发送邮件的内容
//objMailMessage.Attachments.Add(“附件”);//将附件附加到邮件消息对象中
//基本权限
objMailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
//用户名
objMailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "bmj_apple");
//密码
objMailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "*****密码****");
//SMTP地址,也可换其他的服务器,但有些邮件不提供smtp服务,比如163
SmtpMail.SmtpServer = "smtp.sina.com.cn";
//开始发送邮件
try
{
SmtpMail.Send(objMailMessage);
MessageBox.Show("Sended!");
}
catch (FormatException ex)
{
MessageBox.Show(ex.Message);
}
第二种方法,就是在.net2.0及以后版本中提供了SmtpClient对象,使用起来比较方便,需要引入using System.Net.Mail;
try
{
string from = "496775119@qq.com";
string to = "bai.mingjiang@gmail.com";
string subject = "邮件发送标题:你好";
string body = "邮件发送标内容:测试一下是否发送成功!将附件附加到邮件消息对象中";
string mailServerName = "smtp.qq.com"; //新浪的是smtp.sina.com
using (MailMessage message = new MailMessage(from, to, subject, body))
{
SmtpClient mailClient = new SmtpClient(mailServerName);
mailClient.Port = 25;
mailClient.UseDefaultCredentials = false;
mailClient.Credentials = new NetworkCredential("496775119@qq.com", "**密码^_^**");
//添加验证信息,用户名及密码,这里说明下,有的邮箱用户名是@前半部分的,有的是全的
mailClient.Send(message);
}
MessageBox.Show("Send!");
}
catch (FormatException ex)
{
MessageBox.Show(ex.Message + "2");
}
catch (SmtpException ex)
{
MessageBox.Show(ex.Message + "1");
}
遇到的几种问题:
1. 没有考虑到那些邮箱服务是否提供smtp服务,比如使用163,据说是163的邮箱有个政策,几月份之后的邮箱是不能用smtp的,这时抛出这样的信息:
服务器响应为: óã»§±»ëø¶¨
2. 我使用的发送邮箱没有设置开通smtp服务,费了好大劲,这时抛出的异常是:
SMTP 服务器要求安全连接或客户端未通过身份验证。 服务器响应为: Authentication required
3. smtp端口的问题,一般默认的都一样,可是gmail则不是的,具体的还没查清楚