blackbook 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. data/History.txt +18 -0
  2. data/Manifest.txt +55 -0
  3. data/README.txt +71 -0
  4. data/Rakefile +38 -0
  5. data/init.rb +1 -0
  6. data/lib/blackbook.rb +80 -0
  7. data/lib/blackbook/exporter/base.rb +16 -0
  8. data/lib/blackbook/exporter/vcf.rb +45 -0
  9. data/lib/blackbook/exporter/xml.rb +28 -0
  10. data/lib/blackbook/importer/aol.rb +74 -0
  11. data/lib/blackbook/importer/base.rb +39 -0
  12. data/lib/blackbook/importer/csv.rb +61 -0
  13. data/lib/blackbook/importer/gmail.rb +59 -0
  14. data/lib/blackbook/importer/hotmail.rb +125 -0
  15. data/lib/blackbook/importer/page_scraper.rb +86 -0
  16. data/lib/blackbook/importer/yahoo.rb +61 -0
  17. data/test/fixtures/aol_bad_login_response_stage_3.html +565 -0
  18. data/test/fixtures/aol_contacts.html +90 -0
  19. data/test/fixtures/aol_login_response_stage_1.html +158 -0
  20. data/test/fixtures/aol_login_response_stage_2.html +559 -0
  21. data/test/fixtures/aol_login_response_stage_3.html +61 -0
  22. data/test/fixtures/aol_login_response_stage_4.html +48 -0
  23. data/test/fixtures/aol_login_response_stage_5.html +404 -0
  24. data/test/fixtures/gmail.csv +3 -0
  25. data/test/fixtures/gmail_bad_login_response_stage_2.html +560 -0
  26. data/test/fixtures/gmail_contacts.html +228 -0
  27. data/test/fixtures/gmail_login_response_stage_1.html +556 -0
  28. data/test/fixtures/gmail_login_response_stage_2.html +1 -0
  29. data/test/fixtures/gmail_login_response_stage_3.html +249 -0
  30. data/test/fixtures/hotmail_bad_login_response_stage_2.html +31 -0
  31. data/test/fixtures/hotmail_contacts.html +132 -0
  32. data/test/fixtures/hotmail_login_response_stage_1.html +31 -0
  33. data/test/fixtures/hotmail_login_response_stage_2.html +1 -0
  34. data/test/fixtures/hotmail_login_response_stage_3.html +380 -0
  35. data/test/fixtures/yahoo_bad_login_response_stage_2.html +443 -0
  36. data/test/fixtures/yahoo_contacts.csv +3 -0
  37. data/test/fixtures/yahoo_contacts_not_logged_in.html +432 -0
  38. data/test/fixtures/yahoo_contacts_stage_1.html +399 -0
  39. data/test/fixtures/yahoo_login_response_stage_1.html +433 -0
  40. data/test/fixtures/yahoo_login_response_stage_2.html +16 -0
  41. data/test/scripts/live_test.rb +25 -0
  42. data/test/test_blackbook.rb +60 -0
  43. data/test/test_blackbook_exporter_base.rb +16 -0
  44. data/test/test_blackbook_exporter_vcf.rb +52 -0
  45. data/test/test_blackbook_exporter_xml.rb +16 -0
  46. data/test/test_blackbook_importer_aol.rb +107 -0
  47. data/test/test_blackbook_importer_base.rb +24 -0
  48. data/test/test_blackbook_importer_csv.rb +60 -0
  49. data/test/test_blackbook_importer_gmail.rb +96 -0
  50. data/test/test_blackbook_importer_hotmail.rb +143 -0
  51. data/test/test_blackbook_importer_page_scraper.rb +51 -0
  52. data/test/test_blackbook_importer_yahoo.rb +97 -0
  53. data/test/test_helper.rb +47 -0
  54. data/vendor/plugins/blackbook/lib/autotest/blackbook.rb +27 -0
  55. data/vendor/plugins/blackbook/lib/autotest/discover.rb +3 -0
  56. metadata +147 -0
