求C#根据登录名和密码获取搜狐或者新浪邮箱的收件箱文件 源码,200分

DataBox-MDX 2011-08-21 02:13:07
rt,哪位大侠有源码,急求,分数不够可以再给!qq:825838346
...全文
2039 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
子夜__ 2011-08-21
  • 打赏
  • 举报
回复

调用接口登陆进去就可以了?

<script language="JavaScript">
<!--
function log_submit(){
var User = document.mailForm.mail_name.value;
var ProNo = document.mailForm.mailSelect.value;
var mail_action = ProNo.split(";");
if(mail_action.length > 1)
{
if(mail_action[1]=="suffix")
User += "@"+mail_action[2];
else
("document.mailForm."+mail_action[1]+".value = '"+mail_action[2]+"';");
}
var Passwd = document.mailForm.mail_password.value;
var Formobj = document.mailForm;
function checkUserPass(){
if (User == ""){
alert("请填写用户名");
document.mailForm.mail_name.focus();
return false;
}
else if (Passwd == ""){
alert("请填写密码");
document.mailForm.mail_password.focus();
return false;
}
else {
return true;
}
}
if (checkUserPass()){
document.mailForm.action = mail_action[0];
document.mailForm.u.value = User;
document.mailForm.user.value = User;
document.mailForm.LoginName.value = User;
document.mailForm.username.value = User;
document.mailForm.UserName.value = User;
document.mailForm.login_name.value = User;
document.mailForm.login.value = User;
document.mailForm.psw.value = Passwd;
document.mailForm.pass.value = Passwd;
document.mailForm.passwd.value = Passwd;
document.mailForm.password.value = Passwd;
document.mailForm.Password.value = Passwd;
document.mailForm.login_password.value = Passwd;
document.mailForm.submit();
document.mailForm.mail_password.value = "";
}
return false;
}
//-->
</script>

<table cellspacing="0" align="left" style="border: 1px solid #c 0c0c0; font-size: 13px">
<tr style="color: #ffffff; background: #336699;">
<td align="left">
常用邮箱快速登录
</td>
<td align="right">
</td>
</tr>
<tr height="22">
<form method="post" target="_blank" name="mailForm" onsubmit='return log_submit();'>
<input type="hidden" name="u" value="">
<input type="hidden" name="user" value="">
<input type="hidden" name="LoginName" value="">
<input type="hidden" name="username" value="">
<input type="hidden" name="UserName" value="">
<input type="hidden" name="login_name" value="">
<input type="hidden" name="login" value="">
<input type="hidden" name="psw" value="">
<input type="hidden" name="language" value="">
<input type="hidden" name="pass" value="">
<input type="hidden" name="passwd" value="">
<input type="hidden" name="password" value="">
<input type="hidden" name="Password" value="">
<input type="hidden" name="login_password" value="">
<input type="hidden" name="url" value="">
<input type="hidden" name="BackURL" value="">
<td colspan="2">
<select name="mailSelect" size="1">
<option selected>选择您的邮箱</option>
<option value="http://mail.sina.com.cn/cgi-bin/login.cgi">@sina.com</option>
<option value="http://reg.163.com/in.jsp?url=http://fm163.163.com/coremail/fcg/ntesdoor2?username=wd.dm.mailForm.name.value">
@163.com</option>
<option value="http://login.mail.sohu.com/chkpwd.php">@sohu.com</option>
<option value="http://login.chinaren.com/zhs/servlet/Login;url;http:/mail.chinaren.com">
@ChinaRen.com</option>
<option value="http://bjweb.163.net/cgi/163/login_pro.cgi">@163.net</option>
<option value="http://bjweb.mail.tom.com/cgi/163/login_pro.cgi">@Tom.com</option>
<option value="http://webmail.21cn.com/NULL/NULL/NULL/NULL/NULL/SignIn.gen">@21cn.com</option>
<option value="https://edit.bjs.yahoo.com/config/login">@yahoo.com.cn</option>
<option value="http://entry.126.com/cgi/login">@126.com</option>
<option value="http://g2wm.263.net/xmweb">@263.net</option>
<option value="http://freemail.eyou.com/cgi-bin/login">@eyou.com</option>
<option value="http://vip.sina.com/cgi-bin/login.cgi">@vip.sina.com</option>
<option value="http://vip.163.com/payment/VipLogon.jsp">@vip.163.com</option>
<option value="http://paymail.china.com/extend/gb/NULL/NULL/NULL/SignIn.gen">@China.com</option>
<option value="http://mw1.elong.com/cgi-bin/weblogon.cgi">@elong.com</option>
<option value="http://login.etang.com/servlet/login;BackURL;http:/mail.etang.com/cgi/door">
@etang.com</option>
<option value="http://www.citiz.net/login.jsp">@citiz.net</option>
<option value="http://202.106.186.230/extend/newgb1/NULL/NULL/NULL/SignIn.gen">@email.com.cn</option>
</select>
<input type="submit" value="登录" style="background-color: #FFD700">
</td>
</tr>
<tr>
<td height="22" colspan="2">
用 户 名:<input name="mail_name" onfocus="this.select" size="12">
</td>
</tr>
<tr>
<td colspan="2">
登录密码:<input name="mail_password" onfocus="this.select" type="password" size="12">
</td>
</tr>
</form>
</table>

