+ -
当前位置:首页 → 问答吧 → GAE 接收mail问题

GAE 接收mail问题

时间:2011-09-14

来源:互联网

用GAE 来接收mail , session不被允许该怎么办?

错误讯息:
javax.mail.Session is a restricted class. Please see the Google App Engine developer's guide for more details.

之前有在网路上找过方法,
他说只要在appengine-web.xml这个档案下贴上<sessions-enabled>true</sessions-enabled>即可,
但我试完重新开启并执行档案后还是不行...

附上程式码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.*;
import java.util.Properties;
 
import javax.jdo.PersistenceManager;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeUtility;
import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class GmailFetch extends HttpServlet{ public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { /*Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());*/ final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
  Properties props = System.getProperties(); props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY); props.setProperty("mail.pop3.socketFactory.fallback", "false"); props.setProperty("mail.pop3.port", "995"); props.setProperty("mail.pop3.socketFactory.port", "995");
  Session session = Session.getDefaultInstance(props,null); URLName urln = new URLName("pop3","pop.gmail.com",995,null, "[email protected]", "xxxx"); try { Store store = session.getStore(urln); Folder inbox = null;
  try { store.connect(); inbox = store.getFolder("INBOX"); inbox.open(Folder.READ_ONLY); FetchProfile profile = new FetchProfile(); profile.add(FetchProfile.Item.ENVELOPE); Message[] messages = inbox.getMessages(); inbox.fetch(messages, profile); System.out.println("mail number:" + messages.length); for (int i = 0; i < messages.length; i++) { String from = decodeText(messages[i].getFrom()[0].toString()); InternetAddress ia = new InternetAddress(from); String gmail = messages[i].getSubject(); Mail mail = new Mail (gmail); PersistenceManager pm = PMF.get().getPersistenceManager(); try {   pm.makePersistent(mail);    } finally { pm.close(); }   resp.sendRedirect("/barcode.jsp"); System.out.println("FROM:" + ia.getPersonal()+'('+ia.getAddress()+')'); System.out.println("TITLE:" + mail); System.out.println("DATE:" + messages[i].getSentDate()+"\n");   } } finally { try { inbox.close(false); } catch (Exception e) {} try { store.close(); } catch (Exception e) {} } }catch (Exception e) {} }
  protected static String decodeText(String text) throws UnsupportedEncodingException { if (text == null) return null; if (text.startsWith("=?GB") || text.startsWith("=?gb")) text = MimeUtility.decodeText(text); else text = new String(text.getBytes("ISO8859_1")); return text; }  
}

作者: ACS097102   发布时间: 2011-09-14

http://code.google.com/intl/zh-TW/appengine/docs/java/mail/usingjavamail.html

请参考google文件库的内容 注意不支援Javamail的地方

虽然英文版的比较齐全 不过我想这个是不变的...

不支援 JavaMail 功能
应用程式收不到电子邮件讯息

作者: timeguard   发布时间: 2011-09-15

热门下载

更多