经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
基于JavaMail的Java邮件发送:简单邮件发送
来源:cnblogs  作者:黄浩#  时间:2018/11/9 11:24:12  对本文有异议

使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 JavaMail API 和Java Activation Framework (JAF) 。

您可以从 Java 网站下载最新版本的 JavaMail,打开网页右侧有个 Downloads 链接,点击它下载。

下载并解压缩这些文件,在新创建的顶层目录中,您会发现这两个应用程序的一些 jar 文件。您需要把 mail.jar 和 activation.jar 文件添加到您的 CLASSPATH 中。

如果是maven项目,只需依赖mail这个jar,它会传递依赖activation

  1. <dependency>
  2.     <groupId>javax.mail</groupId>
  3.     <artifactId>mail</artifactId>
  4.     <version>1.4.5</version>
  5. </dependency>
  6.  
  7. 本实例以 QQ 邮件服务器为例,你需要在登录QQ邮箱后台在"设置"=》账号中开启POP3/SMTP服务()

  1. 项目结构:

 

配置文件 mail.properties(也是可以不用配置文件,直接传入参数)

 

发送邮件的帮助类(EmailHelper):

  1. import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.io.UnsupportedEncodingException;import java.util.Properties;import java.util.ResourceBundle;/**
  2.  * @author hh
  3.  * @Date 2018/11/7 */public class EmailHelper {/** * 获取配置文件     */private static final ResourceBundle bundle = ResourceBundle.getBundle("mail");/** * 发件人邮件用户名(发件人)     */private static final String sendFrom = bundle.getString("email.from");/** * 发件人邮件授权码     */private static final String password = bundle.getString("password");/** * 指定发送邮件的主机为 smtp.qq.com (QQ 邮件服务器)     */private static final String host = bundle.getString("email.host");/** * 发件人昵称     */private static final String nickName = bundle.getString("email.nickName");/** *
  4.      * @param addressList 邮箱地址(多个以逗号隔开)
  5.      * @param emailTitle 邮件标题
  6.      * @param content 邮件内容     */public static void sendEmail(String addressList, String emailTitle, String content)throws  MessagingException,UnsupportedEncodingException {// 步骤一 创建与邮件服务器连接会话// 配置与服务器连接参数Properties props = new Properties();// 设置properties 属性//服务器的本地主机(我用的是qq邮箱)smtp.qq.comprops.setProperty("mail.host", host);// 连接认证props.setProperty("mail.smtp.auth", "true");//发邮件前进行身份校验Authenticator authenticator = new Authenticator(){
  7.             @Overridepublic PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(sendFrom,password);
  8.             }
  9.         };// 与邮件服务器连接会话Session session = Session.getDefaultInstance(props,authenticator);
  10.  
  11.         session.setDebug(true);// 步骤二 编写Message(邮件)Message message = new MimeMessage(session);//发送人昵称String personal = new String(nickName.getBytes("ISO-8859-1"),"utf-8");// from字段(发送人邮箱地址)message.setFrom(new InternetAddress(sendFrom,personal,"utf-8"));// to 字段(收件人邮箱地址)InternetAddress.parse():解析字符串成InternetAddress addressList:可以逗号隔开,同时给多个人发送        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(addressList));// subject字段(邮件标题)        message.setSubject(emailTitle);// 邮件正文内容 (可以发送HTML 内容)message.setContent(content,"text/html;charset=UTF-8");//步骤三 使用Transport发送邮件        Transport.send(message);
  12.     }
  13. }

程序入口(AppMain):

  1. import javax.mail.MessagingException;import java.io.UnsupportedEncodingException;/**
  2.  * @author hh
  3.  * @Date 2018/11/7 */public class AppMain {public static void main(String[] args) {
  4.         String content = "<h1>This is actual message</h1>";try {
  5.             EmailHelper.sendEmail("692262908@qq.com", "title", content);
  6.         } catch (MessagingException e) {
  7.             e.printStackTrace();
  8.         } catch (UnsupportedEncodingException e) {
  9.             e.printStackTrace();
  10.         }
  11.  
  12.     }
  13. }

运行结果(收件人邮箱):

  1. 一篇讲JavaMail的博客,讲的挺不错的:Link
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号