JAVA发送邮件(163邮箱)

    项目涉及到邮箱发送的功能 ,这篇博文主要是采用spring框架内集成的工具类 (JavaMailSenderImpl ),服务器采用的是163的邮箱服务器,在此不做太多内部方法的讲解,主要记录实现的代码。其中的注意事项,如下

  需要发送人的邮箱开启SMTP服务,例:163开启: 登陆网页版 ---》设置--》设置POP3/SMTP/IMAP   勾选就行。

一、硬编码方式实现

              首先通过本地main方法来跑,如需服务器上运行请往下看。硬编码方式没什么太多注意事项,只要你的邮箱服务器上开启了" SMTP "服务,下面代码复制就能跑。

import java.io.UnsupportedEncodingException;
import java.util.Properties;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;


/**
 * 邮件发送工具类
 * @author zhouhao
 *
 */
public class EmailUtil {
	private static final String HOST = "smtp.163.com"; // 邮箱服务器
    private static final Integer PORT = 25;	// 端口
    private static final String USERNAME = "xxxxx@163.com";    //邮箱名
    private static final String PASSWORD = "xxxx";		//密码
    private static final String EMAILFORM = "xxxxx@163.com";  //发件人(需要与邮箱名一致,不然会出现553问题)
    private static JavaMailSenderImpl mailSender = createMailSender();

   
    /**
     * 邮件发送器
     *
     * @return 配置好的工具
     */
    private static JavaMailSenderImpl createMailSender() {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost(HOST);
        sender.setPort(PORT);
        sender.setUsername(USERNAME);
        sender.setPassword(PASSWORD);
        sender.setDefaultEncoding("Utf-8");
        Properties p = new Properties();
        p.setProperty("mail.smtp.timeout", "25000");
        p.setProperty("mail.smtp.auth", "false");
        sender.setJavaMailProperties(p);
        return sender;
    }
    
    
    /**
     * 发送邮件
     *
     * @param to 接受人
     * @param subject 主题
     * @param html 发送内容
     * @throws MessagingException 异常
     * @throws UnsupportedEncodingException 异常
     */
    public static void sendHtmlMail(String to, String subject, String html) throws MessagingException,UnsupportedEncodingException {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        // 设置utf-8或GBK编码,否则邮件会有乱码
        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
        messageHelper.setFrom(EMAILFORM, "");
        messageHelper.setTo(to);
        messageHelper.setSubject(subject);
        messageHelper.setText(html, true);
        mailSender.send(mimeMessage);
    }
    
    public static void main(String[] args) throws UnsupportedEncodingException, MessagingException {
    	sendHtmlMail("xxxx@qq.com", "测试邮件", "测试");
	}


}

二、服务器上运行

1、服务器上运行需要导入2个jar包,如下

 <!-- 邮件发送 -->
    <dependency>
	    <groupId>activation</groupId>
	    <artifactId>activation</artifactId>
	    <version>1.0.2</version>
	</dependency>
	
	<dependency>
	    <groupId>javax.mail</groupId>
	    <artifactId>mail</artifactId>
	    <version>1.4.7</version>
	</dependency>

 

2、相关的端口、服务器地址放入properties文件中(配置文件中账号密码建议加密,由于只是测试这里没有做加密处理

########  邮件配置     ########
#邮箱
userName=pubu1234@163.com
#邮箱授权码
passWord=hao123000
#发送人
emailForm=pubu1234@163.com
#服务器
host=smtp.163.com
#服务器端口
port=25
#超时时间
timeOut=25000

 

代码 如下:

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Properties;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.apache.log4j.Logger;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;


/**
 * 邮件发送工具类
 * @author zhouhao
 * 2019-03-12
 */
@Component
public class EmailUtil {
	
	private static final Logger  logger = Logger.getLogger(EmailUtil.class);
	private static final String PROPERTIES_DEFAULT = "app.properties";
	private static String host;
    private static Integer port;
    private static String userName;
    private static String passWord;
    private static String emailForm;
    private static String timeOut;
    
    
    static{
        init();
    }
    
    private static JavaMailSenderImpl mailSender = createMailSender();

    /**
     * 初始化
     */
    private static void init() {
    	Properties properties = new Properties();
        try{
            InputStream inputStream =         EmailUtil.class.getClassLoader().getResourceAsStream(PROPERTIES_DEFAULT);
            properties.load(inputStream);
            inputStream.close();
            host = properties.getProperty("host");
            port = Integer.parseInt(properties.getProperty("port"));
            userName = properties.getProperty("userName");
            passWord = properties.getProperty("passWord");
            emailForm = properties.getProperty("emailForm");
            timeOut = properties.getProperty("timeOut");
        } catch(IOException e){
        	logger.error(e.getMessage() , e);
        }
    }
    
   
    /**
     * 邮件发送器
     *
     * @return 配置好的工具
     */
    private static JavaMailSenderImpl createMailSender() {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost(host);
        sender.setPort(port);
        sender.setUsername(userName);
        sender.setPassword(passWord);
        sender.setDefaultEncoding("Utf-8");
        Properties p = new Properties();
        p.setProperty("mail.smtp.timeout", timeOut);
        p.setProperty("mail.smtp.auth", "false");
        sender.setJavaMailProperties(p);
        return sender;
    }
    
    /**
     * 发送邮件
     *
     * @param to 接受人
     * @param subject 主题
     * @param html 发送内容
     * @throws MessagingException 异常
     * @throws UnsupportedEncodingException 异常
     */
    public static void sendHtmlMail(String to, String subject, String html) throws MessagingException,UnsupportedEncodingException {
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        // 设置utf-8或GBK编码,否则邮件会有乱码
        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
        messageHelper.setFrom(emailForm, "");
        messageHelper.setTo(to);
        messageHelper.setSubject(subject);
        messageHelper.setText(html, true);
        mailSender.send(mimeMessage);
    }
    
    public static void main(String[] args) throws UnsupportedEncodingException, MessagingException {
    	
    	//sendHtmlMail("123456789@qq.com", "测试邮件", "测试");
	}


}

其中代码大部分都是参考,只是对代码进行了优化和对实现过程中出现的问题记录,代码 参考如下:https://blog.csdn.net/qq_32371887/article/details/72821291   

如果需要了解更多,请参考javaMail API  、http://www.runoob.com/java/java-sending-email.html   等

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值