<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>基于 on 庞玉栋个人博客</title><link>https://pangyd.com/tags/%E5%9F%BA%E4%BA%8E/</link><description>Recent content in 基于 on 庞玉栋个人博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 26 Nov 2017 18:37:37 +0800</lastBuildDate><atom:link href="https://pangyd.com/tags/%E5%9F%BA%E4%BA%8E/index.xml" rel="self" type="application/rss+xml"/><item><title>java mail实现Email的发送,完整代码</title><link>https://pangyd.com/post/182-java-mailemail/</link><pubDate>Sun, 26 Nov 2017 18:34:36 +0800</pubDate><guid>https://pangyd.com/post/182-java-mailemail/</guid><description>&lt;p>1、对应用程序配置邮件会话&lt;/p>&lt;p>javax.mail.Session保存邮件系统的配置属性和提供用户验证的信息，发送email首先要获取session对象。&lt;/p>&lt;p>(1)Session.getInstance(java.util.Properties)获取非共享的session对象&lt;/p>&lt;p>(2)Session.getDefaultInstance(java.utilProperties)获取共享的session对象&lt;/p>&lt;p>&amp;nbsp;&amp;nbsp;&amp;nbsp; 两者都必须建立Properties prop=new Properties()对象;&lt;/p>&lt;p>&lt;span>注意：&lt;/span>一般对单用户桌面应用程序使用共享Session对象。&lt;/p>&lt;p>用SMTP协议发送Email时通常要设置mail.smtp.host(mail.protocol.host协议特定邮件服务器名)属性。&lt;/p>&lt;p>prop.put("mail.smtp.host","smtp.mailServer.com");&lt;/p>&lt;p>Session mailSession=Session.getInstance(prop);&lt;/p>&lt;p>&lt;span>注意：&lt;/span>在真正使用创建的过程中，往往会让我们验证密码，这是我们要写一个密码验证类。javax.mail.Authenticator是一个抽象类，我们要写MyAuthenticator的密码验证类，该类继承Authenticator实现：&lt;/p>&lt;p>&amp;nbsp;protected PasswordAuthentication getPasswordAuthentication(){&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new PasswordAuthentication(String userName, String password);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br>&amp;nbsp; }&lt;/p>&lt;p>这时我们创建Session对象：&lt;/p>&lt;p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Session mailSession=Session.getInstance(prop,new MyAuthenticator(userName,Password));&lt;/p>&lt;p>&lt;span>并且要设置使用验证&lt;/span>：prop.put("mail.smtp.auth","true");&lt;/p>&lt;p>&lt;span>使用 STARTTLS安全连接&lt;/span>:prop.put("mail.smtp.starttls.enable","true");&lt;/p>&lt;p>2、配置邮件会话之后，要编写消息&lt;/p>&lt;p>要编写消息就要生成javax.mail.Message子类的实例或对Internet邮件使用javax.mail.interet.MimeMessage类。&lt;/p>&lt;p>(1)建立MimeMessage对象&lt;/p>&lt;p>MimeMessage扩展抽象的Message类，构造MimeMessage对象：&lt;/p>&lt;p>MimeMessage message=new MimeMessage(mailSession);&lt;/p>&lt;p>(2)消息发送者、日期、主题&amp;nbsp;&lt;/p>&lt;p>message.setFrom(Address theSender);&lt;/p>&lt;p>message.setSentDate(java.util.Date theDate);&lt;/p>&lt;p>message.setSubject(String theSubject);&lt;/p>&lt;p>(3)设置消息的接受者与发送者（寻址接收）&lt;/p>&lt;p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setRecipient(Message.RecipientType type , Address theAddress)、setRecipients(Message.RecipientType type , Address[] theAddress)、addRecipient(Message.RecipientType type , Address theAddress)、addRecipients(Message.RecipientType type,Address[] theAddress)方法都可以指定接受者类型，但是一般用后两个，这样可以避免意外的替换或者覆盖接受者名单。定义接受者类型：&lt;/p>&lt;p>Message.RecipientType.TO：消息接受者&lt;/p>&lt;p>Message.RecipientType.CC：消息抄送者&lt;/p>&lt;p>Message.RecipientType.BCC：匿名抄送接收者(其他接受者看不到这个接受者的姓名和地址)&lt;/p>&lt;p>(4)设置消息内容&lt;/p>&lt;p>JavaMail基于JavaBean Activation FrameWork(JAF)，JAF可以构造文本消息也可以支持附件。&lt;/p>&lt;p>设置消息内容时，要提供消息的内容类型-----即方法签名:&lt;/p></description></item></channel></rss>