葡京网页登录 > IT系统 > RFC821-简单邮件传输协议(SMTP)中文版 - 0

RFC821-简单邮件传输协议(SMTP)中文版 - 0
2020-01-17 20:18

澳门葡京手机版,地点遭遇win10邮件接纳,发送邮件正平常衣服务器境况windowsserver二零零六上边安装了展开了SMTP发送邮件服务,邮件如故只好收取邮件,无法发送邮件。试过虚构域名,等,难点依然现身。用支付情况vs2011语言C#写的小程序。

  1. 介绍
      轻松邮件传输左券(SMTP)的靶子是万不一失高效地传递邮件,它独立于传
    送子系统还要仅供给一条可以确定保障传送数据单元顺序的通道。附录A,B,C
    和D描述了不一致传送服务下SMTP的施用。在名词表中还定义了本文书档案中使用
    的术语。
      SMTP的三个关键特点是它亦可在传递中穿插传送邮件,传送服务提供了
    经过间通讯情况(IPCE),此条件能够回顾三个网络,多少个互连网或二个互连网
    的子网。通晓到传送系统(或IPCE)不是风流浪漫对意气风发的是很首要的。进程也许直
    接和任何进度经过已知的IPCE通讯。邮件是壹个应用程序或进度间通信。邮
    件能够透过连续几日在区别IPCE上的长河跨网络实行邮件传送。更特意的是,邮
    RFC821-简单邮件传输协议(SMTP)中文版 - 0。件能够因此分裂网络上的主机接力式传送。
  2. SMTP模型    
      SMTP设计基于以下通讯模型:针对客商的邮件央浼,发送SMTP建构与接
    收SMTP之间确立三个双向传送通道。选取SMTP能够是最终接受者也能够是中
    间传送者。SMTP命令由发送SMTP发出,由选拔SMTP采用,而回复则反方面传
    送。
      黄金时代旦传送通道创建,SMTP发送者发送MAIL命令指明邮件发送者。如若
    SMTP选择者能够收起邮件则赶回OK应答。SMTP发送者再发生RCPT命令确认邮件
    是或不是收到到。假诺SMTP接受者选拔,则赶回OK应答;如若不能够采取到,则发出
    否决选用应答(但不行车制动器踏板整个邮件操作),双方将这么重复多次。当选取者收
    到全部邮件后会选用到非常的连串,假诺接纳者成功拍卖了邮件,则赶回OK应
    答。
      SMTP提供传送邮件的编写制定,借使选取方与发送方连接在同二个传递服务下
    时,邮件能够直接由发送方主机传送到选用方主机;或然,当二者不在同叁个
    传递服务下时,通过中继SMTP服务器传送。为了能够对SMTP服务器提供中继能
    力,它必需具备最终目标主机地址和邮箱名称。
      MAIL命令参数是回复路线,它钦点邮件从何方来;而RCPT命令的参数是转
    发路线的,它钦命邮件向哪儿去。向前路线是源路线,而复苏路线是再次来到路线
    (它用来发生错误时回来邮件)。
      当同三个信息要发往区别的选择者时,SMTP遇到了向不一致采取者发送同风华正茂
    份数据的复制品的主题材料,邮件命令和回答有叁个相比较奇异的语法,应答也是有生龙活虎
    个数字代码。在下边,例子中能够看来什么使用实际的授命和回复。完整的命

  试行完上述代码,然后大家查阅收件箱:

澳门葡京手机版 1

