maven发送邮件实例demo

1.pom.xml配置依赖

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.4</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
</dependency>

2.还得有一个邮件的服务类:

import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.MimeMessageHelper;
import java.io.File;
import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.mail.javamail.JavaMailSender;

/**
 * -----------------------------------------
 * 文件: Email.java
 * 描述: 发送邮箱得服务类
 * -----------------------------------------
 */
 
 
public class Email {
    private static final Logger logger = LoggerFactory.getLogger(Email.class);

    private MailSender mailSender;

    private SimpleMailMessage simpleMailMessage;
    @Resource
    private JavaMailSender myMails;

    /**
     * 方法名: sendMail
     * 参数名:@param subject  邮件主题
     * 参数名:@param content 邮件主题内容
     * 参数名:@param to      收件人Email地址
     * 描述语: 发送邮件
     */
    public void sendMail(String subject, String content, String to) {

        simpleMailMessage.setSubject(subject); //设置邮件主题
        simpleMailMessage.setTo(to);             //设定收件人
        simpleMailMessage.setText(content);  //设置邮件主题内容
        mailSender.send(simpleMailMessage); //发送邮件
    }
    //Spring 依赖注入
    public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
        this.simpleMailMessage = simpleMailMessage;
    }
    //Spring 依赖注入
    public void setMailSender(MailSender mailSender) {

        this.mailSender = mailSender;
    }

    /**
     *
     * @Description:普通文本发邮件形式
     * @param subject 主题
     * @param content 正文
     * @param toMail 收件人邮箱
     * void
     * @exception:
     */
    public void sendSimpleMail(String subject,String content,String toMail) {
        simpleMailMessage.setSubject(subject);
        simpleMailMessage.setText(content);
        simpleMailMessage.setTo(toMail);
        mailSender.send(simpleMailMessage);
        logger.info("邮件发送成功..");
    }

    /**
     *
     * @Description:html发邮件形式
     * @param subject 主题
     * @param content 正文
     * @param toMail 收件人邮箱
     * void
     * @exception:
     */
    public void sendHtmlMail(String subject,String content,String toMail) {
        MimeMessage mailMessage = myMails.createMimeMessage();
        MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);
        try {
            messageHelper.setTo(toMail);
            messageHelper.setSubject(subject);
            messageHelper.setText("<html><head></head><body><h1>"+content+"</h1></body></html>",true);
            myMails.send(mailMessage);

        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

    /**
     *
     * @Description: 带图片发邮件形式
     * @param subject 主题
     * @param content 正文
     * @param toMail 收件人邮箱
     * @param picturePath 图片路径
     * void
     * @exception:
     */
    public void sendPictureMail(String subject,String content,String toMail,String picturePath){
        MimeMessage mailMessage = myMails.createMimeMessage();
        MimeMessageHelper messageHelper;
        try {
            messageHelper = new MimeMessageHelper(mailMessage,true);
            messageHelper.setTo(toMail);
            messageHelper.setSubject(subject);
            //messageHelper.setText("<html><head></head><body><h1>" + content +"</h1><img src=/"+cid:aaa + /"/></body></html>",true);
            FileSystemResource img = new FileSystemResource(new File(picturePath));
            messageHelper.addInline("aaa",img);
            //发送邮件
            myMails.send(mailMessage);

        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }

    /**
     *
     * @Description:带附件发邮件形式
     * @param subject 标题
     * @param content 正文
     * @param toMail 收件人邮箱
     * @param accessoryPath 附件路径
     * @param accessoryName 附件名
     * void
     * @exception:
     */
    public void sendMailTakeAccessory(String subject,String content,String toMail,String accessoryPath,String accessoryName){
        MimeMessage mailMessage = myMails.createMimeMessage();
        MimeMessageHelper messageHelper;
        try {
            messageHelper = new MimeMessageHelper(mailMessage,true,"utf-8");
            messageHelper.setTo(toMail);
            messageHelper.setSubject(subject);
            messageHelper.setText("<html><head></head><body><h1>"+content+"</h1></body></html>",true);
            FileSystemResource file = new FileSystemResource(new File(accessoryPath));
            messageHelper.addAttachment(accessoryName,file);
            myMails.send(mailMessage);
        } catch (MessagingException e) {
            e.printStackTrace();
        }

    }



3.spring_mail.xml配置

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"    
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans      
                        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!-- 第一种方式 -->
< bean id ="mailSender" class ="org.springframework.mail.javamail.JavaMailSenderImpl" > <!-- 服务器 --> < property name ="host" value ="smtp.163.com" /> <!-- 端口号 --> < property name ="port" value ="25" /> <!-- 用户名 --> < property name ="username" value ="yourMailName@163.com" />
<!-- 密码 -->
   <property name="password" value="yourPassword" />
<!-- SMTP服务器验证 --> < property name ="javaMailProperties" > < props > <!-- 验证身份 --> < prop key ="mail.smtp.auth" >true </ prop > </ props > </ property > </ bean > <!-- 目前我用过的EMAIL账号都是网易的,下面列出网易的SMTP服务器名和端口号: 网易邮箱 SMTP服务器 SMTP端口 POP3服务器 POP3端口 @126.com smtp.126.com 25 pop3.126.com 110 @163.com smtp.163.com 25 pop3.163.com 110 @yeah.net smtp.yeah.net 25 pop3.yeah.net 110 --> < bean id ="simpleMailMessage" class ="org.springframework.mail.SimpleMailMessage" > <!-- 发件人email --> < property name ="from" value ="yourMailName@163.com" />
</ bean > < bean id ="simpleMail" class ="com.ssm.pojo.Email" > < property name ="mailSender" ref ="mailSender" /> < property name ="simpleMailMessage" ref ="simpleMailMessage" /> </ bean >
<!-- 第二种方式 -->
< bean id ="myMails" class ="org.springframework.mail.javamail.JavaMailSenderImpl" > < property name ="defaultEncoding" value ="UTF-8" /> <!-- 服务器 --> < property name ="host" value ="smtp.163.com" /> <!-- 端口号 --> <!--<property name="port" value="25" />--> <!-- 用户名 --> < property name ="username" value ="yourMailName@163.com" />
<!-- 密码 --> < property name ="password" value ="yourPassword" /> < property name ="javaMailProperties" > < props > <!-- 设置认证开关 --> < prop key ="mail.smtp.auth" >true </ prop > <!-- 启动调试开关 --> < prop key ="mail.debug" >true </ prop > <!-- 设置发送延时 --> < prop key ="mail.smtp.timeout" >2500 </ prop > < prop key ="mail.smtp.socketFactory.class" >javax.net.ssl.SSLSocketFactory </ prop > < prop key ="mail.smtp.port" >465 </ prop > < prop key ="mail.smtp.socketFactory.port" >465 </ prop > </ props > </ property > </ bean > </ beans >

4.一个简单的入口类

import com.ssm.pojo.Email;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyMail {

    public static void main(String[] args) {
        MyMail.testSendMail();
    }
    public static void testSendMail() {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring_mail.xml");
        Email mail = (Email)context.getBean("simpleMail");
        mail.sendMail("hello", "hello world,程序如此简单", "[email protected]");
        //mail.sendMail("标题", "内容", "收件人邮箱");
        mail.sendSimpleMail("hello", "hello world,程序如此简单", "yourMailName@163.com");
    }


}
5.或者一个简单 Controller
@Resource
private Email mail;
@RequestMapping("/sendMail")
public void sendMails(){
   mail.sendMail("您好", "hello world", "[email protected]");
}



猜你喜欢

转载自blog.csdn.net/qq_38281963/article/details/80209838