java 邮件发送

步骤1:pom.xml添加依赖项

 1         <!--mail-->
 2
 3         <dependency>
 4             <groupId>javax.mail</groupId>
 5             <artifactId>mailapi</artifactId>
 6             <version>1.4.2</version>
 7         </dependency>
 8
 9         <dependency>
10             <groupId>javax.mail</groupId>
11             <artifactId>mail</artifactId>
12             <version>1.4.2</version>
13         </dependency>

步骤2:封装一个工具类(参考下面的代码)

注:BaseBean里其实没啥东西,就一个protected Logger logger,方便子类可以直接使用,大家参考时,可根据需要去掉BeseBean继承

  1 package com.cnblogs.yjmyzz.utils;
  2
  3 import com.cnblogs.yjmyzz.domain.BaseBean;
  4 import org.springframework.util.StringUtils;
  5
  6 import java.util.Properties;
  7
  8 import javax.mail.Message;
  9 import javax.mail.MessagingException;
 10 import javax.mail.Session;
 11 import javax.mail.Transport;
 12 import javax.mail.internet.InternetAddress;
 13 import javax.mail.internet.MimeMessage;
 14 import javax.mail.internet.MimeUtility;
 15
 16 /**
 17  * 邮件发送工具类
 18  */
 19 public class MailUtil extends BaseBean {
 20
 21     private MimeMessage message;
 22     private Session session;
 23     private Transport transport;
 24     private String smtpHost = "";
 25     private int smtpPort = 25;
 26     private String senderUserName = "";
 27     private String senderPassword = "";
 28
 29     public MailUtil(Properties properties, boolean debug) {
 30         this.smtpHost = properties.getProperty("mail.smtp.host");
 31         this.smtpPort = Integer.parseInt(properties.getProperty("mail.smtp.port"));
 32         this.senderUserName = properties.getProperty("mail.sender.username");
 33         this.senderPassword = properties.getProperty("mail.sender.password");
 34         session = Session.getInstance(properties);
 35         session.setDebug(debug);//开启后有调试信息
 36         message = new MimeMessage(session);
 37     }
 38
 39     /**
 40      * 发送邮件
 41      *
 42      * @param subject        邮件主题
 43      * @param mailBody       邮件内容
 44      * @param senderNickName 发件人NickName
 45      * @param receiveUser    收件人地址
 46      * @param ccReceiveUser  抄送地址
 47      * @param bccReceiveUser 密送地址
 48      */
 49     public void sendEmail(String subject, String mailBody, String senderNickName,
 50                           String receiveUser, String ccReceiveUser, String bccReceiveUser, Boolean isHtmlFormat) {
 51         try {
 52             // 发件人
 53             InternetAddress from = null;
 54             if (StringUtils.isEmpty(senderNickName)) {
 55                 from = new InternetAddress(senderUserName);
 56             } else {
 57                 from = new InternetAddress(MimeUtility.encodeWord(senderNickName) + " <" + senderUserName + ">");
 58             }
 59             message.setFrom(from);
 60
 61             // 收件人
 62             InternetAddress to = new InternetAddress(receiveUser);
 63             message.setRecipient(Message.RecipientType.TO, to);
 64
 65             //抄送人
 66             if (!StringUtils.isEmpty(ccReceiveUser)) {
 67                 InternetAddress cc = new InternetAddress(ccReceiveUser);
 68                 message.setRecipient(Message.RecipientType.CC, cc);
 69             }
 70
 71             //密送人
 72             if (!StringUtils.isEmpty(bccReceiveUser)) {
 73                 InternetAddress bcc = new InternetAddress(bccReceiveUser);
 74                 message.setRecipient(Message.RecipientType.BCC, bcc);
 75             }
 76
 77             message.setSubject(subject);
 78             String content = mailBody.toString();
 79
 80             if (isHtmlFormat) {
 81                 message.setContent(content, "text/html;charset=UTF-8");
 82             } else {
 83                 message.setContent(content, "text/plain;charset=UTF-8");
 84             }
 85             message.saveChanges();
 86             transport = session.getTransport("smtp");
 87             transport.connect(smtpHost, smtpPort, senderUserName, senderPassword);
 88             transport.sendMessage(message, message.getAllRecipients());
 89
 90             logger.debug(senderUserName + " 向 " + receiveUser + " 发送邮件成功!");
 91
 92         } catch (Exception e) {
 93             e.printStackTrace();
 94             logger.error("sendEmail失败!", e);
 95         } finally {
 96             if (transport != null) {
 97                 try {
 98                     transport.close();
 99                 } catch (MessagingException e) {
100                     e.printStackTrace();
101                     logger.error("sendEmail->transport关闭失败!", e);
102                 }
103             }
104         }
105     }
106
107 }

步骤3:配置

a) 属性文件mail.properties

1 mail.smtp.host=smtp.qq.com
2 mail.smtp.port=25
3 mail.smtp.auth=true
4 mail.sender.username=xxx@qq.com
5 mail.sender.password=***

b) spring配置注入

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
 4        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
 5        xmlns:context="http://www.springframework.org/schema/context"
 6        xsi:schemaLocation="
 7      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
 8      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 9      http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
