HtmlUnit邮件群发
来源:互联网 发布:简单力学分析软件 编辑:程序博客网 时间:2024/06/04 01:03
为了用Java编写一个邮件群发软件,接触到了htmlunit,没太大技术含量,仅是使用htmlunit经验。
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.HttpMethod;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.WebRequest;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.util.NameValuePair;
public class MySina {
private WebClient client;
private WebRequest request;
private String sinaLoginUrl = "http://mail.sina.com.cn/cgi-bin/login.php";
private String hostSinaUrl = "";
public static void main(String[] args)
throws FailingHttpStatusCodeException, MalformedURLException,
IOException {
String username = "***";
String password = "***";
String newpassword = "***";
String nickname = "***";
MySina mySina = new MySina();
if(mySina.mailLoginBySina(username, password)){ //登录
mySina.updatePwdBySina(password,newpassword); //修改密码
mySina.updateNickName(nickname); //修改帐户昵称
}else{
System.out.println("登录失败!请检查用户名和密码是否正确!");
}
}
public MySina() {
client = new WebClient(BrowserVersion.INTERNET_EXPLORER_8);
client.setJavaScriptEnabled(false);
}
/**
*
* 更改帐户昵称
*
* @param nickname
* 昵称
* @return boolean
* @throws FailingHttpStatusCodeException
* @throws IOException
*/
public boolean updateNickName(String nickname)
throws FailingHttpStatusCodeException, IOException {
String sinaSetUrl = hostSinaUrl + "basic/setting_account";
request = new WebRequest(new URL(sinaSetUrl),HttpMethod.POST);
request.setCharset("utf-8");
request.setRequestParameters(Arrays.asList(
new NameValuePair("nickname", nickname),
new NameValuePair("pop3", "on"),
new NameValuePair("imap", "on")));
client.getPage(request);
HtmlPage p = client.getPage(hostSinaUrl + "classic/index.php");
if (p.getBody().getTextContent()
.indexOf("\"NickName\":\"" + nickname + "\"") > 0) {
return true;
} else {
return false;
}
}
/**
*
* 修改密码
*
* @param oldpassword
* 旧密码
* @param newpassword
* 新密码
* @return boolean
* @throws FailingHttpStatusCodeException
* @throws IOException
*/
public boolean updatePwdBySina(String oldpassword, String newpassword)
throws FailingHttpStatusCodeException, IOException {
String sinaSetUrl = "http://login.sina.com.cn/member/security/password.php";
request = new WebRequest(new URL(sinaSetUrl),HttpMethod.POST);
request.setCharset("gbk");
request.setRequestParameters(Arrays.asList(
new NameValuePair("pass",oldpassword),
new NameValuePair("pass1", newpassword),
new NameValuePair("pass2", newpassword)));
HtmlPage p = client.getPage(request);
if (p.getBody().getTextContent().indexOf("您的密码修改成功") > 0) {
return true;
} else {
return false;
}
}
/**
* 登录
*
* @param username
* 用户名
* @param password
* 密码
* @return boolean
* @throws FailingHttpStatusCodeException
* @throws MalformedURLException
* @throws IOException
*/
public boolean mailLoginBySina(String username, String password)
throws FailingHttpStatusCodeException, MalformedURLException,
IOException {
HtmlPage loginPage = client.getPage(sinaLoginUrl);
HtmlForm loginForm = loginPage.getFormByName("free");
HtmlInput u = loginForm.getInputByName("u");
HtmlInput psw = loginForm.getInputByName("psw");
HtmlSubmitInput loginButton = loginForm.getInputByName("登录");
u.setValueAttribute(username);
psw.setValueAttribute(password);
HtmlPage result = loginButton.click();
String resultUrl = result.getUrl().toString();
if (resultUrl.indexOf("classic/index.php") > 0) {
String regex = "http://(.*?)/";
hostSinaUrl = myRegex(resultUrl, regex, null);
if (hostSinaUrl.length() > 0) {
return true;
} else {
return false;
}
} else {
return false;
}
}
/**
*
* 正则匹配替换
*
* @param str
* @param reg
* @param replace
* @return
*/
public String myRegex(String str, String reg, String[] replace) {
String result = null;
Matcher m = Pattern.compile(reg).matcher(str);
while (m.find()) {
result = m.group();
if (replace != null && replace.length > 0) {
for (String s : replace) {
result = result.replace(s, "");
}
}
}
return result;
}
}
没太大技术含量,仅是使用htmlunit经验。
附上htmlunit jar文件和API http://files.cnblogs.com/skillCoding/htmlunit-2.9-bin.zip
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.HttpMethod;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.WebRequest;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.util.NameValuePair;
public class MySina {
private WebClient client;
private WebRequest request;
private String sinaLoginUrl = "http://mail.sina.com.cn/cgi-bin/login.php";
private String hostSinaUrl = "";
public static void main(String[] args)
throws FailingHttpStatusCodeException, MalformedURLException,
IOException {
String username = "***";
String password = "***";
String newpassword = "***";
String nickname = "***";
MySina mySina = new MySina();
if(mySina.mailLoginBySina(username, password)){ //登录
mySina.updatePwdBySina(password,newpassword); //修改密码
mySina.updateNickName(nickname); //修改帐户昵称
}else{
System.out.println("登录失败!请检查用户名和密码是否正确!");
}
}
public MySina() {
client = new WebClient(BrowserVersion.INTERNET_EXPLORER_8);
client.setJavaScriptEnabled(false);
}
/**
*
* 更改帐户昵称
*
* @param nickname
* 昵称
* @return boolean
* @throws FailingHttpStatusCodeException
* @throws IOException
*/
public boolean updateNickName(String nickname)
throws FailingHttpStatusCodeException, IOException {
String sinaSetUrl = hostSinaUrl + "basic/setting_account";
request = new WebRequest(new URL(sinaSetUrl),HttpMethod.POST);
request.setCharset("utf-8");
request.setRequestParameters(Arrays.asList(
new NameValuePair("nickname", nickname),
new NameValuePair("pop3", "on"),
new NameValuePair("imap", "on")));
client.getPage(request);
HtmlPage p = client.getPage(hostSinaUrl + "classic/index.php");
if (p.getBody().getTextContent()
.indexOf("\"NickName\":\"" + nickname + "\"") > 0) {
return true;
} else {
return false;
}
}
/**
*
* 修改密码
*
* @param oldpassword
* 旧密码
* @param newpassword
* 新密码
* @return boolean
* @throws FailingHttpStatusCodeException
* @throws IOException
*/
public boolean updatePwdBySina(String oldpassword, String newpassword)
throws FailingHttpStatusCodeException, IOException {
String sinaSetUrl = "http://login.sina.com.cn/member/security/password.php";
request = new WebRequest(new URL(sinaSetUrl),HttpMethod.POST);
request.setCharset("gbk");
request.setRequestParameters(Arrays.asList(
new NameValuePair("pass",oldpassword),
new NameValuePair("pass1", newpassword),
new NameValuePair("pass2", newpassword)));
HtmlPage p = client.getPage(request);
if (p.getBody().getTextContent().indexOf("您的密码修改成功") > 0) {
return true;
} else {
return false;
}
}
/**
* 登录
*
* @param username
* 用户名
* @param password
* 密码
* @return boolean
* @throws FailingHttpStatusCodeException
* @throws MalformedURLException
* @throws IOException
*/
public boolean mailLoginBySina(String username, String password)
throws FailingHttpStatusCodeException, MalformedURLException,
IOException {
HtmlPage loginPage = client.getPage(sinaLoginUrl);
HtmlForm loginForm = loginPage.getFormByName("free");
HtmlInput u = loginForm.getInputByName("u");
HtmlInput psw = loginForm.getInputByName("psw");
HtmlSubmitInput loginButton = loginForm.getInputByName("登录");
u.setValueAttribute(username);
psw.setValueAttribute(password);
HtmlPage result = loginButton.click();
String resultUrl = result.getUrl().toString();
if (resultUrl.indexOf("classic/index.php") > 0) {
String regex = "http://(.*?)/";
hostSinaUrl = myRegex(resultUrl, regex, null);
if (hostSinaUrl.length() > 0) {
return true;
} else {
return false;
}
} else {
return false;
}
}
/**
*
* 正则匹配替换
*
* @param str
* @param reg
* @param replace
* @return
*/
public String myRegex(String str, String reg, String[] replace) {
String result = null;
Matcher m = Pattern.compile(reg).matcher(str);
while (m.find()) {
result = m.group();
if (replace != null && replace.length > 0) {
for (String s : replace) {
result = result.replace(s, "");
}
}
}
return result;
}
}
没太大技术含量,仅是使用htmlunit经验。
附上htmlunit jar文件和API http://files.cnblogs.com/skillCoding/htmlunit-2.9-bin.zip
0 0
- HtmlUnit邮件群发
- //群发邮件
- 邮件群发
- 群发邮件
- 群发邮件
- 邮件群发
- 邮件群发
- 邮件群发
- 群发邮件
- 群发邮件
- jsp中群发邮件群发邮件
- jsp中群发邮件群发邮件实例
- 邮件群发常识
- 群发邮件的方法
- 群发送邮件类
- 群发送邮件类
- 群发送邮件类
- php邮件群发
- spring笔记 多线程的支持
- Android studio 导入工程 出现错误
- ReactJs 技巧
- 关于csdn的赵老师
- 老D的博客
- HtmlUnit邮件群发
- JSON_Foundation_解析本地文件
- Struts2中的ModelDriven机制及其运用
- Android自定义控件之会缩放的GridView
- 腾讯产品总监曹菲:产品经理们,五年后,你会失业吗? 【上】
- Android摄像头启动顺序
- android studio 配置dragger
- github iOS源码
- ScrollView嵌套GridView,ListView自动滚动到第一条Item的解决办法