精华内容
下载资源
问答
  • 电子邮件注册帐号大全_电子邮件

    千次阅读 2020-07-12 12:00:58
    电子邮件注册帐号大全I’m drowning in it… I had a dream last night that I sent the wrong replies to various people’s emails. That would be bad. What’s worse is that I’m dreaming about email… ...

    电子邮件注册帐号大全

    I’m drowning in it… I had a dream last night that I sent the wrong replies to various people’s emails. That would be bad. What’s worse is that I’m dreaming about email… aaaaaahhhh… go generate your own evil plan.

    我被淹死了……昨晚我做了一个梦,我向各个人的电子邮件发送了错误的回复。 那将是不好的。 更糟糕的是,我梦见电子邮件……aaaaaahhhh…去制定自己的邪恶计划

    翻译自: https://rachelandrew.co.uk/archives/2002/05/01/email/

    电子邮件注册帐号大全

    展开全文
  • 电子邮件账号密码Your friends are reporting spam and pleas for money originating from your email account and some of your logins aren’t working; you’ve been compromised. Read on to see what to do ...
    电子邮件账号密码

    电子邮件账号密码

    passwordbreach

    Your friends are reporting spam and pleas for money originating from your email account and some of your logins aren’t working; you’ve been compromised. Read on to see what to do right now and how to protect yourself in the future.

    您的朋友报告了来自您电子邮件帐户的垃圾邮件和讨价还价的请求,并且您的某些登录无效; 你已经被妥协了。 继续阅读以了解现在该怎么做以及将来如何保护自己。

    A compromised password is serious business. A security breach at a minor service you use can jeopardize your more serious accounts if you use weak passwords (or even the same one) across all of them and a security breach at a core service like your email account means it is time to batten the hatches and get your passwords under control.

    密码泄露是很严肃的事情。 如果您在所有次要服务上使用弱密码(甚至是相同的密码),则您使用的次要服务上的安全漏洞可能会危害您的更严重的帐户,而像电子邮件帐户这样的核心服务上的安全漏洞则意味着现在应该对这种严重漏洞进行保护孵化并控制您的密码。

    This guide is full of useful tips for anyone who has to deal with the fall out of leaked password but we’ll be focusing specifically on dealing with the mother of all compromises: a compromised email account. Once someone has control of your email account they can easily gain control of the dozens of other services you use as, for better or worse, email functions as a major key-to-the-castle and qualifying identifier.

    本指南提供了许多有用的技巧,适用于必须处理泄漏的密码泄露问题的任何人,但我们将专注于处理所有受到威胁的母亲:受感染的电子邮件帐户。 一旦某人控制了您的电子邮件帐户,他们就可以轻松地控制您使用的其他数十种服务,无论好坏,电子邮件都是主要的城堡钥匙和合格标识符。

    保护您的电子邮件帐户 (Secure Your Email Account)

    2011-06-14_142706

    The absolute first thing you need to do at even the slightest hint that something is amiss is to lock down your account. The second your friend calls you and says “I just got an email from you claiming you’re in London and need me to wire you money” you need to get on your computer and get to work.

    您需要做的绝对第一件事是锁定您的帐户,即使有丝毫提示是不对的。 您的朋友第二次打电话给您,并说:“我刚收到您的一封电子邮件,声称您在伦敦,需要我为您汇款”,您需要使用计算机并开始工作。

    Resetting/recovering your password. You may need to reset or recover your password. The process varies from email service to email service but we’ve gathered up the reset links for three popular email services here to help speed the process along if you’ve found this article via a panicked Google search. You can find the forms for Gmail, Hotmail, and Yahoo! Mail here. All three of the aforementioned services have an option for you to specify not just that you forgot your password but that you believe your account has been compromised.

    重置/恢复密码。 您可能需要重设或恢复密码。 电子邮件服务的处理过程因电子邮件服务的不同而异,但是如果您在惊慌的Google搜索中找到了本文,我们将在此处收集三种流行的电子邮件服务的重置链接,以帮助加快该过程。 您可以找到GmailHotmailYahoo!的表单。 邮件在这里。 上述所有三个服务均提供了一个选项,供您指定不仅忘记密码,而且还认为您的帐户已被盗用。

    Change your password to something completely different than your previous password. Make it a combination of alphanumeric characters and if need be temporarily write it down. The important thing is that you secure your email immediately with a strong password. While you are still logged into your email account complete the following steps.

    将您的密码更改为与以前的密码完全不同的密码。 将其组合为字母数字字符,如果需要,可以暂时将其写下来。 重要的是,您应立即使用强密码保护电子邮件安全。 当您仍然登录到电子邮件帐户时,请完成以下步骤。

    Enable two-factor authentication. Although your email service may not offer this feature, if it does turn it on. You likely won’t keep it on forever (two-factor verification is kind of a hassle) but while you’re in lock-down mode and attempting to get everything under control it’s nice to know that someone would need to, for example, have access to your mobile phone and your password in order to gain access to your email account. You can read about two-factor authentication for Gmail here.

    启用两因素身份验证。 尽管您的电子邮件服务可能不提供此功能,但如果确实将其打开。 您可能不会永远保持下去(两因素验证有点麻烦),但是当您处于锁定模式并试图控制一切时,很高兴知道有人需要例如有权访问您的手机密码,以便访问您的电子邮件帐户。 您可以在此处阅读有关Gmail的双重身份验证的信息

    Go through your email settings with a fine tooth comb. In addition to changing your password and setting up two-factor authentication you need to go through the settings on your email account to make sure nothing is out of the ordinary. Here are several things you need to look at: check your recovery email and ensure that it is set to an email address you control, check your password hints and replace them with fresh questions only you know the answer to, check your email forwarding settings to ensure that however compromised your email hasn’t set it up so that all your future email will be forwarded to a 3rd party.

    用细齿梳检查您的电子邮件设置。 除了更改密码和设置两因素身份验证之外,您还需要检查电子邮件帐户上的设置,以确保一切都与众不同。 您需要查看以下几件事:检查辅助邮箱并确保将其设置为您控制的电子邮件地址,检查密码提示,并用只有您知道答案的新问题替换它们,检查您的电子邮件转发设置以确保没有设置妥协的电子邮件,以便将来所有电子邮件都转发给第三者。

    Regarding password hints: password recovery systems based on hints are notoriously easy to defeat as it isn’t particularly difficult to get basic information about a person like where they were born, what their cat’s name is, etc. (thank you frivolous Facebook quizzes). One easy way to radically increase the strength of hint questions is to make them about someone other than yourself. Answer the questions as though you are your father, a character in a comic book or novel you love, or any other third party that you have a significant degree of knowledge about.

    关于密码提示:众所周知,基于提示的密码恢复系统很容易遭到破坏,因为要获得有关某人的基本信息(例如他们的出生地,猫的名字等)并不是特别困难(感谢您轻率的Facebook测验) 。 一个简单的方法,从根本上增加一丝的疑问强度是让他们了解自己比其他人。 就像您是您的父亲,喜欢的漫画书或小说中的人物,或是您具有相当知识的任何其他第三方一样,回答问题。

    Don’t neglect these three steps and make sure to look at all the settings on your email account to make sure there are no surprises tucked away!

    不要忽略这三个步骤,并确保查看您的电子邮件帐户上的所有设置,以确保没有任何意外!

    更改与您的电子邮件地址关联的每个密码 (Change Every Password Associated with Your Email Address)

    socialmediaicons

    Email addresses function as the proverbial keys to the castle. If someone has access to your email account they also have access to nearly everything else you’ve ever used your email account for—your iTunes login, your Amazon.com account, your credit cards and banking institutions, social media accounts, discussion forums and so on. Now is the time to start changing passwords. We realize this isn’t fun and we realize it’s time consuming if you have lots and lots of accounts. The upside is that once you do it, you’ll have effectively inoculated yourself against this misery in the future.

    电子邮件地址是城堡的惯用语。 如果某人可以访问您的电子邮件帐户,那么他们也几乎可以访问您曾经使用过的电子邮件帐户的所有其他内容-iTunes登录名,Amazon.com帐户,信用卡和银行机构,社交媒体帐户,论坛和以此类推。 现在是时候开始更改密码了。 我们意识到这不好玩,而且如果您有很多帐户,那会很浪费时间。 好处是,一旦您这样做,将来就可以有效地预防这种痛苦。

    Get a password manager. Not everyone uses a password manager and lots of people have their reasons for not doing so including “I’ve got a good memory”, “I don’t trust password managers”, “I’ve got some straight up KGB algorithm in my brain to generate new and awesome passwords”, etc. We’ve heard it all before. If you want to play the “I’ll memorize all my passwords” game, that’s fine. You simply won’t have as strong and varied passwords as someone who uses a password manager. Not using a password manager is like refusing to use a calculator and solving all math problems long hand; there’s no good reason to forgo using a calculator and there’s no good reason to stick to juggling passwords in your head when there are better alternatives.

    获取密码管理器。 并非每个人都使用密码管理器,很多人没有这样做的原因包括“我有一个很好的记忆力”,“我不信任密码管理器”,“我的手机中有一些简单的KGB算法”大脑来生成新的,很棒的密码”等等。我们以前都听说过。 如果您想玩“我会记住我所有的密码”游戏,那很好。 您根本不会拥有使用密码管理器的人那样强大而多样的密码。 不使用密码管理器就像拒绝使用计算器并长期解决所有数学问题一样。 没有充分的理由放弃使用计算器,也没有充分的理由在有更好的选择时坚持使用乱七八糟的密码。

    Whether you use LastPass, KeePass, or another respectable password manager that integrates with your web browser (and thus decreases your resistance to using it), you’ll have a system that allows you to use extremely strong and unique passwords for each distinct login.

    无论您使用LastPassKeePass还是与Web浏览器集成的另一个受人尊敬的密码管理器(从而减少了使用它的阻力),您都将拥有一个系统,该系统允许您为每个不同的登录使用极其强大且独特的密码。

    Search your email for registration reminders. It won’t be hard to remember your frequently used logins like Facebook and your bank but there are likely dozens of outlaying services that you may not even remember that you use your email to log into.

    在您的电子邮件中搜索注册提醒。 记住您经常使用的登录名(如Facebook和您的银行)并不难,但可能会有数十种支出服务,您甚至可能都不记得您使用电子邮件登录了。

    Use keyword searches like “welcome to”, “reset”, “recovery”, “verify”, “password”, “username”, “login”, “account” and combinations there of like “reset password” or “verify account”. Again, we know this is a hassle but once you’ve done this with a password manager at your side you have a master list of all your account and you’ll never have to this keyword hunt again.

    使用诸如“欢迎使用”,“重置”,“恢复”,“验证”,“密码”,“用户名”,“登录”,“帐户”之类的关键字搜索以及诸如“重置密码”或“验证帐户”之类的组合。 同样,我们知道这很麻烦,但是一旦您在身边使用密码管理器完成此操作,您便会拥有所有帐户的主列表,并且您将不再需要再次搜索该关键字。

    Untitled-5

    Use strong passwords. If you’re using a good password manager this won’t even be an issue. LastPass, for example, has a built in password generator. A click of a button is all that it takes to generate a password like “Myy0vNncg6dlYrbhVjo1”; add in another click and you can easily associate that extremely strong password with the account.

    使用强密码。 如果您使用的是好的密码管理器,那么这甚至都不是问题。 例如,LastPass具有内置的密码生成器。 只需单击一个按钮,即可生成诸如“ Myy0vNncg6dlYrbhVjo1”之类的密码。 再点击一次,您就可以轻松地将该强密码与该帐户相关联。

    If you’re not using a password manager there are still some hard and fast rules you should live by when it comes to manually generating strong passwords:

    如果您不使用密码管理器,那么在手动生成强密码时,仍应遵循一些严格的规则:

    • Passwords should always be longer than the minimum the service allows for. If the service in question allows for 6-20 character passwords go for the longest password you can remember.

      密码应始终长于服务允许的最小值。 如果有问题的服务允许使用6-20个字符的密码,则请使用最长的密码。

    • Do not use dictionary words as part of your password. Your password should never be so simple that a cursory scan with a dictionary file would reveal it. Never include your name, part of the login or email, or other easily identifiable items like your company name or street name. Also avoid using common keyboard combinations like “qwerty” or “asdf” as part of your password.

      不要将词典词用作密码的一部分。 您的密码绝对不能如此简单,以至于通过字典文件进行的粗略扫描都会发现该密码。 切勿包括您的姓名,登录名或电子邮件的一部分,或其他容易识别的项目,例如公司名称或街道名称。 另外,请避免将常见的键盘组合(例如“ qwerty”或“ asdf”)用作密码的一部分。

    • Use passphrases instead of passwords. If you’re not using a password manager to remember really random passwords (yes, we realize we’re really harping on the idea of using a password manager) then you can remember stronger passwords by turning them into passphrases. For your Amazon account, for example, you could create the easily remember passphrase “I love to read books” and then crunch that into a password like “!luv2ReadBkz”. It’s easy to remember and it’s fairly strong.

      使用密码短语而不是密码 如果您没有使用密码管理器来记住真正的随机密码(是的,我们意识到我们确实在使用密码管理器这一想法),那么您可以通过将更强的密码转换成密码来记住它们。 例如,对于您的Amazon帐户,您可以创建容易记住的密码短语“我喜欢读书”,然后将其压缩为“!luv2ReadBkz”这样的密码。 这很容易记住,而且相当强大。

    练习良好的密码卫生措施 (Practice Good Password Hygiene Going Forward)

    2011-06-14_144229

    It’s really easy to slip back into bad habits once the shock of security breach has passed. Call it the dentist-effect: you floss and brush like mad before the dentist, you promise yourself you’ll floss and brush after the visit, and three weeks later you find yourself falling asleep on the couch watching Archer with a mouthful of gummy bears.

    一旦安全漏洞的冲击过去,就很容易陷入不良习惯。 称它为牙医效果:您像在牙医面前疯狂地用牙线和刷子刷牙,您保证自己会在拜访后用牙线和刷子刷牙,而三周后,您发现自己在沙发上睡着了,看着满口软糖熊的阿切尔。

    Staying on top of password management is important and when done correctly protects you from the agony of having to do all this password fixing again (or, worse, losing significant sums of money or becoming embroiled in a legal battle because of what was done with your compromised account). Here’s what you need to do going forward with your old and new accounts:

    掌握密码管理非常重要,当密码正确处理后,您不必再进行所有密码修复工作(或者更糟糕的是,由于您所做的事情而损失大量金钱或陷入法律纠纷中)被盗用的帐户)。 继续使用新旧帐户,您需要执行以下操作:

    Always use a unique password for each service. Think of this policy like having fire suppression systems in every room of a building. If Lab 223 catches fire it doesn’t take the whole structure with it. If someone hacks a game site you visit they won’t also have access to your email (or any other logins associated with your email address).

    始终对每个服务使用唯一的密码。 将此政策想像成在建筑物的每个房间都装有灭火系统。 如果Lab 223着火了,它并不会占据整个结构。 如果有人入侵您访问的游戏网站,他们也将无权访问您的电子邮件(或与您的电子邮件地址相关的任何其他登录信息)。

    Change your passwords. Don’t be resistant to changing your passwords. If you use your email a lot at public Wi-Fi spots, internet cafes, etc. then you need to change it frequently as you are using it in locations where it can be easily sniffed, key logged, or otherwise compromised. If you use a master password manager this process is less painless as you really only need to remember a strong password for the password manager and a strong password for your email (everything else can be managed by the password manager).

    更改密码。 不要拒绝更改密码。 如果您在公共Wi-Fi站点,网吧等地方大量使用电子邮件,则需要经常更改它,因为在容易被嗅探,记录密钥或以其他方式受到破坏的位置使用它。 如果您使用主密码管理器,则此过程将轻松得多,因为您实际上只需要记住密码管理器的强密码和电子邮件的密码(其他所有内容都可以由密码管理器管理)。

    Do not store your passwords insecurely. However you store your passwords, do not store them insecurely. If you write them down on a notebook lock it in your firesafe. If you keep them in a password manager, use a very secure password for that manager. If you keep them on your computer in a text document then you must encrypt that text document and not simply leave it in your My Documents folder. Your password list, however it is stored, is the passport to your digital life.

    不要不安全地存储密码。 但是,如果您存储密码,请不要不安全地存储它们。 如果您将它们写下来,将其锁定在防火安全柜中。 如果将它们保留在密码管理器中,请为该管理器使用非常安全的密码。 如果将它们保存在计算机中的文本文档中,则必须加密该文本文档,而不仅仅是将其保留在“我的文档”文件夹中。 您的密码列表(无论已存储)是您数字生活的通行证。

    Do not transmit passwords insecurely. This is a combination of the previous rule and the next rule. Do not email yourself a plain text file of your passwords. It’s the equivalent of writing your passwords on a postcard and mailing them. Anyone who touches the postcard in transit can easily read the passwords. Never email or instant message your passwords for any reason.

    不要不安全地传输密码。 这是上一条规则和下一条规则的组合。 不要给自己发送密码的纯文本文件。 这相当于将密码写在明信片上并将其邮寄。 任何在运输途中触摸明信片的人都可以轻松读取密码。 请勿出于任何原因通过电子邮件或即时消息发送密码。

    Do not share your password. As well as not sharing your password between services don’t share your passwords with other people. Your friends don’t need to know your passsword, your boss doesn’t need to know your password, no legitimate company employee from Google or Bank of America is ever going to call you up or email you and ask for your password. Your default stance on password sharing should always be “No.”

    不要共享您的密码。 除了不在服务之间共享密码外,请勿与其他人共享您的密码。 您的朋友不需要知道您的密码,老板不需要知道您的密码,Google或美国银行的合法公司员工都不会打电话给您或通过电子邮件向您询问密码。 您在密码共享方面的默认立场应始终为“否”。



    At this point, if you’ve followed along, you have a set of unique, strong, and well managed passwords. You have one final task. Pull up your contact list and send an email to all the people who you previously spammed with “Help, I’m stuck in London and have no money…” messages and email them a link to this article. There’s a good chance that, like you were, they’re one bad break away from a password nightmare.

    在这一点上,如果您遵循的话,那么您将拥有一组独特,强大且管理良好的密码。 您还有一项最后的任务。 拉出您的联系人列表,然后向您以前曾向其发送垃圾邮件的所有人发送电子邮件,其中包括“帮助,我被困在伦敦,没有钱……”消息,然后通过电子邮件将其链接到本文。 与您一样,很可能它们是摆脱密码梦night的一个不好的机会。

    翻译自: https://www.howtogeek.com/66033/how-to-recover-after-your-email-password-is-compromised/

    电子邮件账号密码

    展开全文
  • 电子邮件

    千次阅读 2019-05-01 17:55:29
    电子邮件电子邮件: smtp smtps 服务器: postfix sendmail qmail 客户端: web ,foxmail , outlook 收电子邮件: pop3 pip3s imap imaps 服务器: devocote 客户端: web ,foxmail , ou...

    发电子邮件

    发电子邮件:  smtp smtps
                服务器: postfix sendmail  qmail
                客户端: web ,foxmail , outlook 
    收电子邮件:  pop3 pip3s  imap imaps
                服务器: devocote  
                客户端: web ,foxmail , outlook 
    

    现生活 : 物体本身 --> 发信人发信人主题 --> 快递公司 --> 放到收信的人家里
    邮件: 电子邮件 --> 发信人发信人主题 --> smpt服务器 --> 放到收信人邮箱里
    收信人 --> 进入自己的邮箱查看,使用pop协议

    python :
    写信的工具: email
    发信的工具: smtplib

    因为大公司都对邮件作了安全限制,所以一般使用第三方工具无法使用帐号和密码登录。
    同时如果希望第三方可以使用smtp pop 服务还要开启权限(smtp服务器,授权码)

    示例1: 发送纯文本邮件
    from email.mime.text import MIMEText
    import smtplib

        server = 'smtp.163.com'
        user = 'hogwartslord@163.com'
        to_user = user
        passwd = '你的授权码'
        subject = '沁园春·雪'
        body = r'''北国风光,千里冰封,万里雪飘。
        望长城内外,惟余莽莽;大河上下,顿失滔滔。
        山舞银蛇,原驰蜡象,欲与天公试比高。
        须晴日,看红装素裹,分外妖娆。
        江山如此多娇,引无数英雄竞折腰。
        惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚。
        一代天骄,成吉思汗,只识弯弓射大雕。
        俱往矣,数风流人物,还看今朝。'''
    
        msg = MIMEText(body)
        msg['From'] = user
        msg['To'] = to_user
        msg['Subject'] = subject
    
        tool = smtplib.SMTP()
        tool.connect(server)
        #tool.starttls()
        tool.login(user,passwd)
        tool.sendmail(user,to_user,msg.as_string())
        tool.close()
    

    示例2: 发送含图片和附件的邮件
    import smtplib
    # MIMEMultipart可以将多个MIME对象进行封装
    from email.mime.multipart import MIMEMultipart
    from email.mime.image import MIMEImage
    from email.mime.text import MIMEText

        server = 'smtp.163.com'
        username = 'hogwartslord@163.com'
        password = '授权码'
        subject = r'张宗昌相比,古人的打油诗真是弱爆了888'
        to_user = '1040926265@qq.com'
    
        image_id = 'testimg'
        image_path = 'baidu.png'
        attach_path = 'abc.xlsx'
        body = r'<font color=red> 这是一个测试:<br><img src="cid:{}"><br>详情见附件.</font>'.format(image_id)
    
    
        #添加图片函数
        def addimg(src,imgid):
            with open(src,'rb') as fp:
                msgImage = MIMEImage(fp.read())
            msgImage.add_header('Content-ID',imgid)
            return msgImage
    
    
        msg = MIMEMultipart('mixed')
        msgtext = MIMEText(body,"html","utf-8")
        msg.attach(msgtext)
        msg.attach(addimg(image_path,image_id))
    
        #创建附件
        attachment = MIMEText(open(attach_path,'rb').read(),'base64','utf-8')
        attachment["Content-Type"] = "application/octet-stream"
        #指定邮件中附件的名字
        attachment["Content-Disposition"] = 'attachment; filename="{}"'.format(attach_path)
        msg.attach(attachment)
    
        msg['Subject'] = subject
        msg['From'] = username
        msg['To']   = to_user
    
        tool = smtplib.SMTP()
        tool.connect(server)
        tool.login(username, password)
        tool.sendmail(username, to_user, msg.as_string())
        tool.close()
    

    生成excel文件

    用途: 银行,支付宝等下载一年的消费情况
          生成报表
    如何生成excel文件
        csv : 文件可以当成一种excel格式,不过是纯文本的
        XlsxWriter: 这个支持功能强大
        其它python的excel模块
    安装:
        pip3 install XlsxWriter
    

    示例1:

    import xlsxwriter
    workbook = xlsxwriter.Workbook('test.xlsx')
    
    worksheet = workbook.add_worksheet('abc')
    worksheet.write('C2','name')
    worksheet.write('D2','语文')
    worksheet.write('E2','数学')
    worksheet.write('F2','英文')
    
    workbook.close()
    

    示例2:

    import xlsxwriter
    
    workbook = xlsxwriter.Workbook('test.xlsx')
    worksheet = workbook.add_worksheet()
    #第一行
    worksheet.write('C2','name')
    worksheet.write('D2','语文')
    worksheet.write('E2','数学')
    worksheet.write('F2','英文')
    #第二行
    row2 = ['libai',100,90,80]
    worksheet.write_row('C3',row2)
    #第三行
    row3 = ['quyuan',90,90,90]
    worksheet.write_row(4-1,3-1,row3)
    

    示例三:

      import xlsxwriter
        data = [
            ["name","语文","数学","英文","平均分"],
            ["libai",100,90,80,],
            ["quyuan",90,90,70,]
        ]
        workbook = xlsxwriter.Workbook('test.xlsx')
        worksheet = workbook.add_worksheet()
        bold = workbook.add_format()
        bold.set_bold()
        bold_red = workbook.add_format()
        bold_red.set_bold()
        bold_red.set_font_color('red')
    init = (12,8)
    for i in range(1,len(data)):
        tmp = data[i][1:]
        avg = sum(tmp) / len(tmp)
        avg = '{0:.1f}'.format(avg)
        data[i].append(avg)
    
    for j in range(len(data)):
        row = init[0] + j
        col = init[1]
        if j == 0:
            worksheet.write_row(row,col,data[j],bold_red)
        else:
            line = data[j]
            for col_tmp in range(col,col+len(line)):
                if col_tmp == col:
                    worksheet.write(row,col_tmp,line[col_tmp-col],bold)
                else:
                    worksheet.write(row,col_tmp,line[col_tmp-col])
    
    workbook.close()
    
    展开全文
  • SpringBoot实现发送电子邮件

    万次阅读 多人点赞 2019-04-20 23:41:23
    目录 电子邮件与Java发送邮件的历史 电子邮件原理 电子邮件服务器 电子邮箱 邮件客户端 邮件传输协议 ...从1969年10月世界上的第电子邮件发出,到2019年,已经过去将近半世纪了。虽然即时通讯和...

    SpringBoot知识体系

    目录


    从1969年10月世界上的第一封电子邮件发出,到2019年,已经过去将近半个世纪了。虽然即时通讯和视频会议,甚至全息投影都变得日益普及,但电子邮件依然有着广泛的使用场景和不可撼动的历史地位。

    SpringBoot拥有强大的生态链,几乎可以连接所有主流的开源库。

    下面我们就从电子邮件发送的历史再到原理,然后如何自己配置邮件服务器并发送邮件,一步步讲解。

    本文实现源码可以在这里找到: SpringBoot发送电子邮件源码

    电子邮件与Java发送邮件的历史

    1. 1969年10月,世界上的第一封电子邮件

    1969年10月世界上的第一封电子邮件是由计算机科学家Leonard K.教授发给他的同事的一条简短消息。第一条网上信息就是‘LO’,意思是‘你好!’。

    1. 1987年9月14日中国的第一封电子邮件

    在此之后,1987年9月14日中国的第一封电子邮件,这封邮件是由德国维尔纳·措恩与中国的王运丰在北京计算机应用技术研究所,发往德国一个大学的,邮件内容颇具深意,“Across the Great Wall we can reach every corner in the world.(越过长城,走向世界)”,这是中国通过北京与德国大学之间的网络连接,向全球科学网发出的第一封电子邮件。

    1. 30年代发展历程

    接下来中国的电子邮件进入了30年的发展期,虽然在1987年就有了电子邮件,但是,真正的邮件兴起,应该在90年代到2000年之间,因为在1987的时候中国网速特别慢,真正能接触到互联网的用户是非常少的,到了90年代中期,互联网浏览器的诞生,使得全民上网人数激增,电子邮件被广泛使用,此时,中国的部分学生在研究中使用到电子邮件,真正普及的时间是在2000年左右。

    1. Java发送邮件

    Java在发明之初,就开始支持发送邮件,通过java mail包方式去操作邮件发送的内容和协议,但是,这种发送方式稍微比较复杂,需要配置各种参数、协议、内容,之后产生了Spring框架。

    1. Spring发送邮件

    Spring在java mail的基础上进行了一些封装,使发送邮件的过程的复杂大大减少。

    1. SpringBoot发送邮件

    SpringBoot Mail在Spring Mail的基础上,再次进行一次封装,使得发送邮件的便利度上,更为简单。

    电子邮件原理

    电子邮件服务器

    用户要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器。这些邮件服务器就类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。

    邮件服务器就好像是互联网世界的邮局。按照功能划分,邮件服务器可以划分为两种类型:

    1. SMTP邮件服务器:用户替用户发送邮件和接收外面发送给本地用户的邮件。
    2. POP3/IMAP邮件服务器:用户帮助用户读取SMTP邮件服务器接收进来的邮件。

    电子邮箱

    电子邮箱也称为E-mail地址,用户可以通过E-mail地址来标识自己发送的电子邮件,也可以通过这个地址接收别人发来的电子邮件。电子邮箱需要到邮件服务器进行申请,也就是说,电子邮箱其实就是用户在邮件服务器上申请的账户。邮件服务器会把接收到的邮件保存到为该账户所分配的邮箱空间中,用户通过用户名密码登录到邮件服务器查收该地址已经收到的邮件。一般来讲,邮件服务器为用户分配的邮箱空间是有限的。

    邮件客户端

    我们可以直接在网站上进行邮件收发,也可以使用常见的FoxMail、Outlook等邮件客户端软件接受邮件。邮件客户端软件通常集邮件撰写、发送和收发功能于一体,主要用于帮助用户将邮件发送给SMTP邮件服务器和从POP3/IMAP邮件服务器读取用户的电子邮件。

    邮件传输协议

    电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行邮件传递,那就必须要遵守一定的规则,这个规则就是邮件传输协议。下面我们分别简单介绍几种协议:

    1. SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则。
    2. POP3协议:全称为 Post Office Protocol,邮局协议。它定义了邮件客户端软件和POP3邮件服务器的通信规则。
    3. IMAP协议:全称为 Internet Message Access Protocol,Internet消息访问协议,它是对POP3协议的一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则。

    邮件格式

    要想各种邮件处理程序能识别我们所写的电子邮件,能从我们所书写的电子邮件中分析和提取出发件人、收件人、邮件主题和邮件内容以及附件等信息,那么我们所写的电子邮件必须要遵循一定的格式要求,而这种邮件内容的基本格式和具体细节分别是由 RFC822 文档和 MIME 协议定义的。

    1. RFC822 文档中定义的文件格式包括两个部分:邮件头和邮件体。
    2. MIME协议(Multipurpose Internet Mail Extensions )用于定义复杂邮件体的格式,它可以表达多段平行的文本内容和非文本的邮件内容,例如,在邮件体中内嵌的图像数据和邮件附件等。另外,MIME协议的数据格式也可以避免邮件内容在传输过程中发生信息丢失。MIME协议不是对RFC822邮件格式的升级和替代,而是基于RFC822邮件格式的扩展应用。一言以蔽之,RFC822定义了邮件内容的格式和邮件头字段的详细细节,MIME协议则是定义了如何在邮件体部分表达出的丰富多样的数据内容。

    电子邮件发送和接收流程

    电子邮件发送和接收流程

    图示的六个步骤分别进行如下的说明:

    ①用户A的电子邮箱为:xx@qq.com,通过邮件客户端软件写好一封邮件,交到QQ的邮件服务器,这一步使用的协议是SMTP,对应图示的①;

    ②QQ邮箱会根据用户A发送的邮件进行解析,也就是根据收件地址判断是否是自己管辖的账户,如果收件地址也是QQ邮箱,那么会直接存放到自己的存储空间。这里我们假设收件地址不是QQ邮箱,而是163邮箱,那么QQ邮箱就会将邮件转发到163邮箱服务器,转发使用的协议也是SMTP,对应图示的②;

    ③163邮箱服务器接收到QQ邮箱转发过来的邮件,也会判断收件地址是否是自己,发现是自己的账户,那么就会将QQ邮箱转发过来的邮件存放到自己的内部存储空间,对应图示的③;

    ④用户A将邮件发送了之后,就会通知用户B去指定的邮箱收取邮件。用户B会通过邮件客户端软件先向163邮箱服务器请求,要求收取自己的邮件,对应图示的④;

    ⑤163邮箱服务器收到用户B的请求后,会从自己的存储空间中取出B未收取的邮件,对应图示⑤;

    ⑥163邮箱服务器取出用户B未收取的邮件后,将邮件发给用户B,对应图示的⑥;最后三步用户B收取邮件的过程,使用的协议是POP3;

    电子邮件的使用场景

    在系统中电子邮件的使用场景:

    1. 注册验证

    2. 营销推送

    3. 触发机制

    4. 监控报警

    电子邮件是业务和安全的最后一道防线 —— 当系统无法自动处理的时候,通过邮件提醒相关支持人员。

    SpringBoot实现发送电子邮件

    准备账号

    注册发件邮箱并设置客户端授权码,这里以163免费邮箱为例:

    163邮箱协议设置-1

    163邮箱协议设置-2

    构建项目并配置

    搭建完项目以后,进行下面的两步配置。

    application.properties配置参数:

    # 邮箱配置
    spring.mail.host=smtp.163.com
    # 你的163邮箱
    spring.mail.username=ispringboot@163.com
    # 注意这里不是邮箱密码,而是SMTP授权密码
    spring.mail.password=isb001
    spring.mail.port=25
    spring.mail.protocol=smtp
    spring.mail.default-encoding=UTF-8
    

    pom.xml依赖spring-boot-starter-mail模块:

    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
    </dependency>
    

    实现服务端代码

    MailService.java:

    package org.ijiangtao.tech.spring.boot.mail.imail.service;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.core.io.FileSystemResource;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    import org.springframework.stereotype.Service;
    
    import javax.mail.MessagingException;
    import javax.mail.internet.MimeMessage;
    import java.io.File;
    
    @Service
    public class MailService {
    
        private final Logger logger = LoggerFactory.getLogger(this.getClass());
    
        @Value("${spring.mail.username}")
        private String from;
    
        @Autowired
        private JavaMailSender mailSender;
    
        /**
         * 简单文本邮件
         * @param to 接收者邮件
         * @param subject 邮件主题
         * @param contnet 邮件内容
         */
        public void sendSimpleMail(String to, String subject, String contnet){
    
            SimpleMailMessage message = new SimpleMailMessage();
            message.setTo(to);
            message.setSubject(subject);
            message.setText(contnet);
            message.setFrom(from);
    
            mailSender.send(message);
        }
    
        /**
         * HTML 文本邮件
         * @param to 接收者邮件
         * @param subject 邮件主题
         * @param contnet HTML内容
         * @throws MessagingException
         */
        public void sendHtmlMail(String to, String subject, String contnet) throws MessagingException {
            MimeMessage message = mailSender.createMimeMessage();
    
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(contnet, true);
            helper.setFrom(from);
    
            mailSender.send(message);
        }
    
        /**
         * 附件邮件
         * @param to 接收者邮件
         * @param subject 邮件主题
         * @param contnet HTML内容
         * @param filePath 附件路径
         * @throws MessagingException
         */
        public void sendAttachmentsMail(String to, String subject, String contnet,
                                        String filePath) throws MessagingException {
            MimeMessage message = mailSender.createMimeMessage();
    
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(contnet, true);
            helper.setFrom(from);
    
            FileSystemResource file = new FileSystemResource(new File(filePath));
            String fileName = file.getFilename();
            helper.addAttachment(fileName, file);
    
            mailSender.send(message);
        }
    
        /**
         * 图片邮件
         * @param to 接收者邮件
         * @param subject 邮件主题
         * @param contnet HTML内容
         * @param rscPath 图片路径
         * @param rscId 图片ID
         * @throws MessagingException
         */
        public void sendInlinkResourceMail(String to, String subject, String contnet,
                                           String rscPath, String rscId) {
            logger.info("发送静态邮件开始: {},{},{},{},{}", to, subject, contnet, rscPath, rscId);
    
            MimeMessage message = mailSender.createMimeMessage();
            MimeMessageHelper helper = null;
    
            try {
    
                helper = new MimeMessageHelper(message, true);
                helper.setTo(to);
                helper.setSubject(subject);
                helper.setText(contnet, true);
                helper.setFrom(from);
    
                FileSystemResource res = new FileSystemResource(new File(rscPath));
                helper.addInline(rscId, res);
                mailSender.send(message);
                logger.info("发送静态邮件成功!");
    
            } catch (MessagingException e) {
                logger.info("发送静态邮件失败: ", e);
            }
    
        }
    
    }
    

    新建邮件模板

    我们使用thymeleaf作为模板引擎。

    emailTeplate.html:

    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8"/>
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
        <meta http-equiv="X-UA-Compatible" content="ie=edge"/>
        <title>注册-测试邮件模板</title>
    </head>
    <body>
        你好,感谢你的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持。
        <a href="#" th:href="@{https://github.com/{id}(id=${id})}">激活账户</a>
    </body>
    </html>
    

    测试发送邮件

    测试发送邮件,使用单元测试MailServiceTest.java:

    package org.ijiangtao.tech.spring.boot.mail.imail.service;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    import org.thymeleaf.TemplateEngine;
    import org.thymeleaf.context.Context;
    
    import javax.annotation.Resource;
    import javax.mail.MessagingException;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class MailServiceTest {
    
        @Autowired
        private MailService mailService;
    
        @Resource
        private TemplateEngine templateEngine;
    
        @Test
        public void sendSimpleMail() {
            mailService.sendSimpleMail("ispringboot@163.com","测试spring boot imail-主题","测试spring boot imail - 内容");
        }
    
        @Test
        public void sendHtmlMail() throws MessagingException {
    
            String content = "<html>\n" +
                    "<body>\n" +
                    "<h3>hello world</h3>\n" +
                    "<h1>html</h1>\n" +
                    "<body>\n" +
                    "</html>\n";
    
            mailService.sendHtmlMail("ispringboot@163.com","这是一封HTML邮件",content);
        }
    
        @Test
        public void sendAttachmentsMail() throws MessagingException {
            String filePath = "/ijiangtao/软件开发前景.docx";
            String content = "<html>\n" +
                    "<body>\n" +
                    "<h3>hello world</h3>\n" +
                    "<h1>html</h1>\n" +
                    "<h1>附件传输</h1>\n" +
                    "<body>\n" +
                    "</html>\n";
            mailService.sendAttachmentsMail("ispringboot@163.com","这是一封HTML邮件",content, filePath);
        }
    
        @Test
        public void sendInlinkResourceMail() throws MessagingException {
            //TODO 改为本地图片目录
            String imgPath = "/ijiangtao/img/blob/dd9899b4cf95cbf074ddc4607007046c022564cb/blog/animal/dog/dog-at-work-with-computer-2.jpg?raw=true";
            String rscId = "admxj001";
            String content = "<html>" +
                    "<body>" +
                    "<h3>hello world</h3>" +
                    "<h1>html</h1>" +
                    "<h1>图片邮件</h1>" +
                    "<img src='cid:"+rscId+"'></img>" +
                    "<body>" +
                    "</html>";
    
            mailService.sendInlinkResourceMail("ispringboot@163.com","这是一封图片邮件",content, imgPath, rscId);
        }
    
        @Test
        public void testTemplateMailTest() throws MessagingException {
            Context context = new Context();
            context.setVariable("id","ispringboot");
    
            String emailContent = templateEngine.process("emailTeplate", context);
            mailService.sendHtmlMail("ispringboot@163.com","这是一封HTML模板邮件",emailContent);
    
        }
    }
    
    

    测试结果,收到了电子邮件:

    总结

    SpringBoot-Email

    在生产环境,一般邮件服务会单独部署,并通过HTTP或MQ等方式暴露出来。

    邮件部署架构

    相关链接

    展开全文
  • 在互联网时代,与客户沟通已经不再局限于电话了,发电子邮件也成为种新的潮流。那如何注册电子邮件呢?如何创建email邮箱账号呢?下面我们来看看创建邮箱账号的方法以及发送邮件的使用技巧吧! 、注册电子邮箱...
  • 有一些刚用电脑的朋友可能一下不知道电子邮件地址怎么写,下面举几例子。电子邮件地址怎么写 电子邮件地址怎么写问题,电子邮箱格式通常以类似guangjia@mail.com出现,前面的guangjia为您注册时的用户名,...
  • Internet Mail是一个电子邮件客户端软件,由Rimarts开发。 主要的优点有:体积小、占用资源少、速度快、功能强大。 像Mozilla Thunderbird一样,Becky!提供插件支持,用户可以通过安装插件来扩展程序的功能。...
  • 电子政务-使用电子邮件地址注册即时通信用户账号的方法.zip
  • 实验一电子邮件使用模拟实验 三实验思考 *1电子邮箱的设置有哪些 答步骤进入网络营销点击电子邮件界面点击设置E-mail账户...步骤三设置Internet电子邮件地址用户的Internet电子邮件地址是别人用来给你发送电子邮件
  • 我经常听到这样一个问题"我有一个从网站发来的合同我如何给通过表单发送的电子邮件增加一个附件呢"首先我要说的是要做到这个没有什么简单的办法你要很好的理解PHP或其它的服务器端的脚本语言当然你还要一个真正支持...
  • Internet Mail是一个电子邮件客户端软件,由Rimarts开发。 主要的优点有:体积小、占用资源少、速度快、功能强大。 像Mozilla Thunderbird一样,Becky!提供插件支持,用户可以通过安装插件来扩展程序的功能。...
  • 电子邮件登陆器 v1.10

    2019-11-06 07:47:12
    你不用担心你有多少个电子邮件帐号只要轻轻按登陆,163 126 188 sohu, yahoo,tom,21cn,sina gmail,qq,hotmail,tianya,baidu 的电子邮件可同时登陆再多的电子邮件帐号也不怕电子邮件管理好方便
  • 通常验证电子邮件真实有效的办法是:当用户填写的注册资料经过网站初步格式验证之后,用户并不能利用此帐号登录,系统会向用户注册时填写的电子邮件地址发送一封电子邮件,邮件中给出一个链接,只有当用户点击了这个...
  • 这是一个电子邮件检查程序,输入pop3的服务器地址,用户名及口令即可检查是否有新邮件(27kb)
  • 发送电子邮件

    万次阅读 2012-03-22 14:51:26
    发送电子邮件,在你的站点上添加一个用户,改用的电子邮件地址为:g089h515r806@gmail.com.在添加改用的时候,向这个用户的电子邮件地址发送一封邮件,表示为它创建一个账户。 warning: mail() [function.mail]: ...
  • 谷歌账号电子邮件怎么改You probablyuse Google search to find out everything from movie showtimes to how tall Jeff Goldblum is. However, you can alsouse the regular Google search page to find your ...
  • 1)注册了Apple ID账号显示电子邮件已用于Apple ID,就是表示注册的电子邮件已经创建过Apple ID账号了,不需要重新再注册。 2)这种情况说明此邮箱已经被用于注册过Apple ID,所以无法重新用于注册Apple ID。 转载...
  • 电子邮件的工作原理

    2016-03-07 11:21:03
    电子邮件设计实现以及电子邮件的工作原理
  • 电子邮件怎么注册

    万次阅读 2018-07-14 22:58:06
    如今电子邮箱几乎人手一个甚至多个,使用场合也越来越多,注册其他账号都有可能用到邮箱,在求职和工作中邮箱更是扮演了重要的角色。首先,我们需要选择一个电子邮箱的品牌。常见的免费邮箱有网易、腾讯、新浪、搜狐...
  • 电子邮件客户端软件 目录 第1章 引 言 1 1.1 电子邮件介绍 1 1.2 开发背景 2 1.3 开发环境及运行环境 3 1.3.1 开发环境 3 1.3.2 运行环境 3 第2章 软件架构及系统用例图 4 2.1 系统架构: 4 2.2 系统总体用例: 4 ...
  • php发送电子邮件类.zip

    2019-07-11 09:51:30
    分享一个php发送电子邮件类 使用说明:    $m= new SendM('smtp服务器地址','账号','密码',端口(int),超时重试时间(int));    $m->Send('收件人邮箱 ','主题','邮件正文...
  • 什么是电子邮件地址?

    千次阅读 2020-01-17 12:19:03
    电子邮件地址如真实生活中人们常用的信件一样,有收信人姓名,收...如postmaster@hichina.net即为一个邮件地址。 电子邮件地址是雷·汤姆林森主创Internet 中每个用户的电子邮箱地址都具有惟一性,这样可使邮件的...
  • 有效电子邮件地址大全Email has become a standard method of communication and we all use it often. We’ve gathered some tips and tricks for using email programs and tools and for learning more about ...
  • 电子邮件营销的特点

    千次阅读 2019-03-12 10:42:19
    邮件营销很多时候没能发挥出它的价值,通常都是因为我们操作的方法不正常,忽略了电子邮件营销的特点,今天米软件就来给大家说说。 1,更换频率低 对现代人来说用微信或者QQ的时候,常常会因为某些原因...
  • 电子邮件开题报告

    2012-11-04 14:50:33
    而据CNNIC(中国互联网络信息中心)的最新调查,中国网络用户拥有E-mail帐号的平均值为2.6,用户平均每周收到电子邮件数为12.9封,发出电子邮件数为8.2封。这说明电子邮件已不只是电话的替代品,它可以而且已经在...
  • //当一个用户进行注册的时候同时发送一个邮件到注册人的邮箱,通过发送的邮箱链接来激活该帐号,具体用asp.net方法的实现代码,贴在这了,有需要的可以参考! public void SendSMTPEMail(string strSmtpServer, ...
  • 在值得纪念的30周年之际,你是否想收到30年前从中国发出的第电子邮件的原文?和我们谈一场关于情怀的恋爱? 如果你愿意,点击http://t.cn/Rp0pMYS 收取来自1987年的邮件!赶快参与,时不待人!
  • 1.1 电子邮件介绍 1 1.2 开发背景 2 1.3 开发环境及运行环境 2 2 软件架构及系统用例图 3 2.1 系统架构 3 2.2 系统总体用例 3 2.4 发送邮件类 4 2.5 附加小功能类 4 3 SMTP协议的研究 4 3.1 SMTP协议简介及...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,181
精华内容 17,672
关键字:

如何创建一个电子邮件账号