10      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
11      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
12        default-autowire="byName">
13
14     <bean id="mailProperties"
15           class="org.springframework.beans.factory.config.PropertiesFactoryBean">
16         <property name="location"
17                   value="classpath:mail.properties"/>
18     </bean>
19
20     <bean id="mailUtil" class="com.cnblogs.yjmyzz.utils.MailUtil">
21         <constructor-arg index="0" ref="mailProperties"/>
22         <constructor-arg index="1" value="false"/>
23     </bean>
24
25 </beans>

测试代码:

1     @Test
2     public void testSendMail() {
3         ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-context.xml");
4         MailUtil mailUtil = ctx.getBean(MailUtil.class);
5         mailUtil.sendEmail("骚年,崛起吧,人类需要你!", "<font color=red>骚年:</font><h1>快去拯救地球吧!</h1>", "菩提树上的杨过", "aaa@126.com", "bbb@infosky.com.cn", "ccc@sjtu.edu.cn", true);
6         ((ClassPathXmlApplicationContext) ctx).close();
7     }

 

时间: 2024-10-26 19:39:49

java 邮件发送的相关文章

java 邮件发送与带附件的实现方法

java 邮件发送与带附件的实现方法 java邮件发送也一样,可以实现传入的参数有port地址.密码.姓名.谁发.发给谁.主题.正文内容.smtp地址.发送类型 等功能. 方法一 简单的JavaMail邮件发送 dev.firnow.com    时间 : 2009-04-05  作者:匿名   编辑:sky 点击:  683 [ 评论 ] - -   import javax.mail.*; import java.util.*; import javax.mail.internet.*;  

java邮件发送的实现_java

邮件是在日常生活中,这篇文章主要介绍了java实现基于SMTP发送邮件的方法,实例分析了java基于SMTP服务发送邮件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下. 1.写一个 MailSendProper 类封装需要的属性 import java.util.Properties; public class MailSendProper { private String Host ; //发送邮件服务器的ip private String Port ; //发送邮件服务器的端口号 p

Java邮件发送程序(可以同时发给多个地址、可以带附件)_java

发送邮件的主程序 import java.util.Properties; import common.util.Email_Autherticatorbean; import javax.mail.Authenticator; import javax.mail.internet.InternetAddress; import org.apache.commons.lang.StringUtils; import javax.mail.internet.MimeBodyPart; import

关于java邮件发送的程序

问题描述 packagecom.bjsxt.javamail;importjava.util.Properties;importjavax.mail.Address;importjavax.mail.Message;importjavax.mail.MessagingException;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.AddressException;importjavax

java网上商城开发之邮件发送功能(全)_java

最近在学习网上商城时,接触到了一个邮件发送的功能.之前一直在使用邮箱进行发送邮件,但是其中的具体如何运转的却不知道是怎么回事.那么邮件发送究竟是怎么一回事呢? 邮件发送过程: 过程描述:首先是发送人将邮件通过客户端软件发送到特定的服务器上,然后通过电子邮件简单传输协议(SMTP)来进行传输,收件人通过POP3协议将邮件从服务器上接受回来.这样就实现了邮件之间的相互传送. 实现过程: 在有网络的情况下,我们可以直接使用搜狐.网易等邮箱进行发送.那么如何在没有网络的情况下,实现内部之间的发送呢?  

Java实现简单邮件发送_java

JAVA MAIL是利用现有的邮件账户发送邮件的工具,比如说,我在网易注册一个邮箱账户,通过JAVA Mail的操控,我可以不亲自登录网易邮箱,让程序自动的使用网易邮箱发送邮件.这一机制被广泛的用在注册激活和垃圾邮件的发送等方面.Java邮件发送的大致过程是这样的: 1.构建一个继承自javax.mail.Authenticator的具体类,并重写里面的getPasswordAuthentication()方法.此类是用作登录校验的,以确保你对该邮箱有发送邮件的权利. 2.构建一个propert

c-JAVA邮件发送国内的服务器国外能否使用

问题描述 JAVA邮件发送国内的服务器国外能否使用 国内通过JAVA实现邮件发送使用 smtp.qq.com ,国外的邮件发送能否使用.

用Java Mail发送带有图片附件的html格式邮件

用Java Mail发送带有图片的html格式的邮件,针对于显示图片,一般有两种方法. 1. 图片存在于服务器上,我们只需要把图片在服务器的的链接放进去即可. 这种发式比较简单,但是这种方法有些缺陷: 图片不支持离线浏览: 每次浏览邮件需要访问web服务,增加服务器负担: 若图片以二进制的方式存在于数据库或是动态生成的,则无法有效的解决. 2. 把图片以附件的方式发送出去,这种方式非常适用于图片存在于数据库中的情况. 本文也主要讨论这种情况. 对于Java Mail的基础知识,请看http://

Java实现邮件发送遇到的问题_java

发送邮件的代码是我从以前的一个应用上直接拷贝过来的.以前使用的腾讯的邮件服务,程序执行起来没有任何问题.后来修改为微软office365邮件服务后,却遇到了两个问题. 问题一,tls加密设置 异常信息如下: 复制代码 代码如下: Exception in thread "main" com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.57 SMTP; Client was not authenticated to send anonym