邮件发送的基本实现
1、导包

2、发送一封简单的邮件(代码实现)
package com.kuang; import com.sun.mail.util.MailSSLSocketFactory; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Properties; //发送一封简单的邮件 public class MailDemo01 { public static void main(String[] args) 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个步骤 //1、创建定义整个应用程序所需的环境信息的 Session 对象 //QQ才有!其他邮箱就不用 Session session = Session.getDefaultInstance(prop, new Authenticator() { @Override public PasswordAuthentication getPasswordAuthentication() { //发件人邮件用户名,授权码 return new PasswordAuthentication("1223741746@qq.com","授权码"); } }); //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 session.setDebug(true); //2、通过session得到transport对象 Transport ts = session.getTransport(); //3、使用邮箱的用户名和授权码连上邮件服务器 ts.connect("smtp.qq.com","1223741746@qq.com","授权码"); //4、创建邮件 //创建邮件对象 MimeMessage message = new MimeMessage(session); //指明邮件的发件人 message.setFrom(new InternetAddress("1223741746@qq.com")); //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发 message.setRecipient(Message.RecipientType.TO, new InternetAddress("1223741746@qq.com")); //邮件的标题 message.setSubject("只包含文本的简单文件"); //邮件的文本内容 message.setContent("你好啊!","text/html;charset=utf-8"); //5、发送邮件 ts.sendMessage(message, message.getAllRecipients()); ts.close(); } }
带图片
package com.kuang; import com.sun.mail.util.MailSSLSocketFactory; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import java.util.Properties; //发送带图片的简单邮件 public class MailDemo02 { public static void main(String[] args) 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个步骤 //1、创建定义整个应用程序所需的环境信息的 Session 对象 //QQ才有!其他邮箱就不用 Session session = Session.getDefaultInstance(prop, new Authenticator() { @Override public PasswordAuthentication getPasswordAuthentication() { //发件人邮件用户名,授权码 return new PasswordAuthentication("1223741746@qq.com","dekccyocmwzfhibb"); } }); //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 session.setDebug(true); //2、通过session得到transport对象 Transport ts = session.getTransport(); //3、使用邮箱的用户名和授权码连上邮件服务器 ts.connect("smtp.qq.com","1223741746@qq.com","dekccyocmwzfhibb"); //4、创建邮件 //创建邮件对象 MimeMessage message = new MimeMessage(session); //指明邮件的发件人 message.setFrom(new InternetAddress("1223741746@qq.com")); //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发 message.setRecipient(Message.RecipientType.TO, new InternetAddress("1223741746@qq.com")); //邮件的标题 message.setSubject("只包含文本的简单文件"); //======================================================= //准备图片数据 MimeBodyPart image = new MimeBodyPart(); //图片需要经过数据处理 DataHandler:数据处理 DataHandler dh = new DataHandler(new FileDataSource("F:\\develop\\workspace\\JavaWeb\\功能扩展\\mail-java\\src\\1.jpg")); image.setDataHandler(dh); //在我们的Body中放入这个处理的图片数据 image.setContentID("1.jpg"); //给图片设置一个ID,我们在后面可以使用! //准备正文数据 MimeBodyPart text = new MimeBodyPart(); text.setContent("这是一封邮件正文带图片<img src='cid:1.jpg'>的邮件", "text/html;charset=utf-8"); //描述数据关系 MimeMultipart mm = new MimeMultipart(); mm.addBodyPart(text); mm.addBodyPart(image); mm.setSubType("related"); //设置到消息中,保存修改 message.setContent(mm); //把最后编辑好的邮件放到消息当中 message.saveChanges(); //保存修改 //======================================================== //5、发送邮件 ts.sendMessage(message, message.getAllRecipients()); ts.close(); } }
带附件
package com.kuang; import com.sun.mail.util.MailSSLSocketFactory; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.*; import javax.mail.internet.*; import java.util.Properties; public class MailDemo03 { public static void main(String[] args) 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个步骤 //1、创建定义整个应用程序所需的环境信息的 Session 对象 //QQ才有!其他邮箱就不用 Session session = Session.getDefaultInstance(prop, new Authenticator() { @Override public PasswordAuthentication getPasswordAuthentication() { //发件人邮件用户名,授权码 return new PasswordAuthentication("1223741746@qq.com","dekccyocmwzfhibb"); } }); //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 session.setDebug(true); //2、通过session得到transport对象 Transport ts = session.getTransport(); //3、使用邮箱的用户名和授权码连上邮件服务器 ts.connect("smtp.qq.com","1223741746@qq.com","dekccyocmwzfhibb"); //4、连接上之后我们需要发送邮件 MimeMessage mimeMessage = imageMail(session); //5、发送邮件 ts.sendMessage(mimeMessage, mimeMessage.getAllRecipients()); ts.close(); } public static MimeMessage imageMail(Session session) throws MessagingException { //消息的固定信息 MimeMessage mimeMessage = new MimeMessage(session); //邮件发送人 mimeMessage.setFrom(new InternetAddress("1223741746@qq.com")); //邮件接收人,可以同时发送给很多人,我们这里只发个自己; mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("1223741746@qq.com")); mimeMessage.setSubject("我也不知道是发什么东西就发给你了"); //邮件主题 /* 编写邮件内容 1.图片 2.附件 3.文本 */ //图片 MimeBodyPart body1 = new MimeBodyPart(); body1.setDataHandler(new DataHandler(new FileDataSource("F:\\develop\\workspace\\JavaWeb\\功能扩展\\mail-java\\src\\1.jpg"))); body1.setContentID("1.jpg"); //图片设置ID //文本 MimeBodyPart body2 = new MimeBodyPart(); body2.setContent("请注意,我不是广告<img src='cid:1.jpg'>", "text/html;charset=utf-8"); //附件 MimeBodyPart body3 = new MimeBodyPart(); body3.setDataHandler(new DataHandler(new FileDataSource("src/resources/log4j.properties"))); body3.setFileName("log4j.properties"); //附件设置名字 MimeBodyPart body4 = new MimeBodyPart(); body4.setDataHandler(new DataHandler(new FileDataSource("src/resources/1.txt"))); body4.setFileName("");//附件设置名字 //拼装邮件正文内容 MimeMultipart multipart1 = new MimeMultipart(); multipart1.addBodyPart(body1); multipart1.addBodyPart(body2); multipart1.setSubType("related"); //1.文本和图片内嵌成功! //new MimeBodyPart().setContent(multipart1); // 将拼装好的正文内容设置为主体 MimeBodyPart contentText = new MimeBodyPart(); contentText.setContent(multipart1); //拼接附件 MimeMultipart allFile = new MimeMultipart(); allFile.addBodyPart(body3);//附件 allFile.addBodyPart(body4);//附件 allFile.addBodyPart(contentText);//正文 allFile.setSubType("mixed"); // 正文和附件都存在再邮件中,所有类型设置为mixed; //放到Message消息中 mimeMessage.setContent(allFile); mimeMessage.saveChanges(); // 保存修改 return mimeMessage; } }

浙公网安备 33010602011771号