jingygr 发表于 2011-11-5 19:58:37

[已解决]谁能写一个163自动发邮箱的代码(不是用jmail,而是用页面模拟)

本帖最后由 jingygr 于 2012-7-9 13:01 编辑

大家好,小弟正在学习如果自动发送邮件。

对于mail.163.com这个邮箱,我不懂得如何自动输入邮件的收件人、标题及正文。

因为163邮箱中,一直用内嵌的iframe页面。现在是能取得这些内嵌页面的URL,但是里面有很多输入框input没有ID或名字。所以不知道怎么定位到这些输入框中。

麻烦大家帮我想想办法,谢谢

dnbj2010 发表于 2011-11-6 08:58:24

试一下用tab键来切换
----------------------------$oIE=ObjCreate("InternetExplorer.Application.1")            ; 建立 IE 对象
$SinkObject=ObjEvent($oIE,"IEEvent_","DWebBrowserEvents2")
$oIE.Visible=1                                          
$oIE.RegisterAsDropTarget = 1                           
$oIE.RegisterAsBrowser = 1
$oIE.Navigate( "http://mail.163.com/" )   ;定位网址
sleep(3000)       ; 载入网页需要的时间
Send("xxxxxx")    ;用<tab>键切换行?
Send("{tab}")   ;切换
Send("******")    ;输入密码
Send("{ENTER}")   ;输完密码直接回车确定

dnbj2010 发表于 2011-11-6 09:09:04

有可能IE缓存邮箱用户名,影响模拟输入,清空一下Cookies就可以了。

ye5022 发表于 2011-11-6 14:35:13

不记得是在哪里看到得一个源码!!

#include <IE.au3>
$username = 'aaaaaaaa'
$password = 'bbbbbbbb'
$oIE = _IECreate("http://mail.163.com")
$oform = _IEGetObjByName($oIE, "login163")
$oQuery1 = _IEFormElementGetObjByName($oform, "username");
_IEFormElementSetValue($oQuery1, $username);
$oQuery2 = _IEFormElementGetObjByName($oform, "password")
_IEFormElementSetValue($oQuery2, $password);
$Elements = _IEFormElementGetCollection($oform)
For $Element In $Elements
;MsgBox(0, "Form Element Type", "Form: " & $Element.form.name & " Type: " & $Element.type)
If $Element.type = "Submit" Then $Element.click
Next

cxlater 发表于 2011-11-6 20:13:40

楼主要的不是自动登录吧

jingygr 发表于 2011-11-7 15:23:54

楼主要的不是自动登录吧
cxlater 发表于 2011-11-6 20:13 http://www.autoitx.com/images/common/back.gif


    不是自动登录。而是自动发送。登录及打开写信窗口我都已经写好了。就是不知道怎么设置写信界面中的那些input的值(不懂得自动填写收件人、标题、邮件正文)

jingygr 发表于 2011-11-7 15:24:05

回复 4# ye5022


   
    不是自动登录。而是自动发送。登录及打开写信窗口我都已经写好了。就是不知道怎么设置写信界面中的那些input的值(不懂得自动填写收件人、标题、邮件正文)

jingygr 发表于 2011-11-7 15:24:14

回复 2# dnbj2010


   
    不是自动登录。而是自动发送。登录及打开写信窗口我都已经写好了。就是不知道怎么设置写信界面中的那些input的值(不懂得自动填写收件人、标题、邮件正文)

dnbj2010 发表于 2011-11-7 18:45:15

回复 8# jingygr
--------------------------------------------
呵呵,我是坐标定位,刚看了这个贴子,试了一下也是可以的,看这里
http://www.autoitx.com/thread-28540-1-1.html

......._IETagNameGetCollection.....

论坛有很多贴子都很有启发性,可以多逛逛,多搜搜。

dnbj2010 发表于 2011-11-8 08:47:22

又试了一下,发现 _IETagNameGetCollection 在163邮箱登陆时是有效的,但登陆之后就不行了。
从_IEDocReadHTML ($oIE) 返回的源码分析,登陆之后为:

<IFRAME style="WIDTH: 100%; POSITION: absolute; HEIGHT: 100%" border=0 name=index src="index.jsp?sid=rCaMvyWREdLyebUuZvRRLKAwnwnSwVwb" frameBorder=0></IFRAME>

这样子,本人没办法了,看高手怎样来获取吧?
咱们低手,就用低手的方法吧:
用窗口信息工具查询目标控件的坐标,然后
MouseClick ("left",x坐标, y坐标,1)

xzxnovice 发表于 2011-11-8 18:13:16

点"写信"后,直接send()就可以填写收件人了, 不是吗?

水木子 发表于 2011-11-9 12:42:49

回复 1# jingygr

是这样吗?
http://www.autoitx.com/forum.php?mod=viewthread&tid=20915&highlight=

xz00311 发表于 2011-11-9 15:28:02

试一下看看能不能用

xz00311 发表于 2011-11-9 15:29:10

本帖最后由 xz00311 于 2011-11-9 15:41 编辑

网络问题发了这么多

xz00311 发表于 2011-11-9 15:38:14

本帖最后由 xz00311 于 2011-11-9 15:41 编辑

网络问题希望管理见谅把那些多出来的删除掉
页: [1] 2
查看完整版本: [已解决]谁能写一个163自动发邮箱的代码(不是用jmail,而是用页面模拟)