首页 > 代码库 > c#之 简单stmp/pop邮件服务(一)—— 发送邮件
c#之 简单stmp/pop邮件服务(一)—— 发送邮件
c#的邮件服务,主要有两种。
一种是利用JMail组件,进行收发。
另一种是利用vs自带的stmp/pop3邮件服务,来实现。
我将要讲解的是利用stmp/pop3邮件服务。原因无它。vs自己就有,无需安装插件之类。
首先,我们要添加stmp/pop3邮件服务类的命名空间:
using System.Net.Mail;
接下来,我给出源代码,并给出详细注释!是一个邮件发送函数,已测试成功。
如果你只想用,而不想理解那么多细节,那么在最后面,我给出了一个比较精简的发送邮箱函数(点击此处链接),希望,对你有帮助!
/// <summary>
/// 邮件发送
/// </summary>
/// <param name="strTo">收信对象邮箱</param>
/// <param name="strSubject">邮件主题</param>
/// <param name="strBody">邮件内容</param>
public static bool SendEmail(string strTo, string strSubject, string strBody)
{
string strSmtpServer = "smtp.163.com"; //163邮件服务器
string strFrom = "*****@163.com"; //用户邮箱
string strFromPass = "****";//用户密码
//string strSmtpServer = "smtp.qq.com"; //qq邮件服务器
//string strSmtpServer = "202.108.3.190"; //新浪邮件服务器
SmtpClient client = new SmtpClient(strSmtpServer);//创建邮箱服务器对象
client.UseDefaultCredentials = false;//获取或设置是否使用默认凭据访问 Web 代理服务器
client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass);//创建用户对象
client.DeliveryMethod = SmtpDeliveryMethod.Network;//投递方式
MailMessage message = new MailMessage(); //创建邮件对象
message.From = new MailAddress(strFrom); //发信人地址
message.To.Add(strTo); //添加收信人地址
message.Subject = strSubject; //邮件主题
message.Body = strBody; //邮件内容
//当然,你也把上面五条语句简化为如下:
//MailMessage message = new MailMessage(strFrom, strto, strSubject, strBody);
//添加附件,要注意的是,发送附件可能会慢点,耐心等下!
//Attachment attachment = new Attachment("e://a.xls"); //创建附件对象,括号内参数为要添加的附件所在的地址
// message.Attachments.Add(attachment); //添加到邮件
message.BodyEncoding = System.Text.Encoding.UTF8;//获取或设置用于邮件正文的编码
message.IsBodyHtml = true;//取得或设定值,指出电子邮件的主体是否为 HTML
if (!string.IsNullOrEmpty(strBody))//判断邮件内容是否为空
{
try
{
client.Send(message);//发送
MessageBox.Show("发送成功!");
return true;
}
catch(Exception ex)
{
MessageBox.Show("发送失败:"+ex.Message);
return false;
}
}
else
{
MessageBox.Show("不能发送空信息!");
return false;
}
}
这里,再举一个调用该函数的例子:
SendEmail("*****@qq.com","测试", "发送成功!");
这里还要说明下邮件服务的一些细节,对于发邮件而言是stmp协议,而要接收邮件把stmp改成pop就可以,在以后的文章中,
将介绍到如何接收邮件:
1.qq邮箱
邮件服务器:smtp.qq.com
但要注意一点,qq的stmp/pop3服务必须开启才能连接,开启方法详见:
http://service.mail.qq.com/cgi-bin/help?subtype=1&&no=308&&id=26
2.163邮箱
邮件服务器:smtp.163.com
3.新浪邮箱
邮件服务器:202.108.3.190
对于想设置为新浪邮箱的服务器的朋友,有三点要注意下:
1.服务器名设置不能用stmp.sina.com, 而是用它的ip地址,不信,你试试。
2.它的stmp/pos3功能要手动开启,方法同qq一样,这里就不重复了。
3.它不能发送qq邮件
下面是上面代码的精简版:
/// <summary>
/// 邮件发送
/// </summary>
/// <param name="strTo">收信对象邮箱</param>
/// <param name="strSubject">邮件主题</param>
/// <param name="strBody">邮件内容</param>
public static bool SendEmail2(string strto, string strSubject, string strBody)
{
string strSmtpServer = "smtp.163.com"; //163邮件服务器
string strFrom = "*******@163.com";
string strFromPass = "*******";
SmtpClient client = new SmtpClient(strSmtpServer);
client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
MailMessage message = new MailMessage(strFrom, strto, strSubject, strBody);
//添加附件,要注意的是,发送附件可能会慢点,耐心等下!
//Attachment attachment = new Attachment("e://a.xls"); //创建附件对象,括号内参数为要添加的附件所在的地址
//message.Attachments.Add(attachment); //添加到邮件
try
{
client.Send(message);
MessageBox.Show("发送成功!");
return true;
}
catch (Exception ex)
{
MessageBox.Show("发送失败:" + ex.Message);
return false;
}
}
【引用】http://blog.csdn.net/kkfdsa132/article/details/5388228