首页 >邮件操作 > 内容

邮件发送实现原理

2022年12月31日 00:18

邮件发送实现原理:

邮件服务器和电子邮箱:

邮件服务器:
要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器。例如现在Internet很多提供邮件服务的厂商:sina、sohu、163等等他们都有自己的邮件服务器。
这些服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。
电子邮箱:
电子邮箱(E-mail地址)的获得需要在邮件服务器上进行申请 ,确切地说,电子邮箱其实就是用户在邮件服务器上申请的一个帐户。用户在邮件服务器上申请了一个帐号后,邮件服务器就会为这个帐号分配一定的空间,用户从而可以使用这个帐号以及空间,发送电子邮件和保存别人发送过来的电子邮件。

邮件传输协议和邮件服务器类型:

SMTP协议(发送邮件)
用户连上邮件服务器后,要想给它发送一封电子邮件,需要遵循一定的通迅规则,SMTP协议就是用于定义这种通讯规则的。
因而,通常我们也把处理用户smtp请求(邮件发送请求)的邮件服务器称之为SMTP服务器。(25)
POP3协议(接收)
同样,用户若想从邮件服务器管理的电子邮箱中接收一封电子邮件的话,他连上邮件服务器后,也需要遵循一定的通迅格式,POP3协议用于定义这种通讯格式。
因而,通常我们也把处理用户pop3请求(邮件接收请求)的邮件服务器称之为POP3服务器。(110)

手工演示电子邮件的发送:

  • 准备实验环境
  • 提前在sohu 和sina上注册一个免费帐号
  • 获取smtp和pop3服务器的名称
  • sina或 sohu会在其帮助中心里提示管理当前注册帐号的邮件服务器的主机名。
  • 编写base64编码程序对用户名和密码进行编码。
  • 手工使用SMTP协议发送电子邮件
  • 手工使用POP3协议接收电子邮件

还参考了一篇文章:https://www.jianshu.com/p/0ff2b9237315

win10启用telnet:

https://jingyan.baidu.com/article/3ea51489ba79e252e61bba97.html

telnet smtp.sina.cn 25

220 smtp-5-122.smtpsmail.fmail.xd.sinanode.com ESMTP
ehlo
250 smtp-5-122.smtpsmail.fmail.xd.sinanode.com
auth login
334 VXNlcm5hbWU6
emhlbmdqaWFuaV8xOTk1QHNpbmEuY29t
334 UGFzc3dvcmQ6
邮箱密码的64位编码
235 OK Authenticated
mail from:zhengjiani_1995@sina.com
250 ok
rcpt to:nicezheng@foxmail.com
250 ok
data
354 End data with .
**from:**zhengjiani_1995@sina.com
**to:**nicezheng@foxmail.com
subject:hello

Hello, xsm-ue!

.

250 ok queue id 7343365767177
quit
221 smtp-5-122.smtpsmail.fmail.xd.sinanode.com

其中所遇到的错误:

451 Service temporarily unavailable.

发信账号频率超限

参考:https://help.aliyun.com/knowledge_detail/44499.html

553 Envolope sender mismatch with login user..

不匹配

参考:http://www.magicwinmail.com/faq_setup.php

502 unimplemented (#5.5.1)

java发送邮件:

public class MailDemo1 {    public static void main(String[] args) throws Exception{       Properties prop=new Properties();       prop.setProperty("mail.transport.protocol","smtp");//协议        prop.setProperty("mail.smtp.host","localhost");//主机名        prop.setProperty("mail.smtp.auth","true");//是否开启权限控制        prop.setProperty("mail.debug","true");//如果设置为true则在发送邮件时会打印发送时信息        //创建程序到邮件服务器之间的一次会话        Session session=Session.getInstance(prop);        //获取邮件对象        Message msg=new MimeMessage(session);        msg.setFrom(new InternetAddress("zhengjiani_1995@sina.com"));        msg.setSubject("这是来自java程序的一封邮件");        msg.setText("这是邮件的正文...内容...");        //找到邮递员        Transport trans=session.getTransport();        trans.connect("zhengjiani_1995","password");        trans.sendMessage(msg,msg.getAllRecipients());    }}


参考文章:https://blog.csdn.net/nicezheng_1995/article/details/81539073

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,在此表示感谢。

特别提醒:

1、请用户自行保存原始数据,为确保安全网站使用完即被永久销毁,如何人将无法再次获取。

2、如果上次文件较大或者涉及到复杂运算的数据,可能需要一定的时间,请耐心等待一会。

3、请按照用户协议文明上网,如果发现用户存在恶意行为,包括但不限于发布不合适言论妄图

     获取用户隐私信息等行为,网站将根据掌握的情况对用户进行限制部分行为、永久封号等处罚。

4、如果文件下载失败可能是弹出窗口被浏览器拦截,点击允许弹出即可,一般在网址栏位置设置

5、欢迎将网站推荐给其他人,网站持续更新更多功能敬请期待,收藏网站高效办公不迷路。

      



登录后回复

共有0条评论