欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# 邮件发送和接收实现代码

程序员文章站 2022-07-22 10:01:33
邮件发送 方法一:使用system.web.mail命名空间(此方法我测试没有成功过) 复制代码 代码如下:#region 发送邮件:此方法失败 protecte...
邮件发送
方法一:使用system.web.mail命名空间(此方法我测试没有成功过) 
复制代码 代码如下:

#region 发送邮件:此方法失败
protected void sendfailed()
{
system.web.mail.mailmessage mail = new system.web.mail.mailmessage();
mail.from = "test@ gmail.com";
mail.to = " test@ gmail.com ";
mail.subject = "for test";
mail.priority = system.web.mail.mailpriority.normal;
mail.bodyencoding = encoding.default;
mail.bodyformat = mailformat.html;
mail.body = "this is a email!<input type='button' value='ok'/>";
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/sendusername", "test"); //set your username here
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "****"); //set your password here
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/smtpserver", "smtp.gmail.com");
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", "587");
mail.fields.add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
smtpmail.smtpserver = "smtp.gmail.com";
smtpmail.send(mail);
}
#endregion

方法二:使用system.net.mail命名空间(此方法测试成功)
我使用的gmail的邮箱,以及他提供免费smtp服务,之前试了好几个邮箱都不成功。gmail的smtp服务必须经过ssl加密,才可以验证成功。
复制代码 代码如下:

#region 发送邮件:此方法可行
protected void sendsuccess()
{
system.net.mail.mailmessage message = new system.net.mail.mailmessage();
message.from = new mailaddress("test@gmail.com", "someone");//必须是提供smtp服务的邮件服务器
message.to.add(new mailaddress("test@yahoo.com.cn"));
message.subject = "测试邮件" ;
message.cc.add(new mailaddress("test@126.com"));
message.bcc.add(new mailaddress("test@126.com"));
message.isbodyhtml = true;
message.bodyencoding = system.text.encoding.utf8;
message.body = "邮件发送测试";
message.priority = system.net.mail.mailpriority.high;
smtpclient client = new smtpclient("smtp.gmail.com", 587); // 587;//gmail使用的端口
client.credentials = new system.net.networkcredential("test@gmail.com", "password"); //这里是申请的邮箱和密码
client.enablessl = true; //必须经过ssl加密
try
{
client.send(message);
response.write("邮件已经成功发送到" + message.to.tostring() + "<br>");
}
catch (exception ee)
{
response.write(ee.message + "<br>" /* + ee.innerexception.message*/ );
}
}
#endregion

邮件接收
我使用的是lumisoft.net这个开源的项目,也是从一个网友哪里看到的下载地址,然后自己看了下代码,写了个简单的接收方法。首先将代码中relrease目录下的dll文件引用到项目中。 
复制代码 代码如下:

using lumisoft.net.pop3.client;
using lumisoft.net.mail;
……
public ilist<mail_message> receivemail()
{
ilist<mail_message> maillist = new list<mail_message>();
using (pop3_client client = new pop3_client())
{
client.connect("pop.gmail.com",995,true);
client.authenticate("zw.seaman", "zw_seaman", false);
pop3_clientmessagecollection coll = client.messages;
for (int i = 0; i < coll.count; i++)
{
pop3_clientmessage message = coll[i];
mail_message mm = mail_message.parsefrombyte(coll[i].messagetobyte());
maillist.add(mm);
}
}
return maillist;
}
protected void page_load(object sender, eventargs e)
{
ilist<mail_message> maillist = new zmail.mail().receivemail();
foreach (mail_message mail in maillist)
{
stringbuilder sb = new stringbuilder();
sb.append(mail.from.tostring()).append("  发送给  ");
sb.append(mail.to.tostring()).append("<br/>") ;
sb.append(mail.subject).append("<br/>");
sb.append(mail.bodyhtmltext).append("<hr/>");
response.write(sb.tostring());
}
}

这两个方法很容易理解,只实现了最基本的功能,如果需要可以查看源代码获取更多信息。