asp.net(C#) 中如何接收邮件(pop)和解码

duanlongk 2008-11-16 10:43:27
asp.net(C#) 中如何接收邮件(pop)和解码
请大侠们慷慨解囊,最好贴代码上来哦,不够可以再加分
...全文
689 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
cgjkjk 2009-01-28
  • 打赏
  • 举报
回复
学习了,谢谢赐教!已收藏。
Stony1980 2008-12-05
  • 打赏
  • 举报
回复
太好了
mjjzg 2008-11-16
  • 打赏
  • 举报
回复
要的话联系我,我刚做成的一个收发邮件的工具
gengwanshanreally 2008-11-16
  • 打赏
  • 举报
回复
up!
三碗猪脚 2008-11-16
  • 打赏
  • 举报
回复
同样的问题,顶了。
lxlnet 2008-11-16
  • 打赏
  • 举报
回复
学习ing,留个脚印。
mengxj85 2008-11-16
  • 打赏
  • 举报
回复
学习+收藏
cat_hsfz 2008-11-16
  • 打赏
  • 举报
回复
System.Net.Mail下面的类足够你用了,如果涉及邮件正文的编码,可以用System.Text.Encoding下面的类。
qinhl99 2008-11-16
  • 打赏
  • 举报
回复
不用你写了,你直接可以用,呵呵
http://sourceforge.net/projects/hpop/
baobaoxiong_840123 2008-11-16
  • 打赏
  • 举报
回复
using System; 
using System.Net.Mail;
using System.Net;

/// <summary>
/// 说明:在.net2.0以上版本中发送电子邮件的方法示例
/// 用到的类主要位于System.Net.Mail和System.Net命名空间下
/// 作者:周公
/// 日期:2008-08-08
/// 首发地址:http://blog.csdn.net/zhoufoxcn
/// </summary>
public class SendMail2
{
public SendMail2()
{
}

/// <summary>
/// 发送邮件
/// </summary>
/// <param name="to">收件人邮件地址</param>
/// <param name="from">发件人邮件地址</param>
/// <param name="subject">邮件主题</param>
/// <param name="body">邮件内容</param>
/// <param name="username">登录smtp主机时用到的用户名,注意是邮件地址'@'以前的部分</param>
/// <param name="password">登录smtp主机时用到的用户密码</param>
/// <param name="smtpHost">发送邮件用到的smtp主机</param>
public void Send(string to, string from, string subject, string body, string userName, string password, string smtpHost)
{
MailAddress from = new MailAddress(from);
MailAddress to = new MailAddress(to);
MailMessage message = new MailMessage(from, to);
message.Subject = subject;//设置邮件主题
message.IsBodyHtml = true;//设置邮件正文为html格式
message.Body = body;//设置邮件内容
SmtpClient client = new SmtpClient(smtpHost);
//设置发送邮件身份验证方式
//注意如果发件人地址是abc@def.com,则用户名是abc而不是abc@def.com
client.Credentials = new NetworkCredential(userName, password);
client.Send(message);
}
}


在上面的代码中,主要用到了在.net2.0中新增的两个类,分别是System.Net.Mail.MailMessage和System.Net.Mail.SmtpClient两个类,在SMTP身份验证方面用到了System.Net.NetworkCredential类。



需要注意的是:不管是在那种方式下,身份验证用到的帐号是网页登录是用到的帐号,如果你的邮箱地址是zhou@163.com,在登录mail.163.com邮箱的时候,输入的帐号是zhou而不是zhou@163.com,身份验证的时候也是如此。

行者无疆-Kevin 2008-11-16
  • 打赏
  • 举报
回复
using System;
using System.Text;
using System.IO;
using Email.POP3;

namespace TestPOP3
...{
class example
...{
[STAThread]
static void Main(string[] args)
...{
//我测试的时候用的是163的邮箱,163的免费POP邮件服务器是pop.163.com。而163官方给出的是
//pop.126.com在这里不能用,原因是这个邮件服务器是有SSL加密的,GMAIL我也测试了也不能用都是这个原因
POP3 objPOP3 = new POP3("pop.163.com", 110, "用户名", "密码");
Console.WriteLine(objPOP3.Connect() ? "Connected" : "Can't connect");
try
...{
if (objPOP3.IsAPOPSupported)
...{
Console.WriteLine(objPOP3.SecureLogin() ? "Secure Logged in" : "Can't login");
}
else
...{
Console.WriteLine(objPOP3.Login() ? "Logged in" : "Can't login");
}
objPOP3.QueryServer();
Console.WriteLine("Emails count: " + objPOP3.TotalMailCount);
//以下的FOR循环是显示出所有收件箱里面的邮件信息
for (int i = 1; i <= objPOP3.TotalMailCount; i++)
...{
EmailMessage objEmail = objPOP3.GetMessage(i, false); // use true to get headers only
Console.WriteLine("NEW MESSAGE:------------------");
Console.WriteLine("FROM: " + objEmail.From);
Console.WriteLine("TO: " + objEmail.To);
Console.WriteLine("CC: " + objEmail.Cc);
Console.WriteLine("SUBJECT: " + objEmail.Subject);
Console.WriteLine("DATE: " + objEmail.Date);
Console.WriteLine("CONTENT-TYPE: " + objEmail.ContentType);
Console.WriteLine("CHARSET: " + objEmail.Charset);
Console.WriteLine("MESSAGE-ID: " + objEmail.GetCustomHeader("Message-ID"));
Console.WriteLine("MESSAGE SIZE: " + objEmail.Size);
if (objEmail.IsAnyAttachments)
...{
for (int a = 0; a < objEmail.Attachments.Count; a++)
...{
//调用邮件附件的方法
processAttachment((Attachment)objEmail.Attachments[a], 1);
}
}
else
...{
Console.WriteLine("BODY: " + Encoding.Default.GetString(Convert.FromBase64String(objEmail.Body)));
}
//下面注册掉的代码是删除该邮件
//objPOP3.DeleteMessage(i);

}
objPOP3.Close();
}
catch (System.Exception e)
...{
Console.WriteLine(e.Message);
Console.ReadLine();
objPOP3.Close();
return;
}

}

static void processAttachment(Attachment att, int nesting)
...{
for(int i = 0; i < nesting * 2; i++) Console.Write("-");

//以下注释掉的代码可以打开,以下都是关于邮件附件的相关信息,因为我只需要得到附件的文件信息^_^

//Console.WriteLine("ATT: ");
//Console.WriteLine("ContentTransferEncoding: " + att.ContentTransferEncoding);
//Console.WriteLine("ContentType: " + att.ContentType);
//Console.WriteLine("EstimatedSize: " + att.EstimatedSize);
//Console.WriteLine("FileName: " + att.FileName);
//processBody("HtmlBody", att.HtmlBody);
//processBody("TextBody", att.TextBody);
//Console.WriteLine("IsAnyAttachments: " + att.IsAnyAttachments);
//Console.WriteLine("IsFileAttachment: " + att.IsFileAttachment);
if (att.IsAnyAttachments)
...{
for (int a = 0; a < att.Attachments.Count; a++)
...{
processAttachment((Attachment)att.Attachments[a], nesting * 2);
}
}
if(att.IsFileAttachment)
...{
//这里说一下在保存邮件附件之前必须"c:\pop3"该文件夹是存在的,否则是保存不了的
att.Save(@"c:\pop3" + att.FileName);
Console.WriteLine("附件保存成功!附件名称为:" + att.FileName);
}
}

static void processBody(string bodytype, string body)
...{
if (body == null)
...{
Console.WriteLine(bodytype + ": null");
return;
}
if (body.Length > 1000)
...{
Console.WriteLine(bodytype + ": " + body.Substring(0, 1000) + "...");
}
else
...{
Console.WriteLine(bodytype + ": " + body);
}
}
}
}
蚊子的 2008-11-16
  • 打赏
  • 举报
回复
不会~~~

WebSiteEMAIL...
iuhxq 2008-11-16
  • 打赏
  • 举报
回复
帮顶
duanlongk 2008-11-16
  • 打赏
  • 举报
回复
大虾,,能否将Email.POP3命名空间里的内容赐予小弟啊,没有那个,,也没办法读懂你的东西啊
duanlongk 2008-11-16
  • 打赏
  • 举报
回复
大虾,我现在想做的是收件,asp.net的邮件收取,大虾可否给予帮助哦
??
duanlongk 2008-11-16
  • 打赏
  • 举报
回复
哥,这个是发邮件,,我想要收邮件
zorro75317 2008-11-16
  • 打赏
  • 举报
回复
zlb789 2008-11-16
  • 打赏
  • 举报
回复
关注下

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