blackbook 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>