这两天编辑部要求做个健康网上调查,将用户填写的信息发到指定的邮箱,调查信息内容是蛮大的,所以先设置个模板页面(JSP),用于发送邮箱显示用,然后通过用户的请求request.getQueryString()来获取提交的参数及值,再将它传回到模板中,想到用HttpClient来抓取模板页面HTML源码;再发送到指定的邮箱;
1、根据请求得到参数和值;如:name=qyj&age=28
String query=req.getQueryString();
2、 将参数传回模板,用于发送到邮箱用的HTML,再用httpClient 来抓取
HttpClient httpClient = new HttpClient();
GetMethod getMethod = new GetMethod("../js/mailContent.jsp?"+query);
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler());
int statusCode = httpClient.executeMethod(getMethod);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + getMethod.getStatusLine());
}
byte[] responseBody = getMethod.getResponseBody();
str=new String(responseBody,"UTF-8");//内容体编码
3、发送邮件
public String sendEmail(String str){
if(str.indexOf("null")>0)
str=str.replaceAll("null", " ");
String returnInfo="";
String tto="wu945@126.com";//
String ttitle="健康调表";
String tcontent=str;
Properties props=new Properties();
props.put("mail.smtp.host","smtp.126.com");
props.put("mail.smtp.auth","true");
Session s=Session.getInstance(props);
s.setDebug(true);
MimeMessage message=new MimeMessage(s);
// 给消息对象设置发件人/收件人/主题/发信时间
try{
InternetAddress from=new InternetAddress("t1717g@126.com");
message.setFrom(from);
InternetAddress to=new InternetAddress(tto);
message.setRecipient(Message.RecipientType.TO,to);
message.setSubject(ttitle);
message.setSentDate(new Date());
// 给消息对象设置内容
BodyPart mdp=new MimeBodyPart();//新建一个存放信件内容的BodyPart对象
mdp.setContent(tcontent,"text/html;charset=utf-8");//给BodyPart对象设置内容和格式/编码方式
Multipart mm=new MimeMultipart();//新建一个MimeMultipart对象用来存放BodyPart对象(事实上可以存放多个)
mm.addBodyPart(mdp);//将BodyPart加入到MimeMultipart对象中(可以加入多个BodyPart)
message.setContent(mm);//把mm作为消息对象的内容
message.saveChanges();
Transport transport=s.getTransport("smtp");
transport.connect("smtp.126.com","t1717g","123456.hz");
transport.sendMessage(message,message.getAllRecipients());
transport.close();
System.out.println("发送成功!");
returnInfo="success";
}catch (Exception e){
e.printStackTrace();
// TODO: handle exception
}
return returnInfo;
}
一开始是想用什么技术直接提取调查用的界面发到邮箱,但是图片啊,样式啊,主要是用户填写的信息不能直接获得,于是罢了;
其次,碰到的最大的问题就是编码问题,又编写了sevlet请求时的编码过滤
public void doFilter(ServletRequest req, ServletResponse rep,
FilterChain filterChain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request = (HttpServletRequest)req;
request.setCharacterEncoding("UTF-8");
HttpServletResponse respones = (HttpServletResponse)rep;
respones.setContentType("text/html;charset=UTF-8");
filterChain.doFilter(request, respones);
}
不过得在web.xml中配置下
<filter>
<filter-name>encodeFilter</filter-name>
<filter-class>com.juhe.yibao.EncodeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encodeFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodeFilter</filter-name>
<url-pattern>/jsp/mailContent.jsp</url-pattern>
</filter-mapping>
分享到:
相关推荐
方法2:利用httpclient模拟登录邮箱,抓取联系人页面的源代码---------使用http监听工具,抓出 邮箱登录、跳转(action)、联系人页面 等URL、form表单中隐藏的参数、高版本httpclient会自动管理cookie
在Java编程领域,获取邮箱联系人库文件是一项常见的需求,特别是在需要处理大量邮件通信或集成邮件服务的应用中。本文将详细讲解如何利用Java技术来实现这一功能,特别是针对国内邮箱API不开放的情况。 首先,标题...
在Java中,可以使用`java.net.URL`类来处理URL,`java.net.HttpURLConnection`或第三方库如Apache HttpClient来发送HTTP请求,`java.util.regex`包来解析HTML和提取链接。此外,HTML解析器如Jsoup可以帮助更有效地...
3. **模拟登录**:使用库如Apache HttpClient、Jsoup或Java内置的HttpURLConnection,可以构建模拟登录的功能。需要构造正确的HTTP请求,包含必要的cookies和session信息,以确保登录状态被正确维护。 4. **HTML...
22. **JavaMail发送邮件**:JavaMailSender接口。 23. **SQL注入防御**:预编译SQL,参数绑定。 24. **配置文件读写**:Properties,InputStream,OutputStream。 25. **图表生成**:jFreeChart库。 **高级知识点**...
在这个项目中,选择Java作为开发语言,是因为Java提供了丰富的库和工具,如Jsoup和HttpClient,便于进行网页解析和网络请求,使得构建网络爬虫变得更加便捷。 **缓存结果** 缓存机制是网络爬虫的一个重要组成部分...
7. **遵循Robots协议**:尊重网站的Robots.txt文件,避免抓取禁止抓取的页面。 8. **反爬虫策略**:网站可能会有反爬虫措施,如IP限制、验证码等,爬虫需要采取相应的应对策略。 在Java中实现这样的网络爬虫,可以...
涵盖了多种IT技术领域,包括HttpClient、Lucene、OCR(光学字符识别)、Pdf处理、Poi(处理Office文档)、Quartz(任务调度)、Jsoup(HTML解析)、多线程(Thread)操作、Freemarker(模板引擎)以及Email发送等...
5. **网页抓取**:对于需要爬取多个页面的情况,Microbot可能包含URL队列或深度优先/广度优先搜索算法,以遍历和抓取整个网站的链接。 6. **错误处理**:Microbot应具备错误处理机制,例如处理网络连接问题、HTTP...
此外,如果项目遵循开源许可,用户还可以根据需要修改代码,增加对更多学校的支持,或者添加新的功能,比如邮件提醒服务,当有新的招聘信息时自动发送通知。 总的来说,jobfetcher是一个利用Java技术实现的校园招聘...
2. **HttpClient** 或 **OkHttp**:这两个是HTTP客户端库,用于发送网络请求,获取网页内容。它们支持设置各种HTTP头,如User-Agent,Cookie等,这对于模拟浏览器行为,访问需要登录的网站至关重要。 3. **...