@@ -0,0 +1,3 @@
1
+ Name,E-mail,Notes,Section 1 - Description,Section 1 - Email,Section 1 - IM,Section 1 - Phone,Section 1 - Mobile,Section 1 - Pager,Section 1 - Fax,Section 1 - Company,Section 1 - Title,Section 1 - Other,Section 1 - Address
2
+ Joe User,joeuser@example.com,
3
+ Some Guy,someguy@example.com,
@@ -0,0 +1,560 @@
1
+
2
+ <html lang="en" dir="ltr">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
+ <style type=text/css>
6
+ <!--
7
+ body,td,div,p,a,font,span {font-family: arial,sans-serif}
8
+ body {margin-top:2}
9
+
10
+ .c {width: 4; height: 4}
11
+
12
+ .bubble {background-color:#C3D9FF}
13
+
14
+ .tl {padding: 0; width: 4; text-align: left; vertical-align: top}
15
+ .tr {padding: 0; width: 4; text-align: right; vertical-align: top}
16
+ .bl {padding: 0; width: 4; text-align: left; vertical-align: bottom}
17
+ .br {padding: 0; width: 4; text-align: right; vertical-align: bottom}
18
+
19
+ .caption {color:#000000; white-space:nowrap; background:#E8EEFA; text-align:center}
20
+
21
+ .form-noindent {background-color: #ffffff; border: #C3D9FF 1px solid}
22
+
23
+ .feature-image {padding: 15 0 0 0; vertical-align: top; text-align: right; }
24
+ .feature-description {padding: 15 0 0 10; vertical-align: top; text-align: left; }
25
+
26
+ // -->
27
+ </style>
28
+ <script type=text/javascript src="https://mail.google.com/mail?view=page&name=browser"></script>
29
+ <script type=text/javascript>
30
+ <!--
31
+
32
+ var start_time = (new Date()).getTime();
33
+
34
+ if ((top.location != self.location)&&(top.location.href.indexOf('https://www.google.com/analytics/siteopt/preview')!=0)) {
35
+ top.location = self.location.href;
36
+ }
37
+
38
+ function SetGmailCookie(name, value) {
39
+ document.cookie = name + "=" + value + ";path=/;domain=.google.com";
40
+ }
41
+
42
+ function lg() {
43
+ var now = (new Date()).getTime();
44
+
45
+ var cookie = "T" + start_time + "/" + start_time + "/" + now;
46
+ SetGmailCookie("GMAIL_LOGIN", cookie);
47
+ }
48
+
49
+ function gaiacb_onLoginSubmit() {
50
+ lg();
51
+ if (!fixed) {
52
+ FixForm();
53
+ }
54
+ return true;
55
+ }
56
+
57
+ function StripParam(url, param) {
58
+ var start = url.indexOf(param);
59
+ if (start == -1) return url;
60
+ var end = start + param.length;
61
+
62
+ var charBefore = url.charAt(start-1);
63
+ if (charBefore != '?' && charBefore != '&') return url;
64
+
65
+ var charAfter = (url.length >= end+1) ? url.charAt(end) : '';
66
+ if (charAfter != '' && charAfter != '&') return url;
67
+ if (charBefore == '&') {
68
+ --start;
69
+ } else if (charAfter == '&') {
70
+ ++end;
71
+ }
72
+ return url.substring(0, start) + url.substring(end);
73
+ }
74
+ var fixed = 0;
75
+ function FixForm() {
76
+ if (is_browser_supported) {
77
+ var form = el("gaia_loginform");
78
+ if (form && form["continue"]) {
79
+ var url = form["continue"].value;
80
+ url = StripParam(url, "ui=html");
81
+ url = StripParam(url, "zy=l");
82
+ form["continue"].value = url;
83
+ }
84
+ }
85
+ fixed = 1;
86
+ }
87
+ function el(id) {
88
+ if (document.getElementById) {
89
+ return document.getElementById(id);
90
+ } else if (window[id]) {
91
+ return window[id];
92
+ }
93
+ return null;
94
+ }
95
+ // Estimates of nanite storage generation over time.
96
+ var CP = [
97
+ [ 1175414400000, 2835 ],
98
+ [ 1192176000000, 2912 ],
99
+ [ 1193122800000, 4321 ],
100
+ [ 1199433600000, 6283 ],
101
+ [ 2147328000000, 43008 ],
102
+ [ 46893711600000, Number.MAX_VALUE ]
103
+ ];
104
+ var quota;
105
+ var ONE_PX = "https://mail.google.com/mail/images/c.gif?t=" +
106
+ (new Date()).getTime();
107
+ function LogRoundtripTime() {
108
+ var img = new Image();
109
+ var start = (new Date()).getTime();
110
+ img.onload = GetRoundtripTimeFunction(start);
111
+ img.src = ONE_PX;
112
+ }
113
+ function GetRoundtripTimeFunction(start) {
114
+ return function() {
115
+ var end = (new Date()).getTime();
116
+ SetGmailCookie("GMAIL_RTT", (end - start));
117
+ }
118
+ }
119
+ function MaybePingUser() {
120
+ var f = el("gaia_loginform");
121
+ if (f.Email.value) {
122
+ new Image().src = 'https://mail.google.com/mail?gxlu=' +
123
+ encodeURIComponent(f.Email.value) +
124
+ '&zx=' + (new Date().getTime());
125
+ }
126
+ }
127
+ function OnLoad() {
128
+ gaia_setFocus();
129
+ MaybePingUser();
130
+ el("gaia_loginform").Passwd.onfocus = MaybePingUser;
131
+ LogRoundtripTime();
132
+ if (!quota) {
133
+ quota = el("quota");
134
+ updateQuota();
135
+ }
136
+ LoadConversionScript();
137
+ }
138
+ function updateQuota() {
139
+ if (!quota) {
140
+ return;
141
+ }
142
+ var now = (new Date()).getTime();
143
+ var i;
144
+ for (i = 0; i < CP.length; i++) {
145
+ if (now < CP[i][0]) {
146
+ break;
147
+ }
148
+ }
149
+ if (i == 0) {
150
+ setTimeout(updateQuota, 1000);
151
+ } else if (i == CP.length) {
152
+ quota.innerHTML = CP[i - 1][1];
153
+ } else {
154
+ var ts = CP[i - 1][0];
155
+ var bs = CP[i - 1][1];
156
+ quota.innerHTML = format(((now-ts) / (CP[i][0]-ts) * (CP[i][1]-bs)) + bs);
157
+ setTimeout(updateQuota, 1000);
158
+ }
159
+ }
160
+
161
+ var PAD = '.000000';
162
+
163
+ function format(num) {
164
+ var str = String(num);
165
+ var dot = str.indexOf('.');
166
+ if (dot < 0) {
167
+ return str + PAD;
168
+ } if (PAD.length > (str.length - dot)) {
169
+ return str + PAD.substring(str.length - dot);
170
+ } else {
171
+ return str.substring(0, dot + PAD.length);
172
+ }
173
+ }
174
+ var google_conversion_type = 'landing';
175
+ var google_conversion_id = 1069902127;
176
+ var google_conversion_language = "en_US";
177
+ var google_conversion_format = "1";
178
+ var google_conversion_color = "FFFFFF";
179
+ function LoadConversionScript() {
180
+ var script = document.createElement("script");
181
+ script.type = "text/javascript";
182
+ script.src = "https://www.googleadservices.com/pagead/conversion.js";
183
+ }
184
+ // -->
185
+ </script>
186
+ <script>
187
+ _utcp="/accounts/";
188
+ _udn="google.com";
189
+ </script>
190
+ <script>
191
+ function utmx_section(){}function utmx(){} (function(){var k='1206330561',d=document,l=d.location,c=d.cookie;function f(n){ if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c.indexOf(';',i);return c.substring(i+n. length+1,j<0?c.length:j)}}}var x=f('__utmx'),xx=f('__utmxx'),h=l.hash; d.write('<sc'+'ript src="'+ 'http'+(l.protocol=='https:'?'s://ssl':'://www')+'.google-analytics.com' +'/siteopt.js?v=1&utmxkey='+k+'&utmx='+(x?x:'')+'&utmxx='+(xx?xx:'')+'&utmxtime=' +new Date().valueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+ '" type="text/javascript" charset="utf-8"></sc'+'ript>')})();
192
+ </script>
193
+ <title>
194
+ Gmail: Email from Google
195
+ </title>
196
+ </noscript>
197
+ </head>
198
+ <body bgcolor=#ffffff link=#0000FF vlink=#0000FF onload="OnLoad()">
199
+ <table width=95% border=0 align=center cellpadding=0 cellspacing=0>
200
+ <tr valign=top>
201
+ <td width=1%>
202
+ <script>utmx_section("logo")</script>
203
+ <img src="https://mail.google.com/mail/help/images/logo.gif" border=0 width=143 height=59 alt="Gmail" align=left vspace=10/>
204
+ </noscript>
205
+ </td>
206
+ <td width=99% bgcolor=#ffffff valign=top>
207
+ <table width=100% cellpadding=1>
208
+ <tr valign=bottom>
209
+ <td><div align=right>&nbsp;</div></td>
210
+ </tr>
211
+ <tr>
212
+ <td nowrap=nowrap>
213
+ <table width=100% align=center cellpadding=0 cellspacing=0 bgcolor=#C3D9FF style=margin-bottom:5>
214
+ <tr>
215
+ <td class="bubble tl" align=left valign=top>
216
+ <img src=https://mail.google.com/mail/images/corner_tl.gif class=c alt="" />
217
+ </td>
218
+ <script>utmx_section("title")</script>
219
+ <td class=bubble rowspan=2 style="font-family:arial;text-align:left;font-weight:bold;padding:3 0"><b>Welcome to Gmail</b></td>
220
+ <td class="bubble tr" align=right valign=top>
221
+ <img src=https://mail.google.com/mail/images/corner_tr.gif class=c alt="" />
222
+ </td>
223
+ </noscript>
224
+ </tr>
225
+ <tr>
226
+ <td class="bubble bl" align=left valign=bottom>
227
+ <img src=https://mail.google.com/mail/images/corner_bl.gif class=c alt="" />
228
+ </td>
229
+ <td class="bubble br" align=right valign=bottom>
230
+ <img src=https://mail.google.com/mail/images/corner_br.gif class=c alt="" />
231
+ </td>
232
+ </tr>
233
+ </table>
234
+ </td>
235
+ </tr>
236
+ </table>
237
+ </td>
238
+ </tr>
239
+ </table>
240
+ <script>utmx_section("bullets")</script>
241
+ <table width=94% align=center cellpadding=5 cellspacing=1>
242
+ <tr>
243
+ <td valign=top style="text-align:left"><b>A Google approach to email.</b>
244
+ <td valign=top>&nbsp;
245
+ </tr>
246
+ <tr>
247
+ <td width=75% valign=top>
248
+ <p style="margin-bottom: 0;text-align:left"><font size=-1>
249
+ Gmail is a new kind of webmail, built on the idea that email can be more intuitive, efficient, and useful. And maybe even fun. After all, Gmail has:</font>
250
+ </p>
251
+ <table border="0" cellpadding="0" cellspacing="0" width="90%"><tbody>
252
+ <tr>
253
+ <td class="feature-image"><img src="https://mail.google.com/mail/help/images/icons/spam_new.gif"></td>
254
+ <td class="feature-description">
255
+ <font size=-1><b>Less spam</b><br>
256
+ Keep unwanted messages out of your inbox with Google's innovative technology</font>
257
+ </td>
258
+ </tr>
259
+ <tr>
260
+ <td class="feature-image"><img src="https://mail.google.com/mail/help/images/icons/cell.gif"></td>
261
+ <td class="feature-description"><font size=-1><b>Mobile access</b><br>
262
+ Read Gmail on your mobile phone by pointing your phone's web browser to <b>http://gmail.com/app</b>. <a href="http://www.google.com/intl/en/mobile/mail/#utm_source=en-cpp-g4mc-gmhp&utm_medium=cpp&utm_campaign=en">Learn more</a></font>
263
+ </td>
264
+ </tr>
265
+ <tr>
266
+ <td class="feature-image"><img src="https://mail.google.com/mail/help/images/icons/storage.gif"></td>
267
+ <td class="feature-description">
268
+ <font size=-1><b>Lots of space</b><br>
269
+ Over <span id=quota>2757.272164</span> megabytes (and counting) of free storage so you'll never need to delete another message.</font>
270
+ </td>
271
+ </tr>
272
+ </noscript>
273
+ <script>utmx_section("extrabullet")</script>
274
+ </tbody></table>
275
+ </noscript>
276
+ <script>utmx_section("promo")</script>
277
+ </noscript>
278
+ </td>
279
+ <td valign=top>
280
+ <!-- login box -->
281
+ <div id=login>
282
+ <script><!--
283
+
284
+ function gaia_onLoginSubmit() {
285
+
286
+ if (window.gaiacb_onLoginSubmit) {
287
+ return gaiacb_onLoginSubmit();
288
+ } else {
289
+ return true;
290
+ }
291
+
292
+ }
293
+
294
+ function gaia_setFocus() {
295
+ var f = null;
296
+ if (document.getElementById) {
297
+ f = document.getElementById("gaia_loginform");
298
+ } else if (window.gaia_loginform) {
299
+ f = window.gaia_loginform;
300
+ }
301
+ if (f) {
302
+ if (f.Email.value == null || f.Email.value == "") {
303
+ f.Email.focus();
304
+ } else {
305
+ f.Passwd.focus();
306
+ }
307
+ }
308
+ }
309
+ --></script>
310
+ <style type="text/css"><!--
311
+ div.errormsg { color: red; font-size: smaller; font-family:arial,sans-serif; }
312
+ font.errormsg { color: red; font-size: smaller; font-family:arial,sans-serif; }
313
+ --></style>
314
+ <style type="text/css"><!--
315
+ .gaia.le.lbl { font-family: Arial, Helvetica, sans-serif; font-size: smaller; }
316
+ .gaia.le.fpwd { font-family: Arial, Helvetica, sans-serif; font-size: 70%; }
317
+ .gaia.le.chusr { font-family: Arial, Helvetica, sans-serif; font-size: 70%; }
318
+ .gaia.le.val { font-family: Arial, Helvetica, sans-serif; font-size: smaller; }
319
+ .gaia.le.button { font-family: Arial, Helvetica, sans-serif; font-size: smaller; }
320
+ .gaia.le.rem { font-family: Arial, Helvetica, sans-serif; font-size: smaller; }
321
+
322
+ .gaia.captchahtml.desc { font-family: arial, sans-serif; font-size: smaller; }
323
+ .gaia.captchahtml.cmt { font-family: arial, sans-serif; font-size: smaller; font-style: italic; }
324
+
325
+ --></style>
326
+ <form id="gaia_loginform"
327
+
328
+ action="https://www.google.com/accounts/ServiceLoginAuth?service=mail" method="post"
329
+
330
+ onsubmit=
331
+ "return(gaia_onLoginSubmit());"
332
+ >
333
+ <div id="gaia_loginbox">
334
+ <table class="form-noindent" cellspacing="3" cellpadding="5" width="100%" border="0">
335
+ <tr>
336
+ <td valign="top" style="text-align:center" nowrap="nowrap"
337
+ bgcolor="#e8eefa">
338
+ <input type="hidden" name="ltmpl"
339
+ value="default">
340
+ <input type="hidden" name="ltmplcache"
341
+ value="2">
342
+ <div class="loginBox">
343
+ <table id="gaia_table" align="center" border="0" cellpadding="1" cellspacing="0">
344
+ <tr>
345
+ <td colspan="2" align="center">
346
+ <font size="-1">
347
+ Sign in to
348
+ Gmail
349
+ with your
350
+ </font>
351
+ <table>
352
+ <tr>
353
+ <td valign="top">
354
+ <img src="google_transparent.gif"
355
+ alt="Google">
356
+ </img>
357
+ </td>
358
+ <td valign="middle">
359
+ <font size="+0"><b>Account</b></font>
360
+ </td>
361
+ </tr>
362
+ </table>
363
+ </td>
364
+ </tr>
365
+ <script type="text/javascript"><!--
366
+ function onPreCreateAccount() {
367
+
368
+ return true;
369
+
370
+ }
371
+
372
+ function onPreLogin() {
373
+
374
+
375
+ if (window["onlogin"] != null) {
376
+ return onlogin();
377
+ } else {
378
+ return true;
379
+ }
380
+
381
+ }
382
+ --></script>
383
+ <tr>
384
+ <td colspan="2" align="center">
385
+ </td>
386
+ </tr>
387
+ <tr>
388
+ <td nowrap="nowrap">
389
+ <div align="right">
390
+ <span class="gaia le lbl">
391
+ Username:
392
+ </span>
393
+ </div>
394
+ </td>
395
+ <td>
396
+ <input type="hidden" name="continue" id="continue"
397
+ value="https://mail.google.com/mail/?nsr=1&amp;ui=html&amp;zy=l" />
398
+ <input type="hidden" name="service" id="service"
399
+ value="mail" />
400
+ <input type="hidden" name="rm" id="rm"
401
+ value="false" />
402
+ <input type="hidden" name="ltmpl" id="ltmpl"
403
+ value="default" />
404
+ <input type="hidden"
405
+ name="GALX"
406
+ value="nRusVNnYDx8" />
407
+ <input type="text" name="Email" id="Email"
408
+ size="18" value="foo@gmail.com"
409
+
410
+ class='gaia le val'
411
+
412
+ />
413
+ </td>
414
+ </tr>
415
+ <tr>
416
+ <td></td>
417
+ <td align="left">
418
+ </td>
419
+ </tr>
420
+ <tr>
421
+ <td align="right">
422
+ <span class="gaia le lbl">
423
+ Password:
424
+ </span>
425
+ </td>
426
+ <td>
427
+ <input type="password"
428
+ name="Passwd" id="Passwd"
429
+ size="18"
430
+
431
+ class="gaia le val"
432
+
433
+ />
434
+ </td>
435
+ </tr>
436
+ <tr>
437
+ <td>
438
+ </td>
439
+ <td align="left">
440
+ <div class="errormsg" id="errormsg_0_Passwd">
441
+ Username and password do not match. (You provided foo)
442
+ [<a href="http://www.google.com/support/accounts/bin/answer.py?ctx=ch&answer=27444" target="_blank">?</a>]
443
+ </div>
444
+ </td>
445
+ </tr>
446
+ <tr>
447
+ <td align="right" valign="top">
448
+ <input type="checkbox" name="PersistentCookie" id="PersistentCookie"
449
+ value="yes"
450
+
451
+
452
+
453
+ />
454
+ <input type="hidden" name='rmShown' value="1" />
455
+ </td>
456
+ <td><span class="gaia le rem">
457
+ Remember me on this computer.
458
+ </span></td>
459
+ </tr>
460
+ <tr>
461
+ <td>
462
+ </td>
463
+ <td align="left">
464
+ <input type="submit" class="gaia le button" name="signIn"
465
+ value="Sign in" />
466
+ </td>
467
+ </tr>
468
+ <tr id="ga-fprow">
469
+ <td colspan="2" height="33.0" class="gaia le fpwd"
470
+ align="center" valign="bottom">
471
+ <a href="http://mail.google.com/support/bin/answer.py?answer=46346&fpUrl=https%3A%2F%2Fwww.google.com%2Faccounts%2FForgotPasswd%3FfpOnly%3D1%26continue%3Dhttps%253A%252F%252Fmail.google.com%252Fmail%252F%253Fnsr%253D1%2526ui%253Dhtml%2526zy%253Dl%26service%3Dmail%26dEM%3Dfoo%2540gmail.com&fuUrl=https%3A%2F%2Fwww.google.com%2Faccounts%2FForgotPasswd%3FfuOnly%3D1%26continue%3Dhttps%253A%252F%252Fmail.google.com%252Fmail%252F%253Fnsr%253D1%2526ui%253Dhtml%2526zy%253Dl%26service%3Dmail&hl=en&dEM=foo%40gmail.com"
472
+ target=_top>
473
+ I cannot access my account
474
+ </a>
475
+ </td>
476
+ </tr>
477
+ </table>
478
+ </div>
479
+ </td>
480
+ </tr>
481
+ </table>
482
+ </div>
483
+ </form>
484
+ </div>
485
+ <!-- end login box -->
486
+ <br>
487
+ <!-- links box (below login box) -->
488
+ <table class=form-noindent cellpadding=0 width=100% bgcolor=#E8EEFA id=links>
489
+ <tr bgcolor=#E8EEFA>
490
+ <td valign=top>
491
+ <script>utmx_section("sign up")</script>
492
+ <div align=center style="margin:10 0">
493
+ <font size=+0>
494
+ <b><a href="http://mail.google.com/mail/signup" style="white-space:nowrap">
495
+ Sign up for Gmail</a></b>
496
+ <br><br>
497
+ <font size="-1">
498
+ <a href="http://mail.google.com/mail/help/intl/en/about.html">About Gmail</a
499
+ >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://mail.google.com/mail/help/intl/en/about_whatsnew.html">New features!</a>
500
+ </font>
501
+ <br>
502
+ </font>
503
+ </div>
504
+ </noscript>
505
+ </td>
506
+ </table>
507
+ <!-- end links box (below login box) -->
508
+ <script>utmx_section("box order")</script>
509
+ </noscript>
510
+ <script>
511
+ <!--
512
+ FixForm();
513
+ // -->
514
+ </script>
515
+ </table>
516
+ <br>
517
+ <table width=95% align=center cellpadding=3 cellspacing=0 bgcolor=#C3D9FF style=margin-bottom:5>
518
+ <tr>
519
+ <td class="bubble tl" align=left valign=top>
520
+ <img src=https://mail.google.com/mail/images/corner_tl.gif class=c alt="" />
521
+ </td>
522
+ <td class=bubble rowspan=2 style=text-align:left>
523
+ <div align=center>
524
+ <font size=-1 color=#666666>&copy;2008 Google -
525
+ <a href="http://www.google.com/a/help/intl/en/users/user_features.html#utm_medium=et&utm_source=gmail-en&utm_campaign=crossnav&token=gmail_footer">Gmail for Organizations</a> -
526
+ <a href="http://gmailblog.blogspot.com/?utm_source=en-gmftr&utm_medium=et&utm_content=gmftr">Gmail Blog</a> -
527
+ <a href="http://mail.google.com/mail/help/intl/en/terms.html">Terms</a>
528
+ - <a href="http://mail.google.com/support/">Help</a>
529
+ </font>
530
+ </div>
531
+ </td>
532
+ <td class="bubble tr" align=right valign=top>
533
+ <img src=https://mail.google.com/mail/images/corner_tr.gif class=c alt="" />
534
+ </td>
535
+ </tr>
536
+ <tr>
537
+ <td class="bubble bl" align=left valign=bottom>
538
+ <img src=https://mail.google.com/mail/images/corner_bl.gif class=c alt="" />
539
+ </td>
540
+ <td class="bubble br" align=right valign=bottom>
541
+ <img src=https://mail.google.com/mail/images/corner_br.gif class=c alt="" />
542
+ </td>
543
+ </tr>
544
+ </table>
545
+ <script type="text/javascript"
546
+ src="https://ssl.google-analytics.com/urchin_beta.js">
547
+ </script>
548
+ <script type="text/javascript">
549
+ _uacct="UA-992684-1";
550
+ _utcp="/accounts/";
551
+ _udn="google.com";
552
+ _uRno[0]=".google.com";
553
+ urchinTracker("/mail/gaia/homepage");
554
+ urchinPathCopy("/mail/help");
555
+ _uacct="UA-1923148-3";
556
+ urchinTracker("/1206330561/test");
557
+ urchinPathCopy("/mail/help/");
558
+ </script>
559
+ </body>
560
+ </html>