亚美体育在线官方入口 韦博体育彩票-亚美体育
韦博体育彩票
来源:网络
2024-03-21 19:54:19
亚美体育注册网站
-
- 背景
-
- 什么是JavaMail
- 前置条件
- Java工程
- 下载依赖组件
- 核心代码
- 发送结果
- 总结 背景
在我们做业务系统开发时时,经常会用到 邮件发送的场景,如 通过邮件通知给注册用户有关注册码的内容,或者 管理的某些设备有告警了,需要邮件通知相关维护人员及时处理相关设备,还有 使用的会员服务已经到期了,用邮件通知给用户等等。 在java 世界里如何发邮件,有很多种方法,下面将围绕 java mail 来做功能的实现。
什么是JavaMailJavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是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 ( "" + "
温馨提示:" + "" ) ; 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 ( ) ; } }欢迎xx系统,您的注册码为:" + "" + yzm + "
本邮件由系统自动发出,请勿回复。
感谢您的使用。
xx网络科技公司登录收件人的邮箱,里可看到 测试代码发出的邮件收到了。
总结使用JavaMail可以很方便的在Java客户端实现 发邮件的功能,另外很好的实现了JavaMail API的框架还有James、Spring Mail。
需要完整演示代码的可点击下方。
完整程序代码下载
注意:程序代码需要代入你的邮箱信息才能正确工作。