ruby 发送邮件
产品构建、打包、部署完需要发送邮件通知相关人员进行验证。请看过程
#encoding:utf-8
require 'mail' #~ branch = ARGV.to_s.sub('[','').sub(']','') # host = '10.0.2.44'
# port = '215'
# version = 'v2.1.6.1024'
# productPath = '\\10.0.2.44\public\shench\CrowdPackage\v2.1.5\20161209135558' host = ARGV[0]
port = ARGV[1]
version = ARGV[2]
productPath = ARGV[3] notesPath = '/home/CrowdProduct/releaseNotes.txt' smtp = { :address => 'smtp.exmail.qq.com',
:port => '',
:domain => 'xxxxxxxx.com',
:user_name => 'xxxx@xxxxnets.com',
:password => 'xxxxxxx',
:enable_starttls_auto => true,
:openssl_verify_mode => 'none' }
Mail.defaults { delivery_method :smtp, smtp }
puts "start send mail"
mail = Mail.new do
from 'xxxxhui@xxxxets.com'
to 'xxxx,xxxx'
subject "【crowdProduct】【#{version}】Product build complete, please test."
body "
product path: #{productPath}
web site: http:\//#{host}:#{port}\n
【release notes】
#{File.readlines(notesPath).join}"
end
mail.deliver!
puts "mail done"
发送的邮件内容从该文件获取:notesPath = '/home/CrowdProduct/releaseNotes.txt'
下一节将教你如何获取git commit 信息,规整后作为release notes
收到的邮件效果如下: 测试人员收到邮件后,直接登录web页面即可测试
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABEMAAAH0CAIAAABZyXTfAAAgAElEQVR4nO3dy64rR5agab5ZQxPNWq90XqGfoGfVgwZqUMMsIC5ASIqQFKG7QvcMKW6KzGwkcAZZ092DE2LxuJktW36ju3F/P34IpNMuy8zNSVvbyaPLOx/9iSRJkiTH8nJ4BCRJkiQ5139mMt/++R8kSZIkeWafbpDJkCRJkhxDmQxJkiTJ8ZTJkCRJkhxPmQxJkiTJ8ZTJkCQ5w69/+PvhMZAkv5XJkCSZ95sff3r7g4+++fGnwyMhScpkSJLM+smX3//yN+998uX3h0dCklyeyfwfb/6fVQ8f0oO5fp6dqfvPOclH9e33Pvr1ux+8/d5Hh0dCktw4kzl8PA/pHpnM4YM6uSaNZOkX3/74y7ff+/W7H/zy7fe++PbHw+MhyWfulpnM4YOZBFYNcts47zb2bTOZbpllLe89b0GVboOTVzMLIznnD7PGNuw3M6UnHHJyUGcL7OGDP5W//f2nv373g1f+9vefHh4PST5zN8tkDh9JGVv5uHy6bV93GNT6TKY7hGT7iyd2kmfOHcKCBsu6wQpZMOcPs8a26jeT+51zyKc9F4I/xK/+9Ncv//VvX3z35y++/fHzb374+Mvvf/Gb3/3qnQ9e+Yvf/O7jP3736dd/+vybH7747sc/fveXr/7018NjJslnpUxmy752becxMpk1pyP4M39Qpjr255nJLFs5Gw4k3+wJ31XWBHaS4ZwkjHtGuKbBr3/4+9vvf/wvv3z7n/7qnf/563d+9fb710zmV2+//z9//c6//Oqdf/nVO6/KvPsHd2lI8q5uk8kcPoxqbOXj8um2fe3dzvpMJtP1ghHlq9w5k7k+TWZxy+b8kdbYHv0uaPacbyyLAzvJcE4Sxj0jXNvgjz998MmX/zt1Cf39p199d/QEkuRzc/dMpiw2+Tt36+/lyVrJipMyi8MIXm0F3J20IIZlc76m1uLGZ5Vf1l1wIrpPWx0tWMD5QY24xuIAqv22nrZ66b60bFHFU1ENrzW9QQDx8bkzv2y8manbJPhZL+UX9oL4F4SxbM1X/PGn33/61a/efj/2D59/veb0kSSXuW8mU36ulNUzxeIHcV/JD8hkGJm+5tZqHVk25ytrLfvIn7tfWdZdtfCyU7PtnD/SGstEnjmPQV+tl7rnq9tacqK67yrVIecXUnI21lwLc8/XsjA2f2nW2VwZ4Vaz+soPP/86SGM+lMaQ5EHumMlkNn/d4909R1xr8zC2emnudCXnfGWtNZ/6ybpH7XLyG7sFs/dIa2x9hN2+5p7HZSPKBB+/q+THdbtIqqtlWa257hr85KXuzC8b19wIN1/zge9/8sdqGvO7Dz/fpH2S5AJ3/MX/ttu76ofZ+u3d3DC2emnudGUmfGXFlR/5yerdzdbcLrpzPnd/ufnUDbTGNomw29fc87hsRJnggwezxrVs5ldecbOGvDiM7kkvr44141ocYesi3XCSf/P+h798+/3SX737+w1PIklyljKZYXaZ3QlfU3HB5/0mW89Z/a7ZAa/ZgHbn/GHW2CYRdvtacx7zI8oEHzyYNa5lM7/golt8vpaFkT8ps9bhfhM1ax3O8qt//dsvfvO7aibzi9+899m3P2x4HkmSeff9P2PO2vp0i8UflpO9SPJjdUEYyb7KaUnGv3i2F9ftxrns5HY3PbNqZU5Wfk+27Zw/xhoLZmDBIpl7LoIhZ4LsDr/6UvBg1pqJT+WCWgsu8z2C3/ylWUNYGWG3wVnT++Hn31xTl7c/+Pizr//09gefXI+8//EXs84USXIrt8xkgt1J9UO6Vav1avJzumW3cDKMuHrcdXKulk314jMVFIi76zbYDSlZK3+yunXLl9Ys7/icDrTGMpOQnKJkbMtmbNk67M5eK/h8bN2wZ9WaNfz8Ul8Q/IKznJmNzChmTdSsmV8Q2Duv8pZ33v/DZ9/8fPCnj7749lfvfPDLt9//9W99wYwkj3HjTGbuhxbvMM/O1P3nnIN6nhO9OAc4PPLH85sff/rF2+/95r2P/vjdnycvffmnv777h09/8Zv3vvh++hJJ8g4uz2RI8pE8Sda6/obM4TP5YH7y1Z/e/+SP3/z4U6PATx9/+d0fPv9mwx5JkkllMiRJkiTHUyZDkiRJcjxlMiRJkiTHUyZDkiRJcjxlMiRJkiTH87VM5t2P/vSuTIYkSZLk6ZXJkCRJkhzP1zOZj//07scyGZIkSZJnVyZDkiRJcjz7mcw3P/509esf/k6SJEmSh9vJZL7+4e8ffPrVf/vv/+P//n/+X5IkSZI8iVEm882PP33x7Y//7b//j//vP//zCQAAAABOyeXdj3949+MfbjOZT7/+10m6AwAAAACnQiYDAAAAYDxkMgAAAADGY5rJfP3D3z/5SiYDAAAA4NTIZAAAAACMh0wGAAAAwHjIZAAAAACMx8aZzOVnto1yMYvjOdUoAAAAAEzY/p7M2XKAufGcLX4AAAAAJc8lk1nG0bEDAAAAqLMqk6nu+4NkoFs4KH/70qx2kklLlfnzCQAAAOAeLM9kykTi9vGrp3GZZPk1qchKtpplAAAAANuy5T2Zh+HpfN+RAwAAAHDLc8lkbgOOH7eOAAAAADgPa79dNgq3McePW0cAAAAAnIdhMpl8160CT6//JqdarHUQAAAAwKnY/l9hBgAAAIC9kckAAAAAGA+ZDAAAAIDxkMkAAAAAGA+ZDAAAAIDxkMkAAAAAGA+ZDAAAAIDxkMkAAAAAGA+ZDAAAAIDxkMkAAAAAGI/Lbz/+4berM5k33nxr8qBVIC4GAAAAABmWZzK32UjrceugTAYAAADAGrbPZOKS16fLkpk33nzrwCxoQe+jDHPE3PJus3Tsqrsbw626Y0/K5A3QO8NRvJqTo+IMej//1JUMvcC2Cn7EE5fHx9lj8H/9TPfgq+PVYtXCazravHoZ/LX67ZHLbz/54befLMxkYq/Fbh/k85+g3wW1tuJuve/U0YPN3uin42w8k2HuwehLcfRT/2DvbAcy9AJ7pBOxH89klh54mLf7+Ovj6sGn2r6/WmV9R5tXfwqDv2V5JnOle0PmmtiUJRcstWfyiTX0x8ndeh/9dJyNZzLMPRh9KY5+6h/sne1Ahl5gj3Qi9uOZzNIew5z8mb76+A7MzRBaCcOyTCbfwvpMpixzTCYzKVO9bxNXrN7kKauXxboly++HdKuXB+PHixf3bUcL4iyH2Zr51pFMm7OG06q75sQlF0NwMB//U+K8rxzmJrM0a1B7X1xzr45ZS3TxqZw1yZMz2+o9uUJWBj/pKJiTuecoP+2ZNmcNZ5M1H6yl/YJv9R5MXRlJcBbi+FslZ4Vd7bTa4B0WWKujC7AdmQsqvmTix3fmqEwm//WwfJyZIHfMZIJPo6cVmfHkXe+2u/LgypL56kGbR1+hAAAAyFLd1w1B8I2yVrFW+eqPZ5L3ZFrV49jyv7TpjmVtJnPNZSdHbp9m/jwzDQsAAAC4FwNlMsEWf24mk+lik0auR64p0NzqO2YyT7WUJi4fFD56JQMAAOA5ktwAH0jyvkercOtgvs1kI/kf0iTLbJ/JlLdfgpLduzf/DAgAAOCGybZh1hfFkwdbT2f9nT5oLR/SHm3ucfD21fwsxbvB7ulYGfyyhXcqMt8Wm1U+09HKf7ssbiffyMaZTPnTvafaam79yC9Y93u8Cd6N+Ht0yau9/D5eawJb7QeT3D0js9pc8C4ffP9w1oiCuQ2aWhD8rI5aM7/yxM2q3h1RMK54mHHJZPDVI9WWZ1WfdTafbj5N42VzLZmJJ5i6DYOvnuuVC6zbYDDM4FR2RxSEtGBEwVq6Q/CZhZRZYNWSyVlaGXx+Je+xwFZ2lA8+M8nVdpKzGs/zsqnbqs3MLMUlg7M2a4q6Kzk59lnBV6cuv8FLDnBvWj9Kqf5MJfPblUxfmTYzcSbrdnu/PbLBt8u6b1iTl6qPnw/3GfUe89xqc9wRbdvUJg2uj+fAy+rwq3uPTu82kHGvo5XvDMd+EBz7trZTR8/5TWAP5u7R1/dy5mm8Z5x3HvuGf9S+Z9jY4N8uQ5K5f9rZpLttewz+znEHth3RHsGvjHCT6svqbsUeqy7f7x5t3mEsQ19H1Tbz7R+1YIIY7hbPfidiwwYXx3B4GJtw55Uc31g4D3e4ZA4cu0xmOC6//eTH337yo0wGAAAAuCKTOT8yGQAAAKCJNOa0yGQAAAAAjIdMBgAAAMB4yGQAAAAAjIdMBgAAAMB4LMxkvv3+e5IkSZK8pxtkMi//13+RJEmS5D2VyZAkSZIcT5kMSZIkyfGUyZAkSZIcT5kMSZIkyfGUyZAkSZIcT5kMSZIkyfGUyZAkSZIcT5kMSZIkyfGUyZAkSZIcT5kMuYuXNIeHSpIkOaK7ZzJvvPnW5EGrQFwsX4A8xHzqIrchSZJc7y6ZzG2y0Xo8OdhNeOJGyPu7YeoipSFJkpzra5nM7z758Xd7ZjJByWMzmTfefOvABGlB70H5Fy9eBC8Fr+7tgt7L8i9+5s7B3yFp2SqfOfAUkyRJ3tO9MpnY25JBlWrEO6Ucx97q2ar37i722G3uyt5vq+83kPtnIJvnM5IZkiT5HNwlk7navSEz+WpZt0qmwDIfIJPJ7F/HzWSuda/3ZDKtbZiWzMo31oy02/jeU02SJDmER2Yy1QKZb6MFt2uSKUF55+facvkvEEyKdUtOErNM9fJg/LgcZnXn+uKG22LlF7TKYt2Skzskmerlwfhxte7kv0FI98lbqmMv42nFWfVaLNNvq8FuLyRJkkP7eibz6Y+/+3TjTCb+wtghmUzw9bby4MqS+erJNqtPuxvZVrawVcl89WSbrZeCfGbvpGVW8OUZiV+NSwYhlfPQXRgkSZKP4Y6ZTOabY7f3ImalPcu+jrX3ZhePQfV2R5CwlTdGWnlFJrWolklG3m2HJEnyYdw9k3kZ3kiZdU9mZSaz694Xp+W6AFbeM+nej2oVzr/U7T0/ZGkMSZJ8ePfKZOJvQwXH15QMvl22614Zp+Xl0q/GrTn4Mp0pVe/SZDqKRy2NIUmSz8FdMpnyJ+8vG2lGMpNJpjfx72Tus3XGgdye7vK7YeXT2+PlT3Qy1cuXJi2UDZYHy7WaDCkzDyRJko/qvt8u69422erfACBJkiT5rNwxkyFJkiTJnZTJkCRJkhxPmQxJkiTJ8ZTJkCRJkhxPmQxJkiTJ8ZTJkCRJkhxPmQxJkiTJ8ZTJkCRJkhxPmQxJkiTJ8ZxkMn/+3ad/lsmQJEmSPLkyGZIkSZLjKZMhSZIkOZ4yGZIkSZLjuW8m88abb00eBGW6JZMFSJIkST68u2QyZQLTzWQyJZMFSJIkST68B2cys3KeZIEFvvHmWwcmSAt6D8q/ePEieCl4dW8X9F6Wf/EzR43i/G4+Ofe/Ojbp7tU83H+1rOnO8t51eu/mtpfMfkPeZLFZtJkp2rbBY3csK+dhrNVieWem6PAY7pfJ3FotWVqNeKcL+Nj3ha167y6pY9fcyt5vq5/h4nnUeS4d7qK7w1LZvFnL+8DeN1+KO72l77rqVla3aO/Z+3CZzEBLZcSYH2x5z/UemUw1dXl583eFVoGqw22q7tZ7ZjGNu9yvda9/IDn84jntPG8ewFgX3d6bvz2atbyPDeCcmUz1pvR5ZtKiPTCAsTKZ+7wn7xSz5X3+AHbPZOKfwZRXY3x9lpnP5NXk5V3e+bm2XEY4KdYtWWZr3erlwdbjC7A/retu2fIur47gJm31SP6Ka23+yi8JTI7cflyVn7u3hV+8TqvBuW1W/1uWXBn84upla5mOquZDChrs9pI0+CLAmjf/5AdKcDCY3sw5uj44+r0khUW7YN2+TOwZVi7vavWjFwuyjLu853q/b5dNHlSfVo9Ur97Wq5lM5ujVBTwg1U/TuZd/q1iyzfjtdfIeXS1QFq5Wb/VVLZZp87onq/43M5C4ow2rV8cev9otGRws5yHZ0SzjT6LWZrH1oFuyezC5uq5Hjr7698Wira7YNQssubyPPvPYniGW91x3zGSqf6AKSpZWC5ePZ3n0KgKeBdVPzcWZTPm41WZrv9J6261uhl7W3tAXZzKZNoMcpvwD2Ot/Gutv4BZXr5aMJ7P7Dtz9/Et+am77kRn/dSy5KWx9QnX/Fl4tmd8oHH2t3w+LNl5g+YPVpXj06cVdOfPynutemUyZulQ/Kmbdk1mfyRy9cgAAwAbEfybIb7O6O7BNtnp75N5HnwE8CGdb3nN9LZN579M/v7fnt8syeUvyz7StI90M5+gFswHBLAV/lx3rYP7pOYOP/1wx+fNhsmTrYDAPt0dmvdEcvcYBbEbrbWHbN8A178mHDH+s9+RTvTnPvfkTzMZJPrV3Xd57H6wusDssgz2W9zJ3yWSudu/MJDOZBd+nj6Mq7++XT4OXMiXLvoJ+u23e3uYKvoD38vUVf2VypFxqi0uWfQX9dtu8HqxWiQfVCike0crqrQl5WVzJwXCqJzEZ0vWMT57GwcyyXH7V5X2H900ALV4UdN/rMm9r3fe6oFjmHawb59HzisvivU35MTR31XXXUrBQ11e/w/KeW711GZaf8tWO9lgeZSQrtxwL3D2TiXOVNXdpMq+SfOU931Ze2n8Ad2TuO8Cd3w28q4xCOefHbrFWLtRB1/l93G/N3H/y981kSB7unf86UjW4i3iqNoMJ3HYO92jzeXqGabzbUtxkrg6frq3cais2NPEUrVyZxy7slcv1wVb7fm6+Au8/7TIZkiT5mG6SMJyKw6eUPJUyGZIkSZLj+Xom89mf3/tMJkOSJEny7MpkSJIkSY6nTIYkSZLkeMpkSJIkSY6nTIYkSZLkeMpkSJIkSY6nTIYkSZLkeMpkSJIkSY6nTIYkSZLkeMpkSJIkSY6nTIYkSZLkeMpkSJIkSY6nTOa/Xv6v/3rjzbfeePOtO/e4U/UXL14ELwWv7uHK7srqL37mnqMYy9NOzu2iXXDFLVvzKydwwWKzaFfO+SYO95Z+Ow9jvVFb3rtO706+ukD2u0a2GvJOq8uizUzR4THklcn80zt/7O1kd/GNtTqD4E8+kGPDO/nkvHKrK27vwW6YjZ/8vDzYot3pLf0+m7+dzsUeO8K9Yz7t2AfqveVOi3nXZbZta+c8LycJ7+STc6tM5p8+QCaTWXYDLc1W5Nc/pZx5LIfHdngAXTf8G/ZpZ9KiPTCAsTKZydiHyGQs77ECKN1jMe8xzA3btGjHCiDpM81krrdWr1fyqwfl/dayWLdkWaB8XL6DlCFVC7eqVxfcixtui5X3Vcti3ZJlgfJxGVUZUrVw9Uj1v8k28yNaXL1sLdNR1XxIQYPdXpLerszM1XG7/svHt3Vf9i6Tai+tAWZmvnzaelwuvHIxVB+/sGhPsGgnCyx4C537lp5/l8602Rr1i8aCXLxCWjPfOpJss/rfDdfnyurdVdc6Xl2ZyZCCBru9JJ37nlxdii9rmcziq6M6wMzMd89mdd4WLIYXFu2hi3ZXn1EmcwEAAACwgsO39M8xkzn6pAMAAAAPwuF7+2eUyRx9rgEAAIDH4fDt/TPKZCQzAAAAwFYcvrevZjJ/ee+zvzxkJjMx+KXyy/DXxvHv4eJfxc392eis6lczP+26fTqrZOYnaGXJIKTF1ctQW22uHNHcqZu0EERelknOUjmE8mkczCxv197LxtVRLubkMp50sWbNtyYkXk7JdRic97Jw99RXi1m0my/a6o+VJ8tp7lt6t8FgecfLeDItL4plXK6xuSuk2+CaVffC8r4Zwq7LO1hLC5Z3sA9ZuZKTy6YsU10M1XO3ci3l47Ro1y/a/XymmczmBtu4R3Jy8RweD/Pe7XyNsv4t4PN74Dna4y39bh8Te7xRe/Pf3DXTeOzbbH4lH7tULNpdp/Q8ymQ2M/4TxcPY+ssBT+vdztcol4A1fH7PcIL2WM93u0b2WOQunG1ncnH1M7zTZmI4w4I5QwyP4ZmnUSZDkiRJcjxlMiRJkiTHUyZDkiRJcjxlMiRJkiTH87VM5v3P/vK+TIYkSZLk6ZXJkCRJkhxPmQxJkiTJ8ZTJkCRJkhxPmQxJkiTJ8ZTJkCRJkhxPmQxJkiTJ8Xw9k/n8L+9/LpMhSZIkeXZlMiRJkiTHUyZDkiRJcjyfYybzxptvvbL60uHhvXjx4vrgFUGZQ8JrRcXrFN2hl9Ya3rXHswUfNBKchfsv4A272yr4shGX9oJJeybe4d1mrLnd70pxGWam6PAYeCqfYybzyjMkLaXV7cXhUVWDOVVgmZl8vN53WsP3uTR27aU7//vtQu4wdXv04tIeovcDPfaCPaEuw2fbO8+mTOZEnu32SyuS61+MzhPbCeftDgHIZBbPvEym2qBLe4gADvHYC/aEugyfeQA8jzKZ//10cgP99un18W2x6+NqybJW69VXti7LyfHy1vPt09t3wPJxtWRZK3i1+t9JF61Qq41vW71sLdNRa9qTIQUNdnuZtVyri61cSOViri6/stlWL2WD6zuqBh9cHfmQyjmvnqZZaymzaFuLobU8FndUDb71uBpA9Uj1v9XeVwa/rHpwKoOOquZDChrs9pK0evWVL71cdBVv2ObLHd5tqjN5O+etkzJ31e3R5subKyUYwtw4q/+dtWiTwS+rXraW6ahqPqSgwW4vfCY+i0zmAgDAULz6/Gql+q0Hrcetg8mmtirZ/fvdZGsbHywLxFVWtrlHycmD1n83D2lN9eq5i19dfIqr85DsiM/Ex89kjv4wAgDgAQnuFU8eV199GW5Pq3vl6m77ZW1DXN4uWNzmy9d3+XHv5W2EZJxBDlPtPdnRyurVksGJy6QW3ZwkmclIY/jKB89kjn6fBwAAwDxehpmMNIZXHzyTeSmZAQAAeGjkNs/Wx89kSls3xOPfOpfHu81WKwZtvrJ7n7p1qzd5C7gsWa2YCaB1ZHI8eLq+evnSpIXqcFplWr13h1A+jYNZv2hbP7QtC8c/ya0uwvxVsKyjfPDd4VfjfxleR5m1VNbKLNp41QXH8x3lg+8OPwgpuGRaMWSCn1W9dRnGk9y94vIhXVfR5GkczDKr1+DRO0NgPFZeiRzR55jJrLe6czqh6z9fuaFnOx1xZs7AyY758Hh4rCvXwJqrr3UV3+eKPnrXCkw5/N2A91cmM8/gb8CnsvW3TB7iac/FKOv5hLrE+HK7e61rYohveJ7HTGCbXFbxTb/zeNrATqJMhkllMiRJkiTHUyZDkiRJcjxlMiRJkiTHUyZDkiRJcjxlMiRJkiTHUyZDkiRJcjxlMiRJkiTHUyZDkiRJcjxlMiRJkiTHUyZDkiRJcjxlMiRJkiTHUyZDkiRJcjxfy2Q++PyvH3z+V5kMSZIkyZMrkyFJkiQ5njKZvXzjzbfeePOtrVp78eLFPYN/8eLF+h5f/Mzh5+K03mdytl2Km4zuzgvDUsxM0R162WMpHrW8507jHivwDKvaxZWZosNjIB9YmcyObvX5esj74MpOb6uf/H382PDutoM827juNu2W4ql632MpniSTOWTNn2fNuLhO2zv52MpkdnSTz9ej3gHX9Hute/1b3Znfxw+P7Q4B3HmrlxnRfabdUjxbAI+ayRy15g9cMy6usQIgH9XnlclcAOAZ8+J1yjfJDfdbr773dfV68GXtK2FlsW7Japu3hcsj1eore69OWnWer9v9SfmyWLdktc3JHZJM9TW9t/67eUeLqwfnIuioaj6koMFuLyQX+IwymaO3EAAAAP/k8H0R+QA+l0zm6PcrAACAKYdvkMihfT2T+eKvH3zxmJnMS8kMAAA4GYfvjsihfUaZzK3X70BPjpSP46eTL2pve/Bq+dXeycHW4/jp7bd7dz0Yx3zswTLUoHq+ZOtgfO6CjvLutz4nV01+0e53NifzaSl2Ozp6zwZgyuRaJjlLmcxrB1s/Bi2rV3912n1arR6UvFruSMr9WfW3hq2N8qRk5mm1erJk68is3ldWL1+atFCdolaZVu/dIZRP42AWuGApxk8nmUyrfLxol52j1tPqfHZPR6sdSzFocP06nPyAfs27YvzGG/+Ov1o9Xvnd3ltr/sXrJBdDWStedWX7wWKorqUN13x1OHt0FFdvXQjBFJUHW9dCJqTrMpg8jYMhudhnmsnkbX1iDaE3ykF14ngSz7YU478xPXbvkw33s+r9ITWN5CbKZJrGf3s7ua0/SvHkOms8iaddise+Mx/b+7Fv7D5Wtp3Jw8MgH0OZDEmSJMnxlMmQJEmSHE+ZDEmSJMnxlMmQJEmSHE+ZDEmSJMnxlMmQJEmSHE+ZDEmSJMnxlMmQJEmSHE+ZDEmSJMnxlMmQJEmSHE+ZDEmSJMnxlMmQJEmSHE+ZDEmSJMnxlMmQJEmSHM9nncm88eZb3SOb97h3F3uM6MWLFwuObOuLFy/27mLDEb34mXsGPJYmxzQuHrKLqztFh8dAkvfxWWcyh3jnTGa95/lQPE8k+ThPHvOx4Z18cs7vM5xAF9cQvZPk3ZTJ3NuxMplTfRyeKphukNc/G5857MNjOzyAcX2GU+fiGisAkryDzzSTefUtr9ukojxSPX59XBa+lpwULg/G1ed2NHlQ9j6pmAz+ZeODsPxqR+vLHpPjt5uPSeEXN5RHbg/G1ed2NHlQ9j6pmGyz+t/qMFfO0rLqwQwHHVXNhxQ02O2l6wVAm5XXF0me2WeXyRz9mQIAwL05/MOXJPfwtUzm91/89fcPnckc/VECAMABHP75S5J7+IwymaM/RwAAOIbDP4JJcg+fUSbzUjIDPCi3l3n5G7DycffgyupxmyvjvFr+xKj8yVP5uHtwZfW4zW3jvP4qbKs4tzrYPTvlb9vWTEgwDyT52D6vTGZi9Rf/rX8JoPXz/cmv7eM2W9VbL2U6qv76f1bv1eBv7X7Qxr/8rha4Ps7UvT0yqd56KdNR2f7c3qvBx321Ss4Nflb18qVJC0HkZZlW790hlE/jYJYZ/LsdK6/iapvB06D6mjgnMxY8LRfzrAW2ctW1qvLxEgEAACAASURBVK+Js9rsTnEmq5cvtdZztaNqxVabwRDKpyT5HJTJbN/Uhs3ep6MFbW74STn5UN9v6vbo6G7BPx9XTuOai2LuTZXFba5vdvOpq67kleeidXW4UkiSW/kcM5n4/sPZmr1PR8k2W396XOlOzd6no7sF//CunMZNrov4Tst52qxO3frEI3Of4fA2SZK8+hwzGZIkSZKjO8lk/vb7L/4mkyFJkiR5cmUyJEmSJMdTJkOSJElyPF/PZP74t9//USZDkiRJ8uzKZEiSJEmOp0yGJEmS5HjKZEiSJEmOp0yGJEmS5HjKZEiSJEmOp0yGJEmS5HjKZEiSJEmO50kzmTfefKv69I033yo9fBJbYT+Y1ck/2ykgSZLkM/HITCbYCmeOxMcPcU0w2yYJm2QdrXwyKJbp91SnjCRJkoN6cCYzeVC+lG9kbtfltj6ZVgWJQXIfn0zegq4zB1dOVxzhysxkTUIVzOHKE02SJMmBPFEm0/0rfrXAym10NZsqE48g7GqtVmBBAjCrfCbs7tjzsxSchfWnoFsymKi4nVkzRpIkybE8USZTfen2aebgrH5bMSy4v7HgtlLyfs6ysFdmMsvSqsVnYe5ErW9kTeQkSZI8gwdnMsmvWiUzmQVfGdoqkylHFI8umfl0u45vJWWCSQ5tfZvJoXVL5u+exbMtjSFJkhzac92Tad2lqX6vaX0mk7zJkM8xZt0u2LaX4AZOt8EF/cYDyaQ6d8tkFoyIJEmS5/dcmczLm6SlLJk5uKD3Vgytp8mDCzKZ5P2c8kg1qct0moxtMuFBMrl4/jc5U8tGRJIkyRF9pplMnCEsyGSCb14lb0osLpMZQrKFTDDdk7X4FCRLymRIkiT58vBMJnnnoXo3oLqxzuxN595OWbYJntVLJvGIG0zmPGu2/hvek5lVJZnJlGe/WnJZIkSSJMmzebp7MtUjwY5zWSZTTaKqaVX+W17JAq1ekqObVA/Cy98dysSfPAXLGs+crOTBxdVJkiQ5lkdmMlXzG/2T70fXf/FpzejW35O5LZzMyoL0aVLs8LNDkiTJ0T1dJkOSJEmSXWUyJEmSJMdTJkOSJElyPF/LZP7wx7/9QSZDkiRJ8vTKZEiSJEmOp0yGJEmS5HjKZEiSJEmOp0yGJEmS5HjKZEiSJEmOp0yGJEmS5HjKZEiSJEmOp0yGJEmS5HjKZEiSJEmO54kymTfefGvDYiRJkiQf2NczmS//9ocvZTIkSZIkz+4zzWTeePOtVybLTB5kqpMkSZLcz0km8/c/fPn3h89kblvoJjNxFckMSZIkeYhHZjKT+xulk8KtB2vMZDKtSLaKgSRJkuRch7kn07098vLmO2DJ7rqFq2V8u4wkSZI83LNkMtW7H5NX48cvZ2Yy1RbKV4O7Q93qJEmSJHdy7EwmqDKr31lRyWRIkiTJwz1FJhPnBnHqcodMJohQJkOSJEke4gCZTFC4fCmTWvi3y0iSJMnRPT6T6d6Eyb+a/52M/58MSZIkObRHZjJBMhD/o2GHzxpJkiTJYz3+ngxJkiRJzlUmQ5IkSXI8ZTIkSZIkx1MmQ5IkSXI8ZTIkSZIkx1MmQ5IkSXI8ZTIkSZIkx1MmQ5IkSXI8ZTIkSZIkx1MmQ5IkSXI8ZTIkSZIkx/O1TObDL//+oUyGJEmS5OndIJP59vvvSZIkSfKebpDJAAAAAMCByGQAAAAAjIdMBgAAAMB4yGQAAAAAjIdMBgAAAMB4yGQAAAAAjIdMBgAAAMB4yGQAAAAAjIdMBgAAAMB4yGQAAAAAjMflw6/+/uFXMhkAAAAAIyGTAQAAADAeMhkAAAAA4yGTAQAAADAeMhkAAAAA4yGTAQAAADAeMhkAAAAA43H58KufPvzqJ5kMAAAAgIGQyQAAAAAYD5kMAAAAgPGQyQAAAAAYD5kMAAAAgPGQyQAAAAAYD5kMAAAAgPGQydyDy+WSPPjA3I73hGMX0vk54YScMCQAAJ4PZ8lkLpfLafcE62Obm8lMXrq8Tnl8QQytNlt1ZxWrFt4qk2lFEgSZ6S4/jZsv1Llh50/c4khmLY+gnc3DmxtD8tTPKpkJqdpm8kS3Jr91WbU6Kut2L8xZHeXbXLmcAABocZZM5mnF7vYOe6b1XWR2ME/tfUn5uHqw1XWyzW7k+ZLVGJKFu8Qd7dHsVl3MbTPeI+4aycqOdtqwLjhHmy/v7kqOL9hqMrC4ehze5ee8tDWQoPe4o2VtlhUBAFiDTCbVZrDRXLP9Te5f85uYfACtbVlccVkmE299FvBsM5nNE+ygR5lM0G9cK7/vj592c6eVmUx3LJu0GQwEAICVrMpkLq8zOXh9XJZvNTKp0qpe9lU2242zFVJrUGU81SMB1ZL5gwuOb1X3KTfS6iRf2puYzLQHj6shdc9v3EKmZLwYyoCDkt02y1l6Krhtqpz8VkhPvSlt9duat2BEC6q3SgbBZMq3qFYMGomfli8tq149F9WncQv53jOBlVHl5zxzLgAAyLP2nky83emWXHmw+jQfZ77N1g5vFvG2YNnBfDyz2pzVSPXVBdud/RbD4q1bq/d4dFuV7EY7KZafz8kGNwhp0uyCc5Sv3i3ZfZrfUleJpzf/tDy+oPrKRd7qPblOum1emyobzEcIAMBKLh999dNH+2QymZLLDgYtz43z6ebzOGgzuZvMx7DrwZW9z20kKDlrl7lyhQQRJvedrSCTcZYbu/xKTo5obuSt3idnZ8EV1xrmpJ3WS9XqrV1ycnud3E8H5Kd37qrbtXqyi+tM5hfYJiXjgwAArOG5ZzKt9pftJmeFERxcU2xl13GZuHx+i99tfMEKCSLMlMm3kF+fK0sm63ZrlS1MdrSzrrg4A7ktFp/xSadrzlF3g55sanEm0y2wUyaTf/tN9r5V6iKTAQDchyEzmQVblpVtBsPcI52Yux2fpA2Lu84nG7PSkmQAh2Qy+VFstWjnjigT0oJas4aZL1ke3LCj1pH8iDZZ3itX8srrfcH6XDCZ3Y7yb5jxQQAA1rBBJnOlPFLdKLcOdhupVr99aVacyWgn/VZD6sxREUlwMI6nG3k1nrltVsObvJQvGR9/aow9jr9aMpiQoHAZTxxSNYxqm5uULEMKqpcVWwefesspmJ9qge6Iguqzgq9OSHc4tweDEU2OtEpW43lqLJu42WC2y46qvbd6mTXDy+IM6iZHBADASra8J3NmzhNna4d0/0hOwu3G6NhIrpwnkisnDGkrJvvgBbVOwglDAgDgsVmVyVT/8HZCRonzOeMcPWecfQAAsIC192QAAAAA4P7IZAAAAACMh0wGAAAAwHjIZM7C5fKfyYMAAAAAZDKn4NmmMc9hjAAAANiDO2UyW/3DRHv/60aXy38esrfOZDLl01vL4wv6bbXZqjurWLVwJs5q3eBgt0EAAAA8APe7J7NfErJty8FWeL87J3HLrV17tWQysHyb3YDzJasxBHVbHcUHJTMAAADPgWeUySTvC+2UyQS79mSzrayjlVQkb3d02+xWXJbJvDrevamSzGTi+1cAAAB4PC4fff3TR1+v+j9jPv2cS9ymCuX/6u5yQ7LluMFJsWpf1Wh7Xf9zZ1z9ytbt8fJg8E2qzTOZxce3qvuUvqlS/QpctaO4waCwTAYAAOC5sSqTebrJYa7/vX3QPRi0WS1ZrRiUWXAjaO7+ePEXtPJtzj2Y7Hpum7Maqb665ptgc+/tJJsFAADAoOyVyVRvqkxqxc1mkpbqwdaNmiRBKjJKJrMyPdg2kylLzp2iuJhMBgAA4Hmy+z2ZScmgQFwl2XK+8Xan98tk1t9myX8JbX0ArTLL7sm0voaXicfvZAAAALA2k3kq0pjW48O/XTbrdzLl4/Jpt0z5S5u4bnBwTe8rf6LTjTzuKM55un11f12z5htrAAAAGJddMpmnm694lUeSXy0Lqlfv1VQLB2UaXVd+vl8WqNaatDA3HwgOBncwqr1MSgYx59usxjl5KV8y30IrzvwkAwAA4CHZIJPBLfmd9OJvdgEAAACQyWxJ8ocfAAAAAFYikwEAAAAwHjIZAAAAAOMhkwEAAAAwHjIZAAAAAONx+ejrf3z09T9kMgAAAAAGQiYDAAAAYDxkMgAAAADGQyYDAAAAYDxkMgAAAADGQyYDAAAAYDxkMgAAAADG4/Lx1//4WCYDAAAAYChkMgAAAADGQyYDAAAAYDxkMgAAAADGQyYDAAAAYDxkMgAAAADGQyYDAAAAYDw2zmQuBduG+0iYKwAAAGAx+2Yy28b6eJguAAAAYBk7ZjLbBvqomDEAAABgAWfMZJ7Vzl4mAwAAACxgr0xmg8gG2dmvj1MmAwAAAMxFJrMWmQwAAABwf+6UydwenxQIqmQajw9mOiorlkFWq19eZ0FI+cAAAAAA3HLXezLV/X31cfz0+njlwW6QmeqL45z0KJMBAAAA8lw+/uYfH39zv0ymVT5Ocrolq3dFktWDIJdlMtWOugmeTAYAAADIs1cmU92XVzOZoKlMyWqyUR7J5wnrM5lk49cjMhkAAABgLifKZPIZQpxgzE1FMiHtEef1qUwGAAAAmMuOmUz53arqlj1fOK5+fSnfURB/WT6o3o2zG1I3MAAAAAC37JvJ2J0HmCsAAABgMRtnMgAAAABwB2QyAAAAAMZDJgMAAABgPGQyAAAAAMZDJgMAAABgPGQyAAAAAMbjTpnMgn9leNb/DWbNv2K8+T9/HPyvY7q9z/p3matl8v+mc/7/exO0kAlpp94BAADwnLnfPZlNtqdBI8m9+/oY8l1cbv6vmtVXqwlP9XHQUatKsvr1cRBJtXoQfCYHW9M7AAAAIJNZRSYViffoy5KBTK1dM5lud2XOtnnvAAAAeM7cNZOZ/CE/flzdy7a+ztT9StLldVodVYsFUcX9LshkyuOXgkybcfUFccZBxtUzs1R9AAAAALQ45p5Mdc+a2UnH2+VZMcRtTjb3cztq1e0+TXaxSSNBnHHuUe1iQSJU7TTZNQAAAJ45MplsJjNrn50f17GZTPVmTvUWTbf6frd0AAAAgBKZzOx7MnN7uWcmM2tC4gJ7pyILpgUAAAC4cvnkm3/75Jt/k8lMnia/XVbeoomHWQaw/nZKEFum+lMx2GQAZbHWMDOzJJMBAADALO6ayVS/nVV+cas80joYHI/DiLt+utlel4VbrWXizJR8mpNIlCWTU9Ea+6xpzAyzerBafVYAAAAAeObcL5MBAAAAgK2QyQAAAAAYD5kMAAAAgPGQyQAAAAAYj40zmUvBZoHu1vIJeezR4SGxaAEAwJ3ZN5PZOFaZDHBWLFoAAHBndsxktg30Pu2fhMceHR4SixYAANyZs2Qy1ypx3fNkMrvG0G15wXft8m1OHm9C2dSs9qslF1efNXVlmQXVqy1sG2dZvRt8N6T156ja9dOcBVYNNW48z6Wg+lIr+AUj2nA+u9UXTMiyjjZvcKfg17S5bTDB+rnDKQOAR2KvTGZZ3cmDzbvYlv1iyLR8SWzvFvR7+7G6vsGnxvlKnuugejLCuPdM9bJK63FQvdrU5NU4zjVLojXb3ZDyXecjXLDAMoskH0Pc+DW8auPVGVvT+8pou8W2DenOA1yw5jcvvyuL3xUBAFdkMss5VSazVb+bZzLXlquPy6fd6sHBVtjJHifV5yYGcb/lFjn/dEEu0d2gLziY7z0os2sms4DqKqo+HTGTOaT3e3bxkJlM+RIAoMVdM5nLDcHB271Oa7fa3YxOGil3HrfHL68zKZmJs6wyabxsMCBTrNw/lSMqj3fbrIZanZlZg5q01nopUz042Aqm7LE6J+Wou911I58UjttsNRh3dGlQbSF4kI9zQZC3oT71Flg5rlax6pDL9RnE1p2QScnJ/FQPBmMvg18wG/FwWhPS6nTWzLfmORhp0FFrCMG45k5Ia0StOC/FsukOM2hz1kgn7WRaAADcL5Opvk3HB5MfaeVLJyczjZky1QZbXeT7vf3vU/vzNTmWuJFZgWUOZqoHwSRrzer9qb2kM21uO8nlsqmW3OocVctkFtisBRMfiQPrTkgm+OqkBY1Mem+91K2e7OWpPcll73Mv1czFlZneSSPB2043pCDCrVbd3OrdwBZUBwA83TOTeSo+n57Cz4O4kepH9VjE09ib6ezmeEGbl9r8l2FnGqwWTgbcLZMPICiZf2lB2GXJBW1u2NHKg/ne4zKTLqphz1owwbx1oyp7jK+gavDJvsoyc6+L5GKIpyg/85neMyNa9r5xW731zjl3zrtttk5l8uwk3+G7bc56dwWA58wB/3ZZ6/26/IzJt38ZkHgaM1O9yfGyzKX4LL+s25HEFRcPNh9A0GPQSBxnsvdZjWw4zGrLKw/me4/LTLqYu9LKjoJ560aVbG0SWxln96KuNj73uli26loddQ9mes+MaNn7xuKQgjLdNlvLZttLtdvm3KYA4Nlyv0xmwUdptZGg/bGIpzEz1ZscL8tcXv8svzQ+XzMNtgpXG89Xbx1sTWyr9/JxPs6556hsKtnmrHmuVmz1GBfY5BxVy2QWWLDS8udi8XXUPXHxwXx3s4bZOpgplp/klSHNbXNxnJnWFrQ5WZyZfhcMM25z8SUPAM+Qyyff/tsn3+6SyZRv093jkzKTwkHjZRhPtc+JavXqh1ZZMnjaeqk1ojj4akitCJMDzMzbbZBPr09+a0TJsQRRxXVb1fNtduekOgPdg0/pncrKOJMdxQG0OopLtg4GfSWDubQXWCvU2yqTwq0R5UNqnd8gwkk8me6C4bQeLzsprbqXBt3BtnpvxRm0FrScDD4OKdNsd5jxvMUhdQfYarM1cABAzL6ZzIZvyju1fM6PjXNGBQScbdGeLR4AALA5G2cyA3HmP4CdMyog4DyL9syXNgAA2JDnm8kAAAAAGBeZDAAAAIDxGOZ3Mis5bWCPh7nFcJxw0U5+XL6g1la9x83OjTMuU75Re98GAATc798uO5wzx/ZImFsMx9xFe4d/cWSSISTfu6qvltW7ScK12Kw445LdV2dVl/AAAJ52zWS2DXQTTh7eY2Buk9xtopyRLrOmaNv5bLXWyiJuj5dvaPmUI3Ow22yQF03eZpNZRzy3yZm34AHg+SCTydbaL6pqjxs2tUlr+Ua6Jbu7mWXhXdvZdgW2Wls/IZkWWru9WWNcHHzQe7eXuee3GmRy4K0TtOGiXVy4Wv22hXgyr0s67vq2QGvmJ48zJeNiQTxBhPHxuMF4jc1abwCAx2CvTGbbKDdkWYT7jegOc3Xn09HtrtyWbRLh9bRuuALj7V0ypGrJTAut3qsF4hgyIc3qvdvmgjirT1uLpBtSvut8sVkl842UbVaPBF1fV36rkfzs3V5HQTyTkMpcouyxRbJYct22ogUAPCQymWyt/eLZqeW5XazcPcztblbJZGuXu2Qy1afJRm6PVPdwce9Bp9VRt2plgu/2nny6YPdZbWrlwXzvW5XMN9JaCeUctnovq5SPby/nVsv5BdNdkN0WqsfjBm+jzZCMDQAwLnfNZKqfMZMjk4/b2wfl42T1fIRPxWfk9WC1wWrvccky1GA4W3U0KTmpnqQ1Y2WoC0pWw6uOPWitOifBDK8Z1/qK1RNXrV49ld3qrY5mBT/pN2ik1WbcV2axlQMJ5jAf2NwyZck45uBgEOHtEMql+1Ssh2qZyeNgCVVDyi+YaiTdscfFqh11X40rAgAelftlMq2P2FaB7of9rOqZCOPGy+PJTUOrSutIeXBBR2XJ9VQmq8bikrNOcau12/8G1WeNqNr1+mEuCGASdmZCqsWWjT04X602l81SMGOT1VgtmQlskzif5qy6zACrzQYRxmc2CKOMKu6rNT/r3xZmnazMO8asqAAAo3PAPZlq+cwWrfrpnq+eibDVQrwLaW2t4u1CEGrrYNzRZWeC6eoGnynZmrpkDJeb5VG2PKmeD7JVeNkwV8YQzFiy07ldB+1kgtmwo5UH873PKlldda2VHDcSNFttpBV2PAmtUMvwMm8Freu0vFozrcXFysJlAK05AQA8Kgf822XVD8KgzOTg4uqZ8Lqfo4/NU2NnE0xpfvK7JS+NHdKs1i7tRVI9ODfI9S2Uc56pWI6rG0PQUTL4uFamzWWzVG155cF877NKVlfd3OVX9h4PJL46MnVbl38cT6uvWVUWv9R6tXXhAwCeA5dPv/23T++Sycz6dE9+Qs+qHof31Ph0f3gypyOY0tZpWlCy2nsQUrW15IiSQe46IWWD3QmJCyQ7CkKKe68+iNvMz1KrYqvHuEAQZ9zd3ML5VTdrKZane9Ywq2fn9pKvdhFXL4sFAXSPLLswgzbnnnEAwGOwYyZT3agFx7stPIWf0LMCiD/pH55gQsqD1WLxGuiWKU9cJqRua9fegxHNGk5+3vLVW4OqttYq1mowiGGr4IOxVF8KuoiJO4pLtg4Gfc0KbNLFpb3qWvHflozjCQrf9p45WLYcDzBfMq5ShpQJrxtYq8E1qw4AMBb7ZjLn+UTJBFaWGZH7z205jUeHAMxj7qLdapG32imPV6/u8uAlvaG/FNlX3HscZ/xedCkymbJ60E7ZZjzw1rgAAI/HxpkMWpwn09ib5zBGPBhnW7Tlzj4u9pTOSaolq4lHt52nWioSvxRkO3FHwavP560VAFAikwEAAAAwHjIZAAAAAOPhdzLYGHOL4bBoz88dzlH+u23rg4m/KRf/CijZbKbWgjKZ7zoCwN24fPrtv3/67b/f4d8uO5wzx/ZImFsMx9xFu9UiX9zOA1xli38/ExQuXwpKxiElG7w22x1Cq69MlWrhapXLnBSoG+TcNltTcRtqd+oyIQHAlR0zmW0D3YSTh/cYmNv7YJ43ZNZkbjvzC1p7mFO/bCe9VfvdNCB4tVrydrP+1Ms6gt7jwIIw4kRiUrFbJghmwSdpdXTdKQWALjKZbK39oqr2uGFTm7S24BMrKND9+FwQ3rWdbVdg/gM+aCHZZqvY4gCqdfPzE1SvFs4H361e7ajVYGt+Nly0iwtXq1/WbeAm1VuLfzJX1dnLnKOgzfwwuwPpllk5UXGxkrl9PdVCrZ7ospfJg2rJ21PQGmA+7FbJssGg99ZI45ar87xswgHgab9MZtsoN2RZhPuN6A5zdefTMesjLVkl2e/tZmt9g0+9jUgypGC3ETcSvJoJoBX8gt67W7Q1w6yW6S6Sbkj5rvPFZpXMN7L47ShYn8mSyRiWbTq3fedZ0FqryqzjwQ6+PBhs0OOTHk9vq53yMiwjaV2eLYJ+y9jyqyKYkyAAAOgik8nW2i+enVq+ZxfLutt8o3P7ubhVm9XH5dNkI0Gb8TaiPF7dmnQ7CkYUhN3qMfM0OVHdqV55MN/7ViXzjcxqs3sGb1dCPCGzRr2sVr7xKtWY45LJAFpTlywcX1CZyy0/otZUlB2tPzXByoxnLBhOXCDTCwAE3DWTCd6my7e5p5t38PJgtXyrej7Cp9r77NPrfzoKWgu6rrYZHIzDntvRpGTrcTWA7oyVoS4oOSukVmvVOQlmeM24NpmQ1gxMQp0Ua8WT7CgTWLVkPAOt1uJeLg2qLQQP8nEuCLJVMo45eUJn9V4WLuveTkJ1QhZ03WotP8zJkVnz0FrbQb8B3WEGY8+UrD4IWugOrTqZ1Yrl9AZLLjM/1fjjg7OGWQ4nPkEAUHK/TCb/nnhtZ8PqmQjjxpOfUnHJ4LMnOLigo8UlMzHELC45N6Rqa5OPwwUrJBNqN5hMyW4Ls3YMcwNYUD1eElv1ErRc7reqJRcs3ZWLNrPq9ru4Jou5DKl74SSX4uJhBpdh2UvQdfWlTMxxgRblEIKSk1e7YWSm/Smc+Wqb3QbjkuUZCQYVP6geDya5e74AoMoB92Sq5VtvlJPCk5dmVc9EWG0WE4Kpiyc/LnlpfFImu760Pw7L6vkgW4UXD3NBAE+NxX+H3oMe46ebd7TyYL73WSWrq661kuNGFvRefakMaf0MrBxm6yruthCHl485KJBprXzzieMpxzU5Us5DPEXVmS9jaE14Nf4WrWHGJ6t1+rrHW2MEgCQH/NtlrTfHVpnJwcXV8+EhQzCBrZfikpfwkzLZ2qW9SKoH5wa5SQvJuq1RZM5C0NEmJ6j7dE1f1ZZXHsz3PqtkddXNXX4L1kPw6mSpJNvPN75gmN2LqDshc1dXvutua623lKCFyeWZCT6et7kTMus9J/lSssfWJ8XkQWs+81ciALzifpnMrE/34E0zUyX4TGqFVxZATHUCg8nvlrzMWSGt1i6vL5JW9WSQQZVth/n0+h6x23u12T3ms1W9G0+mi0zvrR7jAkGccXdzC+dXXX4ptq6veM6rE7IspKDrZW3GY8+8w8xaXZlx5a/KIOxJCyuDrzYbF24dzJTPLMjuTOYvtEnJyUQFYweAmB0zmeCNvnq828JT+1M/Uz1uuVUMLYIJbL0UnLjgHHV7vJZ5ev1jMnNCk0EGDW5Vvdpaq5dM9T2Cz3d0fSnoIibuKC7ZOhj0NSuwSReX9qprxX9bMhl5sAxa/ZYnrnokuRIybQbDrJYMOu2WzBysPu02HhyZDL8Wez/tSQbfOt5tM+6urN6akO5ggx7jkpkeASDDvpnMed6Vjg0s8+H3MDz8APF4zF20Wy3yfDuPd1m1tuNB4e7B7pHqJr5FJtr8/j6ZPnVHmsxAguHkE6Huh+bcTOb63+SIAKDL5dPv/v3T7zbLZNDibKndfjyHMeLBsGhf0d3Qb9hR3Gmw2X1qvJ22Ql02nMluPm6/eiQ4Xo4uePoUJgzVWQqKxTOfabwV81Ob6hxmzjsAdJHJAAAAABgPmQwAAACA8dg4k9nvNvGj3oB+mIHgIUmuz+S3X2a1uYwFXx9KFsi0HJSZ29qC3rvFkudiWdcAANyffTOZjWOVyQD3ZcEGuvvt+XybMbMC7rZWtnl5/Zv9KzOZp8TMBE0lW94jk+k2CwDAUeyYyWwb6H3avz8PMxA8JLMymVkZwtyuF6coyfZbrwZJQrfrsDqkIQAABeJJREFUSQC3TSVLtvoKxjJryNXCcZz54bfCAABgK06XycR17/AxeeeP4W5H12AuN5vFTLOZaXzadLxzz051X5Vpobu1yoe6LP6gerVwJvigr2rvmcirXcw63bNO5eRclK+WlMdbXbciiYvFkx+ciOuRTOHJDMST1h1IdYoWDzkYRTmiuOvkGcm8CgDAJuyVyayKKbeLXdPFyhju3FF+k5Rv+Xansslg5+5yyn6DPVPc15rqt3u4TapPXl0zzGqZuMdMSPmuM8Vae99g0U5iaE1IckXFxZKTXxbr7uOrzSan91LQqlu9PLszk5yrVslq+/leMq8CALAJMpklMdy5o2BTuLjl2/3TJoNN7jtbZeJtYqbxYJPa3c7OmoFu9eTTBblEZos592C+926xuTlJpla56Z+8A8yd/Li1alTVprojLRdhHHP11VlLvRttclDLZj7TMgAA23KnTOZ68PYzslWlur3odlHWLbcLZb+TYG4Lx/0G1eP4ux21ylxe3+6UIc3qvRV/dZjBRFXHkhlUOZZ4ROWR1onrVi9jCHrPDKHsMXjaPX59tUq1heBBPs4FQZbtLwi7XAbBEFqNJGslX6q+mllscYHk2elWiQ+uPNIKr1ts1qsAAGzC/e7JTLaMtwcnj7sfz/EGYtY+YMF+KK5ebulacVY7Csqsn7plbT69PtK4zeSou13kN0mZrVi3nVm9V6sHva+J8Ckc7CT+7npO7lAXxDlr21peLNV2krN66TGplSlWHVFrjAvarJZsvZqZt1Z43TKtWsGJ6B7PvAoAwCYcn8mUn9nxh2jQRbd6vqNWxcVkog3KXOdtzdSV/V4aW6JJzMkgg6fdKguqByXv0PusxbMswmRHKw/me88U6y7+cjitAS6Y1XzAcV+3sXWv6Hwk1ev0qZiH7oQELbciyXBbMjP2bqfBqwAAbML9/u2y20/r+LMw2CXE7Z+ZYMaSExvPTHfqggartfJNVcvMrTKr+vqA4+62rd49U/m+qi2vPJjvPVOsLB90Gq/q+ITmS16Pz7pOuwPJtNxqIT47sy7zuOVlJOc2f5ECALATd/1XmJMbl/izs9p+cptyIMGMJSd25dQFDXarZ4K8zNnldLuYvBS/GreWqT4r+Lj3sm61teR5Dyq2eowLBHHG3XWLXWcyXvzx5OdXYLXZWbM6q/2g8fzxeIryV3G8XGe928Tt356+/IRkXgUAYBMun33375/tk8kEH+TVKtVGMo1XdwZnIDlj+WKX3tQFs1SWeXp9a5WZzG6QC0pWu65Gmx97XH1W78ng8x1dX4p76QbQ6igu2ToY9DUrmGp3rVcvtZ19t1bQ0dxzF5z0zJEFbV6HHIxo1tiTkxPHHx9pTWww8My5AABgPftmMht+mMUtdz9TNyEZZ/VxpjxwNuauz/jCKS/bp8YlUz4IorrtJX+1xmXKV9dfqskeu287rZJBxVmDbZ2RNW0CALAHG2cyhzMr6zhDDD7vcWYWZDKtI5P9cdBykMaUqVGrnSAZyFyhmUwmTiTy7wPloFqdLntjScbw9PrMtKYu0zsAAPfh0TIZAAAAAM8BmQwAAACA8ZDJAAAAABgPmQwAAACA8ZDJAAAAABgPmQwAAACA8ZDJAAAAABgPmQwAAACA8ZDJAAAAABgPmQwAAACA8bh89t1/fPbdf8hkAAAAAAyETAYAAADAeMhkAAAAAIyHTAYAAADAeMhkAAAAAIyHTAYAAADAeMhkAAAAAIzH5bPv/+Oz72UyAAAAAEZCJgMAAABgPGQyAAAAAMZDJgMAAABgPGQyAAAAAMZDJgMAAABgPGQyAAAAAMZDJgMAAABgPGQyAAAAAMZDJgMAAABgPGQyAAAAAMZDJgMAAABgPGQyAAAAAMbj8vn3//G5TAYAAADAUMhkAAAAAIyHTAYAAADAeMhkAAAAAIyHTAYAAADAeMhkAAAAAIyHTAYAAADAeMhkAAAAAIyHTAYAAADAeMhkAAAAAIyHTAYAAADAeMhkAAAAAIzH/w/YWMnV6PgBywAAAABJRU5ErkJggg==" alt="" />
ruby 发送邮件的更多相关文章
- 雷林鹏分享:Ruby 发送邮件 - SMATP
Ruby 发送邮件 - SMATP SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. ...
- ruby发送邮件方法
#encoding:utf-8require 'mail'def send_email sum,fail,case_path,name,receive smtp = { :address => ...
- rails使用QQ邮箱发送邮件蛋疼的经历
以前本猫在blog中写过使用ruby发送邮件的博文,其中使用了163和qq的邮箱发送邮件都可以发送成功.但是现在使用rails的发送邮件功能,使用的是qq的邮件服务器发送,死活不可以!要不就是认证失败 ...
- ruby 规整git commit 信息
实现过程: 1.使用git log 可以获取到所有git commit.对命令加入参数后,可以获取某段时间的log.和只输出log的某些字段.如: [root@localhost crowd-web- ...
- ruby on rails使用gmail的smtp发送邮件
参考至http://guides.rubyonrails.org/action_mailer_basics.html 在gmail账户的安全里先开启两步验证(链接:https://myaccount. ...
- ruby中 Win32ole的各应用操作方法(word excel Outlook IE)
Win32ole为标准Ruby发行版的一部分.Win32ole是访问Windows自动化的接口,可以让Ruby和Windows应用进行交互.具体说来Win32ole可以操作Word,Excel,IE, ...
- Ruby On Rails 常用的精品Gem汇总
首先需要注明一点,本文是原创的并不是从其它地方转载.所有的数据是我从 GitHub 和 RubyGems 上码下来的,数据的截取时间就是本文的发布日期. RubyGems 的下载量可以看到在用这个 g ...
- SSMTP—让Linux系统从Office 365发送邮件
SSMTP-让Linux系统从Office 365发送邮件 导读 SSMTP 是一个非常简单实用的小工具,它可以将 Linux 系统的电子邮件中继到 Office 365.Google 或其它第三方 ...
- 腾讯QQ企业邮箱在ruby on rails 框架中的mailer配置
在编写ruby on rails程序时,我们可能会需要用到发送邮件的程序,如果使用gmail进行smtp发送一般问题不大,但很多企业使用的是腾讯QQ企业邮箱.使用该邮箱进行链接时出现各种错误,goog ...
随机推荐
- World Wind Java开发之十——AnalyticSurface栅格渲染(转)
http://blog.csdn.net/giser_whu/article/details/43017881 1.AnalyticSurfaceDemo ArcGIS下对栅格的各种分级渲染效果是非常 ...
- bzoj2600 [Ioi2011]ricehub
Description 乡间有一条笔直而长的路称为“米道”.沿着这条米道上 R 块稻田,每块稻田的坐标均为一个 1 到 L 之间(含 1 和 L)的整数.这些稻田按照坐标以不减的顺序给出,即对于 0 ...
- IIS6.0开启gzip压缩
双击IIS服务器,右键点击网站,点击属性,然后点击服务,我们看到HTTP压缩,然后在压缩应用程序文件,压缩静态文件中打钩,然后点击确定,第一步就完成了 然后我们右键点击web服务扩展,点击添加一个 ...
- 第七章 动态创建HTML内容
javascript也可以改变网页的结构和内容 document.write()方法 可以方便快捷地把字符串插入到文档里 document.write("<strong>hell ...
- theano 模块 MLP示例
theano 模块 MLP示例,有需要的朋友可以参考下. theano教程Example: MLP: 约定数组为列向量, 层级:将多层传感器定义为一连串的层级,每个层级定义为一个类.类属性包括:权重. ...
- Drupal7新装一个主题时页面白屏,如何设置一个默认主题?
问题: 请问我不小心退出登陆了 但这个主题没有登录口 而且之前不知道为什么我其他界面都不能显示内容所以 ?q=user 也不行,怎么办呢?看网上说更换默认主题 去variable表里把默认主题换了,我 ...
- ArrayList集合例题,商品库存管理(集合)
创建车库集合,存进车 public class demo1 { String pinpai; String c; int s; } import java.util.ArrayList; class ...
- 前端异常日志监控 - 使用Sentry
背景 现在的前端项目越来越复杂,在不同的客户端会产生各种在开发人员机器上不会出现的问题.当用户报告一个问题给开发人员的时候,开发人员无法直接定位问题.在此前,听过一次鹅厂的前端人员,他们对QQ里面的网 ...
- cf550D. Regular Bridge(构造)
题意 给出一个$k$,构造一个无向图,使得每个点的度数为$k$,且存在一个桥 Sol 神仙题 一篇写的非常好的博客:http://www.cnblogs.com/mangoyang/p/9302269 ...
- Mysql5.7自定义函数递归报错1424 Recursive stored functions and triggers are not allowed
示例: DELIMITER $$CREATE FUNCTION test(countnum INT)RETURNS INT DETERMINISTICBEGINDECLARE tempnum INT ...