使用javamail发邮件。
javamail是java发邮件的常用工具。方便实用。
1、首先使用maven工程,需要引入对javamail的依赖,取个最新稳定版本:
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.5</version> </dependency> |
2、构造一个Session。所谓Session,可以理解为对SMTP服务器的配置。如果发邮件的全部都是一个配置,这个是可以单例的。
Properties props = new Properties(); props.put("mail.smtp.host", "smtp.163.com");//smtp服务器 props.put("mail.smtp.auth", "true");//是否需要用户名密码鉴权 props.put("mail.transport.protocol", "smtp");//协议名称 props.put("mail.smtp.socketFactory.port", 25); //服务器端口 props.put("mail.smtp.starttls.enable", "true"); //如果是ssl端口,需要加这个属性。 //创建Session。这个取一次就好了, Session session = Session.getInstance(props, new Authenticator() //如果你只有一个发送邮箱,在这里指定就好了,如果你有多个用户名密码,也可以在正式发邮件的时候指定。 { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("zhaoyan", "zhaoyanblog.com");//用户名和密码, } }); |
3、获取一个连接发送邮件:
Transport transport = null; try { transport = session.getTransport("smtp"); //这里是不能单例使用的,可以看Transport的实现类SMTPTransport, //有几个成员是:private MimeMessage message; private Address[] addresses; private SMTPOutputStream dataStream; 说明每次发邮件都会存这些东西的,这个类是线程不安全的。 transport.connect(); //如果session里没有指定用户名密码,这里可以使用transport.connect("username","password"); MimeMessage message = createMessage();//构造邮件内容 transport.sendMessage(message, new InternetAddress[]{new InternetAddress("zhaoyan@zhaoyanblog.com")}); //如果你的message里指定了接收方,这里也可以写transport.sendMessage(message); } finally { transport.close(); } |
4、发送不同类型的短信
MimeMessage message = new MimeMessage(); //发送者:名称要编码一下 InternetAddress from = new InternetAddress(MimeUtility.encodeText("赵岩的博客") + "<zhaoyan@zhaoyanblog.com>"); InternetAddress from = new InternetAddress("zhaoyan@zhaoyanblog.com","赵岩的博客","utf-8"); message.setFrom(from); //接收者 message.setRecipient(Message.RecipientType.TO, new InternetAddress("zhaoyan@zhaoyanblog.com")); //多个接收者 message.setRecipient(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress("zhaoyan1@zhaoyanblog.com"),new InternetAddress("zhaoyan2@zhaoyanblog.com")}); //标题 message.setSubject("你好"); |
1、普通文本邮件
message.setText("欢迎看我的博客zhaoyanblog.com"); |
2、普通html邮件
message.setContent("<p>欢迎看我的博客 zhaoyanblog.com</p>", "text/html; charset=utf-8"); |
3、带附件的邮件
//html MimeBodyPart contentBodyPart = new MimeBodyPart(); contentBodyPart.setContent("<p>欢迎到我的博客,zhaoyanblog.com</p>", "text/html; charset=utf-8"); //附件 MimeBodyPart logoMultiPart = new MimeBodyPart(); logoMultiPart.setDataHandler(new DataHandler(new FileDataSource("我的文档.doc")); //组合,可以加多个附近 MimeMultipart bodyMultipart = new MimeMultipart("mixed"); bodyMultipart.addBodyPart(contentBodyPart); bodyMultipart.addBodyPart(logoMultiPart); message.setContent(bodyMultipart); |
4、html加图片的邮件
只要给图片附件加个id,然后在html部分引用
MimeBodyPart contentBodyPart = new MimeBodyPart(); contentBodyPart.setContent("<img src=\"cid:logo.png\" />", "text/html; charset=utf-8"); MimeBodyPart logoMultiPart = new MimeBodyPart(); logoMultiPart.setDataHandler(new DataHandler(new FileDataSource("logo.jpg"))); logoMultiPart.setContentID("logo.png"); MimeMultipart bodyMultipart = new MimeMultipart("mixed"); bodyMultipart.addBodyPart(contentBodyPart); bodyMultipart.addBodyPart(logoMultiPart); message.setContent(bodyMultipart); |
除非注明,赵岩的博客文章均为原创,转载请以链接形式标明本文地址
本文地址:https://zhaoyanblog.com/archives/871.html