赞
踩
<!-- 引入邮箱插件-->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-mail -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
注意里面我使用的是log4j日志对信息进行记录,不懂得同学们可以点击此处快速学习
import com.sun.mail.util.MailSSLSocketFactory; import com.talent.api.commonApi.ContenConfig; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Properties; public class JavaSocket { private static final String EMAIL_SEND = "自己的邮箱"; private static final String EMAIL_KEY = "16位的授权码"; public static void sendEmail(EmailModel emailModel) throws Exception { Properties prop = new Properties(); prop.setProperty("mail.host", "smtp.qq.com"); // 设置QQ邮件服务器 prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议 prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码 // 关于QQ邮箱,还要设置SSL加密,加上以下代码即可 MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); prop.put("mail.smtp.ssl.enable", "true"); prop.put("mail.smtp.ssl.socketFactory", sf); //使用JavaMail发送邮件的5个步骤 //创建定义整个应用程序所需的环境信息的 Session 对象 Session session = Session.getDefaultInstance(prop, new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { //发件人邮件用户名、授权码 return new PasswordAuthentication(EMAIL_SEND, EMAIL_KEY); } }); //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 session.setDebug(true); //2、通过session得到transport对象 Transport ts = session.getTransport(); //3、使用邮箱的用户名和授权码连上邮件服务器 ts.connect("smtp.qq.com", EMAIL_SEND, EMAIL_KEY); //4、创建邮件 //创建邮件对象 MimeMessage message = new MimeMessage(session); //指明邮件的发件人 message.setFrom(new InternetAddress(EMAIL_SEND)); //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发 message.setRecipient(Message.RecipientType.TO, new InternetAddress(emailModel.getEmailReciver())); //邮件的标题 message.setSubject(emailModel.getTitle()); //邮件的文本内容 message.setContent(emailModel.getMessage(), "text/html;charset=UTF-8"); //5、发送邮件 ts.sendMessage(message, message.getAllRecipients()); // re=ts ts.close(); } }
不会获取邮箱检验码的点击此处
emailModel
public class EmailModel { private String title;//邮件标题 private String message;//邮件内容 private String emailReciver;//邮件的收件人 public EmailModel(String title, String message, String emailReciver) { this.title = title; this.message = message; this.emailReciver = emailReciver; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getEmailReciver() { return emailReciver; } public void setEmailReciver(String emailReciver) { this.emailReciver = emailReciver; } }
如何使用呢,我们可以创建一个工具类MailUtils
public class MailUtils { private static final JavaSocket javaSocket = new JavaSocket(); /** * 发送邮件 * 发送成功:true * 发送失败:fasle * * @param title 邮件主题 * @param message 邮件内容 * @return */ public static Boolean senEmail(String title, String message, String emailReceiver) { Boolean re = false; try { javaSocket.sendEmail(new EmailModel(title, message, emailReceiver)); re = true; } catch (Exception e) { re = false; e.printStackTrace(); } return re; } public static void main(String[] args) { Boolean re = senEmail("测试数据", "测试内容", "649623649"); System.out.println(re); } }
上面只是实现了发送纯文本类型的邮件,更多类型的邮件服务可以参考以下方式:
import java.io.File; import javax.mail.Transport; import javax.mail.internet.MimeMessage; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.test.context.junit4.SpringRunner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class SocketTest { @Autowired private JavaMailSenderImpl mailSender; private Logger logger = LoggerFactory.getLogger(this.getClass()); /** * 发送包含简单文本的邮件 */ @Test public void sendTxtMail() { SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); // 设置收件人,寄件人 String receiver="177@qq.com"; simpleMailMessage.setTo(new String[] {receiver}); simpleMailMessage.setFrom("176@163.com"); simpleMailMessage.setSubject("Spring Boot Mail 邮件测试【文本】"); simpleMailMessage.setText("这里是一段简单文本测试邮件。!!!!!请忽略!!!!!"); // 发送邮件 mailSender.send(simpleMailMessage); logger.info("邮件已经发送到账户"+receiver); System.out.println("邮件已发送"); } /** * 发送包含HTML文本的邮件 * @throws Exception */ @Test public void sendHtmlMail() throws Exception { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage); String receiver="177@qq.com";//接收者账户 String postCount="176@163.com";//发送者账户 mimeMessageHelper.setTo(receiver); mimeMessageHelper.setFrom("176@163.com"); mimeMessageHelper.setSubject("Spring Boot Mail 邮件测试【HTML】"); StringBuilder sb = new StringBuilder(); sb.append("<html><head></head>"); sb.append("<body><h1>spring 邮件测试</h1><p>hello!this is spring mail test。</p></body>"); sb.append("</html>"); // 启用html mimeMessageHelper.setText(sb.toString(), true); // 发送邮件 mailSender.send(mimeMessage); logger.info("邮件已经从"+postCount+"->发送到账户"+receiver); System.out.println("邮件已发送"); } /** * 发送包含内嵌图片的邮件 * @throws Exception */ @Test public void sendAttachedImageMail() throws Exception { MimeMessage mimeMessage = mailSender.createMimeMessage(); // multipart模式 MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); String receiver="177@qq.com";//接收者账户 String postCount="176@163.com";//发送者账户 mimeMessageHelper.setTo(receiver); mimeMessageHelper.setFrom(postCount); mimeMessageHelper.setSubject("Spring Boot Mail 邮件测试【图片】"); StringBuilder sb = new StringBuilder(); sb.append("<html><head></head>"); sb.append("<body><h1>spring 邮件测试</h1><p>hello!this is spring mail test。</p>"); // cid为固定写法,imageId指定一个标识 sb.append("<img src='https://www.google.com/images/branding/googlelogo/2x/googlelogo_light_color_272x92dp.png'></body>"); sb.append("</html>"); // 启用html mimeMessageHelper.setText(sb.toString(), true); // 设置imageId FileSystemResource img = new FileSystemResource(new File("D:/壁纸/21.jpg")); mimeMessageHelper.addInline("imageId", img); // 发送邮件 mailSender.send(mimeMessage); logger.info("邮件已经从"+postCount+"->发送到账户"+receiver+",发送内容为:"+img); System.out.println("邮件已发送"); } /** * 发送包含附件的邮件 * @throws Exception */ @Test public void sendAttendedFileMail() throws Exception { MimeMessage mimeMessage = mailSender.createMimeMessage(); // multipart模式 MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "utf-8"); String receiver="177@qq.com";//接收者账户 String postCount="176@163.com";//发送者账户 mimeMessageHelper.setTo(receiver); mimeMessageHelper.setFrom(postCount); mimeMessageHelper.setSubject("Spring Boot Mail 邮件测试【附件】"); StringBuilder sb = new StringBuilder(); sb.append("<html><head></head>"); sb.append("<body><h1>spring 邮件测试</h1><p>hello!this is spring mail annex test</p></body>"); sb.append("</html>"); // 启用html mimeMessageHelper.setText(sb.toString(), true); // 设置附件 FileSystemResource file = new FileSystemResource(new File("D:/简历/个人简历 朱旭.docx")); mimeMessageHelper.addAttachment("PersonalInformation.docx", file); // 发送邮件 mailSender.send(mimeMessage); logger.info("邮件已经从"+postCount+"->发送到账户"+receiver+",发送内容为:"+file); System.out.println("邮件已发送"); } }
具体更多的java有邮件设置可以参考此处,不过个人认为上面提到的这些已经可以满足大部分人的需求了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。