正文来源: 小编: (二〇〇二-11-23 07:08:00卡塔尔国

package com.ys.mail;

import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

public class SendMailText_Picture_Enclosure {
 //发件人地址
 public static String senderAddress = "xxx@163.com";
 //收件人地址
 public static String recipientAddress = "xxx@qq.com";
 //发件人账户名
 public static String senderAccount = "xxx";
 //发件人账户密码
 public static String senderPassword = "xxx";

 public static void main(String[] args) throws Exception {
 //1、连接邮件服务器的参数配置
 Properties props = new Properties();
 //设置用户的认证方式
 props.setProperty("mail.smtp.auth", "true");
 //设置传输协议
 props.setProperty("mail.transport.protocol", "smtp");
 //设置发件人的SMTP服务器地址
 props.setProperty("mail.smtp.host", "smtp.163.com");
 //2、创建定义整个应用程序所需的环境信息的 Session 对象
 Session session = Session.getInstance(props);
 //设置调试信息在控制台打印出来
 session.setDebug(true);
 //3、创建邮件的实例对象
 Message msg = getMimeMessage(session);
 //4、根据session对象获取邮件传输对象Transport
 Transport transport = session.getTransport();
 //设置发件人的账户名和密码
 transport.connect(senderAccount, senderPassword);
 //发送邮件,并发送到所有收件人地址,message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
 transport.sendMessage(msg,msg.getAllRecipients());

 //5、关闭邮件连接
 transport.close();
 }

 /**
 * 获得创建一封邮件的实例对象
 * @param session
 * @return
 * @throws MessagingException
 * @throws AddressException
 */
 public static MimeMessage getMimeMessage(Session session) throws Exception{
 //1.创建一封邮件的实例对象
 MimeMessage msg = new MimeMessage(session);
 //2.设置发件人地址
 msg.setFrom(new InternetAddress(senderAddress));
 /**
  * 3.设置收件人地址(可以增加多个收件人、抄送、密送),即下面这一行代码书写多行
  * MimeMessage.RecipientType.TO:发送
  * MimeMessage.RecipientType.CC:抄送
  * MimeMessage.RecipientType.BCC:密送
  */
 msg.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(recipientAddress));
 //4.设置邮件主题
 msg.setSubject("邮件主题(包含图片和附件)","UTF-8");

 //下面是设置邮件正文
 //msg.setContent("简单的纯文本邮件!", "text/html;charset=UTF-8");

 // 5. 创建图片"节点"
 MimeBodyPart image = new MimeBodyPart();
 // 读取本地文件
 DataHandler dh = new DataHandler(new FileDataSource("src\mailTestPic.png"));
 // 将图片数据添加到"节点"
 image.setDataHandler(dh);
 // 为"节点"设置一个唯一编号(在文本"节点"将引用该ID)
 image.setContentID("mailTestPic"); 

 // 6. 创建文本"节点"
 MimeBodyPart text = new MimeBodyPart();
 // 这里添加图片的方式是将整个图片包含到邮件内容中, 实际上也可以以 http 链接的形式添加网络图片
 text.setContent("这是一张图片<br/><a href='http://www.cnblogs.com/ysocean/p/7666061.html'><img src='cid:mailTestPic'/></a>", "text/html;charset=UTF-8");

 // 7. (文本+图片)设置 文本 和 图片"节点"的关系(将 文本 和 图片"节点"合成一个混合"节点")
 MimeMultipart mm_text_image = new MimeMultipart();
 mm_text_image.addBodyPart(text);
 mm_text_image.addBodyPart(image);
 mm_text_image.setSubType("related"); // 关联关系

 // 8. 将 文本+图片 的混合"节点"封装成一个普通"节点"
 // 最终添加到邮件的 Content 是由多个 BodyPart 组成的 Multipart, 所以我们需要的是 BodyPart,
 // 上面的 mailTestPic 并非 BodyPart, 所有要把 mm_text_image 封装成一个 BodyPart
 MimeBodyPart text_image = new MimeBodyPart();
 text_image.setContent(mm_text_image);

 // 9. 创建附件"节点"
 MimeBodyPart attachment = new MimeBodyPart();
 // 读取本地文件
 DataHandler dh2 = new DataHandler(new FileDataSource("src\mailTestDoc.docx"));
 // 将附件数据添加到"节点"
 attachment.setDataHandler(dh2);
 // 设置附件的文件名(需要编码)
 attachment.setFileName(MimeUtility.encodeText(dh2.getName())); 

 // 10. 设置(文本+图片)和 附件 的关系(合成一个大的混合"节点" / Multipart )
 MimeMultipart mm = new MimeMultipart();
 mm.addBodyPart(text_image);
 mm.addBodyPart(attachment); // 如果有多个附件,可以创建多个多次添加
 mm.setSubType("mixed");  // 混合关系

 // 11. 设置整个邮件的关系(将最终的混合"节点"作为邮件的内容添加到邮件对象)
 msg.setContent(mm);
 //设置邮件的发送时间,默认立即发送
 msg.setSentDate(new Date());

 return msg;
 }

}

  ④、Session 类:javax.mail.Session 类用于定义整个应用程序所需的境况音讯,以致访谈客商端与邮件服务器建设构造互联网连接的对话消息,举个例子邮件服务器的主机名、端口号、采纳的邮件发送和吸收接纳合同等。Session 对象依照这几个音讯创设用于邮件收发的 Transport 和 Store 对象,以致为顾客端创造 Message 对象时提供消息扶持。  

  ③、Store 类:javax.mail.Store 类是接纳邮件的为主 API 类,它的实例对象表示落实了有些邮件选取左券的邮件接纳目的,举例 POP3 左券,顾客端程序选择邮件时,只要求采用邮件接受 API 获得 Store 对象,然后调用 Store 对象的收纳方式,就能够从钦定的 POP3 服务器获得邮件数量,并把这么些邮件数量封装到表示邮件的 Message 对象中。