心灵彩虹 2011-08-21
  • 打赏
  • 举报
回复
C# 接收POP3服务器的邮件

注意接收邮件的协议有两种,一种是POP3,另外一种较为高级的协议是IMAP4,有的邮箱使用的是POP3协议,比如网易163免费邮箱、新浪免费邮箱、搜狐免费邮箱,有的邮箱使用的是IMAP4协议,比如Gmail免费邮箱,有的两种都可以,比如QQ邮箱。这些免费邮箱都需要做一些设置(例如选择开启POP3)才能开启从客户端(比如自己做的接收邮件的程序)接收邮件的功能。
using LumiSoft.Net.MIME;
using LumiSoft.Net.POP3.Client;
using LumiSoft.Net.Mail;
public void 收邮件()
{
POP3_Client _POP3客户端 = new POP3_Client();
string POP3服务器 = "pop.163.com";
string 用户名 = "user@163.com";
string 密码 = "password";
Mail_Message mime;
//POP3_ClientMessage message;
try
{
//if (_POP3客户端.IsConnected == false)
_POP3客户端.Connect(POP3服务器, 110);
_POP3客户端.Authenticate(用户名, 密码, true);
var q = (from POP3_ClientMessage x in _POP3客户端.Messages select x).OrderBy(x=>-x.SequenceNumber );
foreach (POP3_ClientMessage message in q)//倒序对于新邮件比较快
{
try
{
mime = Mail_Message.ParseFromByte(message.HeaderToByte());
}
catch { continue; }
//下面是接收附件的一种方法,假设只有一个附件。
mime = Mail_Message.ParseFromByte(message.MessageToByte());
Stream decodedDataStream = ((MIME_b_SinglepartBase)mime.Attachments[0].Body).GetDataStream();
string file = mime.Attachments[0].ContentType.Param_Name;
using (FileStream fs = File.Create(file ))
{ LumiSoft.Net.Net_Utils.StreamCopy(decodedDataStream, fs, 4000); }

_POP3客户端.Dispose(); _POP3客户端 = null;
}
}
catch (Exception x)
{
MessageBox.Show("接收邮件时发生异常: " + x.Message, "接收邮件", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
}
C#并没有一个类专门用来接收邮件,所以这里使用了第三方组件LumiSoft.Net,如果不用这些组件就得自己去研究POP3协议了这通常是一件吃力不讨好的事情。
接收邮件的步骤如下:
1,先连接POP3服务器,这里需要几个参数,一个是服务器,比如“pop.163.com”这个是网易免费邮箱用的。一个是服务器的端口,一般是110,不过不排除某些服务器有自己规定的可能。另外一个参数可能是关于是否开启SSL加密的选项。比如Gmail 邮箱就需要SSL加密连接。
_POP3客户端.Connect(POP3服务器, 110);
2,验证身份,至少需要用户名(一般就是邮箱地址了)、密码。有的可能允许用加密的方法验证,以防止帐户信息泄露。
_POP3客户端.Authenticate(用户名, 密码, true);
上面两步都有异步方式的方法,可以避免阻塞当前UI线程。
3,验证身份成功后就会得到一些基本的信息,比如邮箱中邮件的总数,总大小。在上面的代码中邮件叫作“message”。即 邮件=message
4,通过 foreach ( POP3_ClientMessage message in _POP3客户端.Messages )
可以一封一封的查看邮件。
这个时候整个邮件并没有下载下来,通过调用一些方法,可以下载指定的部分。
比如
mime = Mail_Message.ParseFromByte(message.HeaderToByte());
这个将读取指定的邮件的头部(Header)。为什么只读取头部呢?头部的字节数比较少,从中可以了解一些信息,比如邮件的主题、发信人、接收时间。有时根据一些字段(比如发信人、主题)就可以决定是否要下载整个邮件,这样可以加快遍历。如果邮件比较大(尤其是带有大附件的时候)下载整个邮件是需要比较长的时间的。
如果要下载附件,就是
mime = Mail_Message.ParseFromByte(message.MessageToByte());
Stream decodedDataStream = ((MIME_b_SinglepartBase)mime.Attachments[0].Body).GetDataStream();
检查 Attachments 的长度就知道有多少个附件了。不过关于附件在协议上是一个复杂的概念,例如附件有复合的附件、单独的附件等。一般以文件为附件的是单独类型的附件。
下载第二个附件就是 mime.Attachments[1] 。
string file = mime.Attachments[0].ContentType.Param_Name;
using (FileStream fs = File.Create(file ))
{ LumiSoft.Net.Net_Utils.StreamCopy(decodedDataStream, fs, 4000); }
mime.Attachments[0].ContentType.Param_Name; 是附件的文件名,也可以自定义。
另外一种比较简短的方法是:
mime = Mail_Message.ParseFromByte(message.MessageToByte());
byte[] bs=ss = ((MIME_b_SinglepartBase)mime.Attachments[0].Body).Data;
但此方法对于很大的附件例如 1G的附件可能会产生内存耗尽的问题。而采用流复制的方法则下载一部分就写到文件中一部分,不是一次性全下载到内存中。
关于UID
UID是邮件的标识,就像数组的下标一样。可以用 _POP3客户端.Messages[UID]引用指定的邮件。所以如果记录了UID,要想下载这个邮件就像索引数组那样简单,而不需要去对照邮件的字段例如 主题。
删除邮件
Messages.MarkForDeletion();
但这个删除操作是在释放客户端后才执行的。如果在正常的释放客户端资源之前发生异常,有可能不删除邮件。好像是因为没有接收到一个退出命令之前标记为删除的邮件是不会删除的。而客户端(指 POP3_Client 对象)在_POP3客户端.Dispose(); _POP3客户端 = null; 之前发生异常即可能意味着不能发出退出指令……
邮件的顺序
大体上,POP3_Client .Messages 中的对象其顺序是由时间顺序排列的,即先发的邮件排在前,后发的排在后。所以遍历操作先读到旧邮件。如果采用倒序方式来遍历,则先读到新邮件。
不过试验表明,在几分钟之内连续发的邮件,遍历到的顺序并不是按发邮件的时间排序的。例如:
2010-1-29 20:37:31 完成发送邮件:第 1 封邮件
2010-1-29 20:39:26 完成发送邮件:第 2 封邮件
2010-1-29 20:41:43 完成发送邮件:第 3 封邮件
2010-1-29 20:49:24 完成发送邮件:第 4 封邮件
2010-1-29 20:52:00 完成发送邮件:第 5 封邮件
2010-1-29 20:59:15 完成发送邮件:第 6 封邮件
2010-1-29 21:01:24 完成发送邮件:第 7 封邮件
2010-1-29 21:02:12 完成发送邮件:第 8 封邮件
2010-1-29 20:59:15 接收到邮件:第 6 封邮件
2010-1-29 20:41:43 接收到邮件:第 3 封邮件
2010-1-29 21:01:24 接收到邮件:第 7 封邮件
2010-1-29 20:49:23 接收到邮件:第 4 封邮件
2010-1-29 20:37:31 接收到邮件:第 1 封邮件
2010-1-29 20:39:25 接收到邮件:第 2 封邮件
2010-1-29 20:52:00 接收到邮件:第 5 封邮件
2010-1-29 21:02:12 接收到邮件:第 8 封邮件
但在大尺度时间范围,比如天与天之间的邮件则按时间顺序可以遍历:先读到旧邮件再到新邮件。可以考虑采用倒序方式遍历。
ares1986 2011-08-21
  • 打赏
  • 举报
回复
通过HttpRequest和HttpResponse可以做到
LMAOhuaNL 2011-08-21
  • 打赏
  • 举报
回复
貌似需要权限的吧
notepad--v3.4 windows Notepad--v3.4.0-plugin-Installer.exe 是win10下面的插件版安装包,会关联右键菜单等。 Notepad--v3.4.0-win10-portable.zip 是绿色免安装版本,解压即用,不会关联右键菜单注册表。 Ndd-quick-v3.3.0-win10-single-portable.zip 是单文件绿色免安装版,只包含皮肤和vc依赖库,不含插件、不含文件对比,主推轻量级、快速反应。适合只需要纯粹、轻快级,文本编辑器的用户。不定期发布。 MacOS 版本 Notepad--v3.4.0-mac_x64_12.3.dmg 是macos 12.x 及以后的版本。 Notepad--v3.4.0-mac_arm64_12.3.dmg 是macos 12.x 及以后 arm64 m1/m2芯片 的版本。第一次安装时,需要在设置偏好里面,放开苹果的安装限制,才能正常识别,请自行放开设置一下。 如果还是有问题,参考帖子:#I8JTJN:macOS Sonoma 14.1.1安装提示已损坏:macOS Sonoma 14.1.1安装提示已损坏 uos com.hmja.notepad_3.4.0.0_amd64.deb 是x64 cpu架构的uos系统对应的ndd版本。 其余系统版本后续会发布。 3.4 修改如下: 1 支持文件标签拖入拖出到新窗口的效果。 2 windows下修改快捷键放开。 3 按行号切文件。 4 大文件打开时,在文件夹查找所在目录,macos下可能会崩溃问题。 5 目录右键增加删除文件文件夹功能。 6 补充深色主题下rust语法高亮; lisp 语法失效问题。 7 linux下信号打开文件,不拿锁,打开文件在消息队列中去做。

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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