-
使用 java 代碼發送郵件
-
使用工具類發送郵件
-
使用Spring進行整合發送郵件
-
發送帶附件的郵件
一.使用 Java 代碼發送郵件
第一步:導入依賴坐標
<!-- Javamail --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.4</version> </dependency>
/** * java程序發送郵件 * @author Mr.song * @date 2019/05/24 16:17 */ public class JavaMail { public static void main(String[] args) throws Exception { //1.配置發送郵件的屬性 Properties properties = new Properties(); properties.setProperty("mail.smtp.host", "localhost"); //設置協議主機 properties.setProperty("mail.smtp.auth", "true"); //設置smtp是否需要認證 //2.根據屬性獲得一個會話 Session session = Session.getInstance(properties); //3.設置會話是debug模式(會打印更多相關信息) session.setDebug(true); //4.創建郵件主題信息對象 MimeMessage message = new MimeMessage(session); //5.設置發件人 message.setFrom(new InternetAddress("dintalk@sh.com")); //6.設置郵件主題 message.setSubject("我的第一份java郵件"); //7.設置郵件正文 message.setText("第一份郵件發送成功了,哈哈"); //8.設置收件人: TO-發送 CC-抄送 BCC-密送 message.setRecipient(Message.RecipientType.TO, new InternetAddress("talkdin@sh.com")); //9.獲取發送器對象:提供指定的協議 Transport transport = session.getTransport("smtp"); //10.設置發件人的信息 transport.connect("localhost", "dintalk", "123456"); //11.發送郵件 transport.sendMessage(message, message.getAllRecipients()); //12.關閉資源 transport.close(); } }
第一步:導入依賴坐標(同 上)
第二步:抽取工具類
/** * @author Mr.song * @date 2019/05/24 16:53 */ public class MailUtil { /** * 工具類發送郵件的方法里,發件郵箱的信息是固定的 * @param map : 收件地址和發送類型 (地址作 key) * @param subject : 郵件的主題 * @param content : 郵件的正文 * @throws MessagingException */ public static void sendMail(Map<String,String>map,String subject,String content) throws MessagingException { //1.配置發送郵件的屬性 Properties properties = new Properties(); properties.setProperty("mail.smtp.host","localhost"); //設置協議主機 properties.setProperty("mail.smtp.auth","true"); //設置smtp是否需要認證 //2.根據屬性獲得一個會話 Session session = Session.getInstance(properties); //3.設置會話是debug模式(會打印更多相關信息,生產環境可設為false) session.setDebug(true); //4.創建郵件主題信息對象 MimeMessage message = new MimeMessage(session); //5.設置發件人 message.setFrom(new InternetAddress("dintalk@sh.com")); //6.設置郵件主題 message.setSubject(subject); //7.設置郵件正文 message.setText(content); //8.設置收件人: TO-發送 CC-抄送 BCC-密送 for (Map.Entry<String, String> me : map.entrySet()) { String email = me.getKey(); //郵件地址 String type = me.getValue(); //郵件類型 if ("to".equalsIgnoreCase(type)){ //發送 message.setRecipient(Message.RecipientType.TO,new InternetAddress(email)); }else if ("cc".equalsIgnoreCase(type)){ //抄送 message.setRecipient(Message.RecipientType.CC,new InternetAddress(email)); }else if ("bcc".equalsIgnoreCase(type)){ //密送 message.setRecipient(Message.RecipientType.BCC,new InternetAddress(email)); } } //9.獲取發送器對象:提供指定的協議 Transport transport = session.getTransport("smtp"); //10.設置發件人的信息 transport.connect("localhost","dintalk","123456"); //11.發送郵件 transport.sendMessage(message,message.getAllRecipients()); //12.關閉資源 transport.close(); } }
/** * 使用工具類發送郵件 * @author Mr.song * @date 2019/05/24 16:47 */ public class UtilMail { public static void main(String[] args) throws Exception{ Map<String,String> map = new HashMap<>(); map.put("din@sh.com","to"); map.put("talk@sh.com","cc"); map.put("talkdin@sh.com","bcc"); MailUtil.sendMail(map,"我的第二封郵件","使用工具類發送郵件...."); } }
第一步:導入依賴坐標
<!-- Javamail --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.4</version> </dependency> <!--整合spring坐標--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>5.0.4.RELEASE</version> </dependency>
#設置發件方郵箱地址 mail.from=dintalk@sh.com #設置協議主機 mail.host=localhost #設置發件方用戶名 mail.username=dintalk #設置發件方密碼 mail.password=123456 #設置郵件編碼格式 mail.encoding=UTF-8 #設置郵件發送協議 mail.protocol=smtp
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 1.指定引入其他資源文件.properties文件 --> <context:property-placeholder location="classpath:mail.properties"/> <!-- 2.配置簡單郵件消息對象 --> <bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage"> <!-- 此時我們只需要注入發件箱名稱即可。不要注入主題,正文,收件箱等不固定的信息 --> <property name="from" value="${mail.from}"></property> </bean> <!-- 3.配置郵件發送器 --> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="${mail.host}"></property> <property name="username" value="${mail.username}"></property> <property name="password" value="${mail.password}"></property> <property name="defaultEncoding" value="${mail.encoding}"></property> <property name="protocol" value="${mail.protocol}"></property> <property name="javaMailProperties"> <props> <!-- 是否需要驗證 --> <prop key="mail.smtp.auth">true</prop> <!-- 是否需要debug的信息 --> <prop key="mail.debug">true</prop> <!-- 設置發送超時時間,以秒為單位。0為永不超時 --> <prop key="mail.smtp.timeout">0</prop> </props> </property> </bean> </beans>
/** * 整合Spring的郵件發送 * @author Mr.song * @date 2019/05/24 17:07 */ public class SpringMail { public static void main(String[] args) throws MessagingException { //1.獲取Spring容器 ApplicationContext ac = new ClassPathXmlApplicationContext ("classpath:applicationContext-mail.xml"); //2.獲取消息對象 SimpleMailMessage mailMessage = (SimpleMailMessage) ac.getBean("mailMessage"); //3.設置郵件的主題 mailMessage.setSubject("Spring整合javamail"); //4.設置郵件的內容,和收件人信息 mailMessage.setText("Spring整合javamail成功"); mailMessage.setTo("din@sh.com","talk@sh.com"); mailMessage.setCc("talkdin@sh.com"); //5.獲取郵件發送對象 JavaMailSenderImpl mailSender = (JavaMailSenderImpl) ac.getBean("mailSender"); //6.發送郵件 mailSender.send(mailMessage); } }
編寫帶附件的郵件
/** * 發送帶附件的郵件 * @author Mr.song * @date 2019/05/24 17:35 */ public class AttachmentMail { public static void main(String[] args) throws MessagingException { //1.獲取spring的容器 ApplicationContext ac = new ClassPathXmlApplicationContext ("classpath:applicationContext-mail.xml"); //2.獲取發送器對象(spring提供的) JavaMailSenderImpl sender = (JavaMailSenderImpl) ac.getBean("mailSender"); //3.獲取MimeMessage MimeMessage mailMessage = sender.createMimeMessage(); //4.創建spring提供的復雜郵件的幫助對象 MimeMessageHelper helper = new MimeMessageHelper(mailMessage, true); //5.設置發件人郵箱 helper.setFrom("dintalk@sh.com"); //6.設置郵件的收件人 helper.setTo("din@sh.com"); //7.設置郵件的主題 helper.setSubject("帶有附件和圖片的郵件"); //8.設置郵件的正文 helper.setText("<html><head></head><body><h1>這是一封帶有附件和圖片的郵件</h1><img src=cid:image></body></html>", true); //9.設置圖片 FileSystemResource resource = new FileSystemResource(new File("C:\\Users\\Administrator\\Desktop\\1.png")); //10.使用圖片替換cid (cid是規定的,只能用cid) helper.addInline("image", resource); //11.設置附件 helper.addAttachment("1.png", resource); //12.發送郵件 sender.send(mailMessage); } }
關注微信公眾號,隨時隨地學習