2、JavaMail API

如上就是本文的全体内容,希望对大家的求学抱有利于,也指望大家多都赐教脚本之家。  

好了,步向那几个连串教程最重大的手续了,后面邮件的理论知识大家都明白了,那么那篇博客大家将用代码完结邮件的出殡。那在骨子里项目中动用的极度广泛,举例注册必要发送邮件举办账号激活,再比如OA项目中使用邮件进行职责提醒等等。大家那边所讲的正是使用 JavaMail 完结邮件的出殡和埋葬和收受效果。

澳门葡京手机版 2

package com.ys.mail;

import java.io.ObjectInputStream.GetField;
import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.text.html.MinimalHTMLWriter;

public class SendMailText {
 //发件人地址
 public static String senderAddress = "xxx@163.com";
 //收件人地址
 public static String recipientAddress = "xxx@qq.com";
 //发件人账户名
 public static String senderAccount = "xxx";
 //发件人账户密码
 public static String senderPassword = "xxx";

 public static void main(String[] args) throws Exception {
 //1、连接邮件服务器的参数配置
 Properties props = new Properties();
 //设置用户的认证方式
 props.setProperty("mail.smtp.auth", "true");
 //设置传输协议
 props.setProperty("mail.transport.protocol", "smtp");
 //设置发件人的SMTP服务器地址
 props.setProperty("mail.smtp.host", "smtp.163.com");
 //2、创建定义整个应用程序所需的环境信息的 Session 对象
 Session session = Session.getInstance(props);
 //设置调试信息在控制台打印出来
 session.setDebug(true);
 //3、创建邮件的实例对象
 Message msg = getMimeMessage(session);
 //4、根据session对象获取邮件传输对象Transport
 Transport transport = session.getTransport();
 //设置发件人的账户名和密码
 transport.connect(senderAccount, senderPassword);
 //发送邮件,并发送到所有收件人地址,message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
 transport.sendMessage(msg,msg.getAllRecipients());

 //如果只想发送给指定的人,可以如下写法
 //transport.sendMessage(msg, new Address[]{new InternetAddress("xxx@qq.com")});

 //5、关闭邮件连接
 transport.close();
 }

 /**
 * 获得创建一封邮件的实例对象
 * @param session
 * @return
 * @throws MessagingException
 * @throws AddressException
 */
 public static MimeMessage getMimeMessage(Session session) throws Exception{
 //创建一封邮件的实例对象
 MimeMessage msg = new MimeMessage(session);
 //设置发件人地址
 msg.setFrom(new InternetAddress(senderAddress));
 /**
  * 设置收件人地址(可以增加多个收件人、抄送、密送),即下面这一行代码书写多行
  * MimeMessage.RecipientType.TO:发送
  * MimeMessage.RecipientType.CC:抄送
  * MimeMessage.RecipientType.BCC:密送
  */
 msg.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(recipientAddress));
 //设置邮件主题
 msg.setSubject("邮件主题","UTF-8");
 //设置邮件正文
 msg.setContent("简单的纯文本邮件!", "text/html;charset=UTF-8");
 //设置邮件的发送时间,默认立即发送
 msg.setSentDate(new Date());

 return msg;
 }

}

您或然感兴趣的小说:

  • 依照SSM框架+Javamail发送邮件的代码实例
  • 基于java使用JavaMail发送邮件
  • 行使JavaMail发送邮件保险成功的不二等秘书技
  • JavaMail入门教程之发送邮件(3)
  • JavaWeb中利用JavaMail实现出殡和安葬邮件功效实例详细解释
  • Java使用JavaMail发送邮件的章程
  • Java基于JavaMail贯彻向QQ邮箱发送邮件
  • 怎么着行使JavaMail发送邮件
  • JavaWeb中JavaMail创设邮件和出殡和安葬邮件
  • javamail 发送邮件的实例代码分享

  那么生龙活虎封简单的纯文本文件就发送完毕了。 

  上述的代码有详实的注明,咱们不清楚能够留言。注意:大家温馨在运维时请将收件人,发件人等信息退换成温馨的。

澳门葡京手机版 3

  ②、发送邮件的API

  ③、有极大可能率您收件人地址,发件人地址等音信都不容置疑了,调整台也打字与印刷了正确的消息,但是在收件箱正是收不到音信。那是因为或者收件箱服务器拒绝接纳了你发的邮件(比方以为你的邮件是广告),那个时候恐怕在废物箱里能找到,恐怕找不到。清除办法是重新的邮件内容而不是再三殡葬,大概改变收件箱试试。

上一篇:没有了 下一篇:没有了