亚美体育在线官方入口 韦博体育彩票-亚美体育

韦博体育彩票 来源:网络 2024-03-21 19:54:19

亚美体育注册网站

    • 背景
      • 什么是JavaMail
    • 前置条件
    • Java工程
    • 下载依赖组件
    • 核心代码
    • 发送结果
    • 总结
    • 背景

      在我们做业务系统开发时时,经常会用到 邮件发送的场景,如 通过邮件通知给注册用户有关注册码的内容,或者 管理的某些设备有告警了,需要邮件通知相关维护人员及时处理相关设备,还有 使用的会员服务已经到期了,用邮件通知给用户等等。 在java 世界里如何发邮件,有很多种方法,下面将围绕 java mail 来做功能的实现。

      什么是JavaMail

      JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

      前置条件

      要想通过 java 代码发送邮件,首先需要开通你邮箱的邮局服务,下面以QQ 邮箱为例,说一下开通步骤。

      使用手机,发送开通短信,开启服务

      开通成功,记下授权码 获得授权码,把它拷贝出来,后面的JAVA代码需要用到这个授权码。

      Java工程 下载依赖组件

      我们将使用 JavaMail 进行邮件方面的处理, Maven的依赖配置如下:

      											
      												
      													<dependency>
      												
      												
      													<groupId>
      												com.sun.mail<
      												/groupId>
      												
      													<artifactId>
      												javax.mail<
      												/artifactId>
      												
      													<version>
      												
      												1.6
      												.2
      												<
      												/version>
      												<
      												/dependency>
      											
      										
      核心代码
      											
      												public
      												class
      												MailUtil
      												{
      												private
      												static
      												final
      												Logger
      												LOG
      												=
      												LoggerFactory
      												.
      												getLogger
      												(
      												MailUtil
      												.
      												class
      												)
      												;
      												
      												public
      												CommonProcResult
      												sendMail
      												(
      												String
      												user,
      												String
      												password,
      												String
      												host,
      												String
      												from,
      												String
      												[
      												]
      												toArray,
      												String
      												subject,
      												String
      												content)
      												{
      												CommonProcResult
      												ret
      												=
      												CommonProcResultFactroy
      												.
      												makeResultForInnerError
      												(
      												"未实现."
      												)
      												;
      												try
      												{
      												if
      												(
      												null
      												!=
      												toArray
      												&&
      												toArray.length
      												>
      												0
      												)
      												{
      												Properties
      												props
      												=
      												System
      												.
      												getProperties
      												(
      												)
      												;
      												// 选择服务类型
      												props.
      												put
      												(
      												"mail.smtp.host"
      												,
      												host)
      												;
      												// 设置服务器验证
      												props.
      												put
      												(
      												"mail.smtp.auth"
      												,
      												"true"
      												)
      												;
      												// 设置传输协议
      												props.
      												put
      												(
      												"mail.transport.protocol"
      												,
      												"smtp"
      												)
      												;
      												MailAuthenticator
      												auth
      												=
      												new
      												MailAuthenticator
      												(user,
      												password)
      												;
      												Session
      												session
      												=
      												Session
      												.
      												getInstance
      												(props,
      												auth)
      												;
      												//session.setDebug(true);
      												session.
      												setDebug
      												(
      												false
      												)
      												;
      												MimeMessage
      												message
      												=
      												new
      												MimeMessage
      												(session)
      												;
      												message.
      												setFrom
      												(
      												new
      												InternetAddress
      												(from)
      												)
      												;
      												//邮件接收方
      												int
      												len=
      												toArray.length;
      												InternetAddress
      												address[
      												]
      												=
      												new
      												InternetAddress
      												[len]
      												;
      												for
      												(
      												int
      												i
      												=
      												0
      												;
      												i
      												<
      												toArray.length;
      												i++
      												)
      												{
      												address[i]
      												=
      												new
      												InternetAddress
      												(toArray[i]
      												)
      												;
      												}
      												message.
      												addRecipients
      												(
      												Message.RecipientType
      												.TO,
      												address)
      												;
      												// 主题
      												message.
      												setSubject
      												(subject)
      												;
      												// 正文
      												MimeBodyPart
      												mbp1
      												=
      												new
      												MimeBodyPart
      												(
      												)
      												;
      												mbp1.
      												setContent
      												(content,
      												"text/html;charset=utf-8"
      												)
      												;
      												// 整个邮件:正文+附件
      												Multipart
      												mp
      												=
      												new
      												MimeMultipart
      												(
      												)
      												;
      												mp.
      												addBodyPart
      												(mbp1)
      												;
      												message.
      												setContent
      												(mp)
      												;
      												message.
      												setSentDate
      												(
      												new
      												Date
      												(
      												)
      												)
      												;
      												message.
      												saveChanges
      												(
      												)
      												;
      												// Transport trans = session.getTransport("smtp");
      												Transport
      												.
      												send
      												(message)
      												;
      												//System.out.println("send mail ok:"  + message.toString());
      												ret
      												=
      												CommonProcResultFactroy
      												.
      												makeResultForOk
      												(
      												""
      												)
      												;
      												}
      												else
      												{
      												ret
      												=
      												CommonProcResultFactroy
      												.
      												makeResultForInvalidParamValue
      												(
      												" toArray"
      												)
      												;
      												}
      												}
      												catch
      												(
      												Exception
      												e)
      												{
      												LOG.
      												error
      												(
      												"An exception has been occured when send email. Exception="
      												+
      												e.
      												getMessage
      												(
      												)
      												)
      												;
      												ret
      												=
      												CommonProcResultFactroy
      												.
      												makeResultForInnerException
      												(e.
      												getMessage
      												(
      												)
      												)
      												;
      												e.
      												printStackTrace
      												(
      												)
      												;
      												}
      												return
      												ret;
      												}
      												//测试代码
      												public
      												static
      												void
      												main
      												(
      												String
      												[
      												]
      												args)
      												{
      												MailUtil
      												operation
      												=
      												new
      												MailUtil
      												(
      												)
      												;
      												String
      												password
      												=
      												"邮箱的授权密码"
      												;
      												String
      												to
      												=
      												"收件人的邮箱"
      												;
      												//支持群发,可以写多个收件邮箱,如  [email protected];[email protected]
      												String
      												subject
      												=
      												"java 发送邮件测试"
      												;
      												//邮箱内容
      												StringBuffer
      												sb
      												=
      												new
      												StringBuffer
      												(
      												)
      												;
      												String
      												yzm
      												=
      												Long
      												.
      												toString
      												(
      												System
      												.
      												currentTimeMillis
      												(
      												)
      												)
      												;
      												sb.
      												append
      												(
      												""
      												+
      												"
      温馨提示:" + "
      欢迎xx系统,您的注册码为:

      " + yzm + "


      本邮件由系统自动发出,请勿回复。
      感谢您的使用。
      xx网络科技公司
      "
      + "
      "
      ) ; try { String [ ] toArray = to . split ( ";" ) ; CommonProcResult ret = operation. sendMail (user, password, host, from, toArray, subject, sb. toString ( ) ) ; System .out. println ( "ret code=" + ret. getCode ( ) + ", ret desc=" + ret. getDesc ( ) ) ; } catch ( Exception e) { e. printStackTrace ( ) ; } }
      发送结果

      登录收件人的邮箱,里可看到 测试代码发出的邮件收到了。

      总结

      使用JavaMail可以很方便的在Java客户端实现 发邮件的功能,另外很好的实现了JavaMail API的框架还有James、Spring Mail。

      需要完整演示代码的可点击下方。
      完整程序代码下载
      注意:程序代码需要代入你的邮箱信息才能正确工作。