c#如何接收email呀,注意是“接收”(搞一天了没搞出来)

woodyy 2008-11-13 11:51:41
c#如何接收email呀,注意是“接收”。

不是发送呀。发送的我已经搞定了,就是不知道怎么接收。

查了一天了,郁闷死了。


查到一个用jmail的,可是tmd的免费版的少一个dll,只能发送。

也查了几个其他第三方的东西,发现都不行,不是版本不照,就是莫名的错误。


谁有c#接收email的源代码,给兄弟贴出来共享下,好吗?


十分感谢呀
...全文
288 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuelong3489 2008-12-02
  • 打赏
  • 举报
回复
ExtGetSetting()是什么方法?我用出来呀!
三碗猪脚 2008-11-14
  • 打赏
  • 举报
回复
我搞过,能收,但是邮件解码比较麻烦,尤其是带附件的。没有搞定,后来就搁下了。Mark
gimse7en 2008-11-14
  • 打赏
  • 举报
回复
mark
ustbwuyi 2008-11-14
  • 打赏
  • 举报
回复
当时代码写得比较乱,应该还有很多可以优化的地方
ustbwuyi 2008-11-14
  • 打赏
  • 举报
回复
以前搞过,接收麻烦得很,以前写的一个jmail接收的,注意是jmail4.4pro 版本,其它版本都会有一些或多或少的

附件标题或者正文乱码问题。

public void ReceiveMails(string Username)
{

jmail.Message Msg=new jmail.Message();
jmail.POP3 jpop = new jmail.POP3();
jmail.Attachments atts;
jmail.Attachment att;

//username为用户名,该方法通过用户名获取该用户的pop设置,即用户的POP用户名,密码,POP服务器地址以及端口号这四个参数,这四个参数是连接POP服务器的必用参数.
SqlDataReader dataReader = this.ExtGetSetting(Username);
if(dataReader.Read())
{
if(dataReader["PopServer"].ToString()!=""&&dataReader["PopUsername"].ToString()!="")
{
//连接POP服务器
jpop.Connect(dataReader["PopUsername"].ToString(),dataReader["PopPassword"].ToString(),dataReader["PopServer"].ToString(),Int32.Parse(dataReader["PopPort"].ToString()));
//如果服务器上有邮件
if(jpop.Count>=1)
{
for(int i=1;i<=jpop.Count;i++)
{

Msg = jpop.Messages[i];
atts=Msg.Attachments;

//取数据库中邮件信息中的最大发送时间,即最近接收到的一封邮件的时间
Database dbase=new Database();
DataTable data=dbase.GetDataTable("select max(MailSendDate) as MailSenderDate from TabMailList where MailTypeFlag='1'");

//对服务器上的邮件的发送时间和数据库最近一封邮件的时间进行比较,如果大那么证明该邮件还未被收取,是一封新邮件,这样避免重复收取邮件入库
if(Msg.Date>Convert.ToDateTime(data.Rows[0][0].ToString()))

{
//将这封新邮件的信息保存到数据库
this.SaveExtMail(Msg,Username,dataReader["Email"].ToString(),jpop.GetMessageUID(i));

//获取附件上传到服务器并且将信息存入数据库
if(atts.Count>=1)
{
for(int k=0;k<atts.Count;k++)
{

att=atts[k];//获得附件

string attname=att.Name;
try
{

Random TempNameInt = new Random();
string NewMailDirName = TempNameInt.Next(100000000).ToString();
Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath(".")+"\\AttachFiles\\"+Username+"\\"+NewMailDirName);

string mailPath="\\AttachFiles\\"+Username+"\\"+NewMailDirName+"\\"+attname;

att.SaveToFile(System.Web.HttpContext.Current.Server.MapPath(".")+mailPath);

//获取该封邮件在数据库的ID,以便和附件信息相对应,取邮件表中的最大ID即可
int mailID=this.GetMailID();
//将附件信息存入数据库
this.AttExtSend(mailID,attname,att.Size,mailPath,Msg.From);
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}

}
}
}
}
}

//删除服务器上的邮件
jpop.DeleteMessages();
//断开连接
jpop.Disconnect();
}

}
}

jiang_jiajia10 2008-11-14
  • 打赏
  • 举报
回复
学习
woodyy 2008-11-14
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 jzywh 的回复:]
引用 19 楼 woodyy 的回复:
难道c#真的没法接收email吗??靠,这么强大的微软竟然做不了这个小小的功能???


你用C#写一个POP3 client不就ok了, 只实现几个收邮件的命令就够了.
Email的parser比较麻烦,要考虑到很多种兼容情况, 所以很容易出问题.

C#这个工具是强大的,但是你不要指望它什么事情都帮你做好然后再放到你面前。
[/Quote]

哎,有那么简单吗??真的搞一整天没搞出来
chinaxc 2008-11-14
  • 打赏
  • 举报
回复
自个写pop3,跟发邮件一样简单。
chinaxc 2008-11-14
  • 打赏
  • 举报
回复
晕,发错了。顶楼主一下。
chinaxc 2008-11-14
  • 打赏
  • 举报
回复

public bool SendMail(string from, string to, string subject, string body, string smthost, string username, string userpass)
{
try
{
string[] strArray = to.Split(new char[] { ',' });
foreach (string str in strArray)
{
MailMessage message = new MailMessage();
message.From = new MailAddress(from);
message.To.Add(new MailAddress(str.Trim()));
message.Subject = subject;
message.Body = body;
message.IsBodyHtml = true;
SmtpClient client = new SmtpClient();
client.Host = smthost;
client.UseDefaultCredentials = true;
client.Credentials = new NetworkCredential(username, userpass);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Send(message);
}
return true;
}
catch
{
return false;
}
}



jzywh 2008-11-14
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 woodyy 的回复:]
难道c#真的没法接收email吗??靠,这么强大的微软竟然做不了这个小小的功能???
[/Quote]

你用C#写一个POP3 client不就ok了, 只实现几个收邮件的命令就够了.
Email的parser比较麻烦,要考虑到很多种兼容情况, 所以很容易出问题.

C#这个工具是强大的,但是你不要指望它什么事情都帮你做好然后再放到你面前。
yangsongshuang 2008-11-14
  • 打赏
  • 举报
回复
10 楼的也给我发一份,非常感谢!! yangsongshuang@163.com 谢谢啦
woodyy 2008-11-14
  • 打赏
  • 举报
回复
难道c#真的没法接收email吗??靠,这么强大的微软竟然做不了这个小小的功能???
enihs 2008-11-14
  • 打赏
  • 举报
回复
...大家等几天吧,我挂blog上去
guofuyou 2008-11-14
  • 打赏
  • 举报
回复
10 楼的也给我发一份,非常感谢!! guofuyouren@126.com 谢谢啦
Jack123 2008-11-14
  • 打赏
  • 举报
回复
gongybin@gmail.com
Thanks~
yeinuse 2008-11-14
  • 打赏
  • 举报
回复
有源码不如贴出来,大家一起分享咯
  • 打赏
  • 举报
回复

10 楼的给我也发一份,不胜感激!! chuntian1983@163.com 谢谢啊
enihs 2008-11-14
  • 打赏
  • 举报
回复
楼上两位朋友 已经发了,请查收
woodyy 2008-11-14
  • 打赏
  • 举报
回复
woodyy@126.com
希望能给我一份,十分感谢呀
加载更多回复(8)

62,266

社区成员

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

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

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

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