JAVA 发送邮件

一、 发送邮件

1.1 依赖

	<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>

1.2 JAVA——api

package com.dpt.service.comm;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.mail.Authenticator;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class MailUtil {

/** 
 * QQ用户发送邮件方法
 * @param mailServer 邮件服务器的主机名:如 "smtp.qq.com" 
 * @param loginAccount 登录邮箱的账号:如 "994784278@qq.com" 
 * @param loginAuthCode 登录qq邮箱时候需要的授权码:可以进入qq邮箱,账号设置那里"生成授权码" 
 * @param sender 发件人 
 * @param recipients 收件人:支持群发 
 * @param emailSubject 邮件的主题 
 * @param emailContent 邮件的内容 
 * @param emailContentType 邮件内容的类型,支持纯文本:"text/plain;charset=utf-8";,带有Html格式的内容:"text/html;charset=utf-8"  
 * @return 
 */
@Deprecated
public static int sendQQEmail(String mailServer,final String loginAccount,final String loginAuthCode,String sender,String[] recipients,  
        String emailSubject,String emailContent,String emailContentType){  
    int seccess=0;  
      
   try {  
        //跟smtp服务器建立一个连接  
        Properties p = new Properties();  
        //设置邮件服务器主机名  
        p.setProperty("mail.host",mailServer);  
        //发送服务器需要身份验证,要采用指定用户名密码的方式去认证  
        p.setProperty("mail.smtp.auth", "true");  
        //发送邮件协议名称  
        p.setProperty("mail.transport.protocol", "smtp");  

        //开启SSL加密,否则会失败  
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);  
        p.put("mail.smtp.ssl.enable", "true");  
        p.put("mail.smtp.ssl.socketFactory", sf);  

        // 创建session  
        Session session = Session.getDefaultInstance(p, new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                //用户名可以用QQ账号也可以用邮箱的别名:第一个参数为邮箱账号,第二个为授权码  
                PasswordAuthentication pa = new PasswordAuthentication(loginAccount,loginAuthCode);
                return pa;  
            }  
        });  

        //设置打开调试状态  
        session.setDebug(true);  

        //可以发送几封邮件:可以在这里 for循环多次  
        //声明一个Message对象(代表一封邮件),从session中创建  
        MimeMessage msg = new MimeMessage(session);
        //邮件信息封装  
        //1发件人  
        msg.setFrom(new InternetAddress(sender));
          
        //2收件人:可以多个  
        //一个的收件人  
        //msg.setRecipient(RecipientType.TO, new InternetAddress("linsenzhong@126.com"));  
          
        InternetAddress[] receptientsEmail=new InternetAddress[recipients.length];
        for(int i=0;i<recipients.length;i++){  
            receptientsEmail[i]=new InternetAddress(recipients[i]);
        }  
          
        //多个收件人  
        msg.setRecipients(RecipientType.TO,receptientsEmail);
          
        //3邮件内容:主题、内容  
        msg.setSubject(emailSubject);  
        //msg.setContent("Hello, 我是debug!!!", );//纯文本  
        msg.setContent(emailContent,emailContentType);//发html格式的文本  
        //发送动作  
        Transport.send(msg);
        System.out.println("邮件发送成功");  
        seccess=1;  
          
    } catch (Exception e) {  
        System.out.println("邮件发送失败: "+e.getMessage());  
        seccess=0;  
    }  
    return seccess;  
}  

/**

  • 163用户发送邮件方法

  • @param addrs 收件人地址

  • @param username 登录邮箱账号

  • @param password 登录邮箱密码

  • @param maileTitle 邮件标题

  • @param content 邮件内容

  • @param emailContentType 邮件内容的类型,支持纯文本:“text/plain;charset=utf-8”;,带有Html格式的内容:“text/html;charset=utf-8”

  • @return “0 失败” | “1 成功”
    /
    @Deprecated
    public static int send163mail(String [] addrs,String username,String password,String maileTitle,String content,String emailContentType){
    int seccess = 0;
    try {
    // 配置发送邮件的环境属性
    final Properties props = new Properties();
    /

    * 可用的属性: mail.store.protocol / mail.transport.protocol / mail.host /
    * mail.user / mail.from
    */
    // 表示SMTP发送邮件,需要进行身份验证
    props.put(“mail.smtp.auth”, “true”);
    props.put(“mail.smtp.host”, “smtp.163.com”);

       // props.put("mail.user", "hardstudylive@163.com");
       //props.put("mail.password", "zx677973");
       
       // 发件人的账号
       props.put("mail.user", username);
       // 访问SMTP服务时需要提供的密码
       props.put("mail.password", password);
    
       // 构建授权信息,用于进行SMTP进行身份验证
       Authenticator authenticator = new Authenticator() {
           @Override
           protected PasswordAuthentication getPasswordAuthentication() {
               // 用户名、密码
               String userName = props.getProperty("mail.user");
               String password = props.getProperty("mail.password");
               return new PasswordAuthentication(userName, password);
           }
       };
       // 使用环境属性和授权信息,创建邮件会话
       Session mailSession = Session.getInstance(props, authenticator);
       
       // 创建邮件消息
       MimeMessage message = new MimeMessage(mailSession);
       // 设置发件人
       InternetAddress form = new InternetAddress(props.getProperty("mail.user"));
       message.setFrom(form);
    
       // 设置收件人
        InternetAddress[] receptientsEmail=new InternetAddress[addrs.length];
           for(int i=0;i<addrs.length;i++){  
               receptientsEmail[i]=new InternetAddress(addrs[i]);
           }
           
       //一个收件人
       //InternetAddress addr = new InternetAddress("994784278@qq.com");
       //message.setRecipient(RecipientType.TO, addr);
        //多个收件人
       message.setRecipients(RecipientType.TO, receptientsEmail);
    
       // 设置抄送
       /*InternetAddress cc = new InternetAddress("262771795@qq.com");
       message.setRecipient(RecipientType.CC, cc);*/
    
       // 设置密送,其他的收件人不能看到密送的邮件地址
    

    /* InternetAddress bcc = new InternetAddress("994784278@qq.com");
    message.setRecipient(RecipientType.CC, bcc);*/

       // 设置邮件标题
       message.setSubject(maileTitle);
    
       // 设置邮件的内容体
       //message.setContent("<a href='http://www.baidu.com'>测试的HTML邮件</a>", "text/html;charset=UTF-8");
       //message.setContent("","text/html;charset=UTF-8");
       message.setContent(content,emailContentType);
       message.setContent("",emailContentType);
    
       // 发送邮件
       Transport.send(message);
       System.out.println("邮件发送成功");  
       seccess=1; 
    

    } catch (Exception e) {
    System.out.println("邮件发送失败: "+e.getMessage());
    seccess=0;
    }
    return seccess;
    }

//main函数测试

// public static void main(String[] args) throws Exception {
//
// /* int result=sendQQEmail(“smtp.qq.com”, “这里输入你的qq邮箱”, “这里输入前面说到的授权码”,
// “发送人的qq邮箱”,
// new String[]{ "262771795@qq.com","994784278@qq.com" }, //这里就是一系列的收件人的邮箱了
// “节日祝福”,
// “欢迎来到我的小窝: ,” + “祝您生活愉快!”,
// “text/html;charset=utf-8”);
//
// System.out.println(“发送结果:”+result); */
//
//
// int res = JavaMailUtils.send163mail(new String[]{“262771795@qq.com”,“994784278@qq.com”,“3389441575@qq.com”},
// "hardstudylive@163.com", “zx677973”, “邮箱测试”,
// “测试的HTML邮件”, “text/html;charset=UTF-8”);
// System.out.println(“发送结果:”+res);
// }

/**
 * 设置邮件通用参数
 * @param host
 * @return 设置到属性对象里面的参数
 */
public static Properties getMailSetParamInfo(String host)
{
	try
	{
    	final Properties p = new Properties();
    	//设置邮件服务器主机名  
        p.setProperty("mail.host",host);  
        //发送服务器需要身份验证,要采用指定用户名密码的方式去认证  
        p.setProperty("mail.smtp.auth", "true");  
        //发送邮件协议名称  
        p.setProperty("mail.transport.protocol", "smtp");  
        //开启SSL加密,否则会失败  
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);  
        p.put("mail.smtp.ssl.enable", "true");  
        p.put("mail.smtp.ssl.socketFactory", sf);  
        return p;
	}
	catch(Exception e)
	{
		e.printStackTrace();
	}
	return null;
}

/**
 * 处理授权后的的Session对象内容
 * @param props 属性对象
 * @param userName 用户名
 * @param password 密码
 * @param QQAuthCode QQ授权码
 * @return Session对象
 */
public static Session getAuthParam(final Properties props, final String userName, final String password, final String QQAuthCode)
{
	try
	{
    	Authenticator authenticator = new Authenticator() {
		    @Override
		    protected PasswordAuthentication getPasswordAuthentication() {
		    	if(QQAuthCode == null)
		    		return new PasswordAuthentication(userName, password);
		    	else
		            return new PasswordAuthentication(userName, QQAuthCode);
		    }
		};
		// 使用环境属性和授权信息,创建邮件会话
		return Session.getInstance(props, authenticator);
	}
	catch(Exception e)
	{
		e.printStackTrace();
	}
	return null;
}
 
/**
 * 操作接收Session对象的参数 进行发送邮件操作内容 
 * @param mailSession sesseion对象
 * @param moreRecipientAddres 多个收件人
 * @param senderAddress 发送邮件地址
 * @param mailTitle 标题
 * @param content 内容
 * @return String "1 成功" | "0 失败" 
 */
public static String OpertionSendMail(
		Session mailSession,
		String[] moreRecipientAddres,
		String senderAddress,
		String mailTitle,
		String content)
{
	    String seccess = "1";
	try
	{
    	MimeMessage message = new MimeMessage(mailSession);
		// 设置发件人
		InternetAddress form = new InternetAddress(senderAddress);
		message.setFrom(form);

		// 设置收件人
		InternetAddress[] receptientsEmail = new InternetAddress[moreRecipientAddres.length];
        for(int i=0;i<moreRecipientAddres.length;i++)
        {  
            receptientsEmail[i]=new InternetAddress(moreRecipientAddres[i]);
        }
        //开通多个收件人
		message.setRecipients(RecipientType.TO, receptientsEmail);
        
		// 设置邮件标题
		message.setSubject(mailTitle);
		
		// 设置内容
		message.setContent(content,"text/html;charset=UTF-8");
		// 发送邮件
		Transport.send(message);
		System.out.println("邮件发送成功");  
    	seccess = "1";
    }
    catch(Exception e)
    {
    	seccess = "0";
    	e.printStackTrace();
    }
    return seccess;
 } 

/**
 * 操作接收Session对象的参数 进行发送邮件操作内容 
 * @param mailSession sesseion对象
 * @param moreRecipientAddres 多个收件人
 * @param senderAddress 发送邮件地址
 * @param mailTitle 标题
 * @param content 内容
 * @return String "1 成功" | "0 失败" 
 */
public static String OpertionSendMail(
		Session mailSession,
		String[] moreRecipientAddres,
		String senderAddress,
		String mailTitle,
		String content,
		String temp)
{
	    String seccess = "1";
	try
	{
    	MimeMessage message = new MimeMessage(mailSession);
		// 设置发件人
		InternetAddress form = new InternetAddress(senderAddress);
		message.setFrom(form);

		// 设置收件人
		InternetAddress[] receptientsEmail = new InternetAddress[moreRecipientAddres.length];
        for(int i=0;i<moreRecipientAddres.length;i++)
        {  
            receptientsEmail[i]=new InternetAddress(moreRecipientAddres[i]);
        }
        //开通多个收件人
		message.setRecipients(RecipientType.TO, receptientsEmail);
        
		// 设置邮件标题
		message.setSubject(mailTitle);
		
		String contents = getTemp(content);
		
		// 设置内容
		message.setContent(contents,"text/html;charset=UTF-8");
		// 发送邮件
		Transport.send(message);
		System.out.println("邮件发送成功");  
    	seccess = "1";
    }
    catch(Exception e)
    {
    	seccess = "0";
    	e.printStackTrace();
    }
    return seccess;
 }

/**
 * @param 服务地址  "smtp.qq.com"  |  "smtp.163.com" | "smtp.ym.163.com"
 * @param 用户名
 * @param 密码
 * @param QQ授权码
 * @param 多个收件人
 * @param 标题
 * @param 内容
 * @return "0 发送失败"  | "1 发送成功" 
 */
public static String SendMailInfo(String serverHost,
		final String userName, 
		final String password,
		final String QQAuthCode,
		String[] RecipientsAddrs,
		String title,
		String content)
{
	try
	{
    	Properties mailSetParamInfo = getMailSetParamInfo(serverHost);
    	Session sessionAuthParam = getAuthParam(mailSetParamInfo,userName,password,QQAuthCode);
    	return OpertionSendMail(sessionAuthParam,RecipientsAddrs,userName,title,content);
	}
	catch(Exception e)
	{
		e.printStackTrace();
		return "0";
	}
	
}
public static String SendMailInfo(String serverHost,
		final String userName, 
		final String password,
		final String QQAuthCode,
		String[] RecipientsAddrs,
		String title,
		String content,
		String temp)
{
	try
	{
    	Properties mailSetParamInfo = getMailSetParamInfo(serverHost);
    	Session sessionAuthParam = getAuthParam(mailSetParamInfo,userName,password,QQAuthCode);
    	return OpertionSendMail(sessionAuthParam,RecipientsAddrs,userName,title,content,temp);
	}
	catch(Exception e)
	{
		e.printStackTrace();
		return "0";
	}
	
}


public static String getTemp(String content){
	
	//设置内容模板
	String cont="<table class='eml_frame_cnt' cellspacing='0' cellpadding='0' border='0' style='width: 660px;table-layout:fixed;margin:0 auto;background-color:#fcf5e2;'>"+
     " <tr>"+
          "<td id='qqmail_cardname' class='eml_title' align='center' style='text-align: center;padding: 25px 20px 0px;font-size: 14px;font-weight: bold;'>"+
          content+
          "</td>"+
      "</tr>"+
     " <tr>"+
          "<td align='center' style='text-align: center;padding: 18px 20px 0px;'>"+
              "<table class='eml_posterCnt' cellspacing='0' cellpadding='0' border='0' style='margin: 0 auto;table-layout: fixed;'>"+
                  "<tr>"+
                      "<td class='eml_posterWrap' width='440' height='330' style='width:440px;height: 330px;border: 1px solid #E9D9C0;padding: 2px;vertical-align: top;'>"+
                          "<embed class='eml_poster' wmode='transparent' id='qqmail_cardurl' parm='card/b572.swf' src='https://res.mail.qq.com/zh_CN/greetingcard/card/b572.swf' quality='high' width='440' height='330' cardid='99572' style='vertical-align:top;' invokeurls='false' allownetworking='all' allowscriptaccess='samedomain'></embed>"
                      +"</td>"+
                  "</tr>"+
              "</table>"+
          "</td>"+
      "</tr>"+
      "<tr>"+
      "</tr>"+
  "</table>";
	
	return cont;
}

public static void main(String[] args) {
	String[] addrs = new String[]{"529992405@qq.com","2225678211@qq.com","1337195270@qq.com"};
	//String[] addrs = new String[]{"994784278@qq.com"};
	/*System.out.println(SendMailInfo("smtp.qq.com", "262771795@qq.com", null, "sgrfwgaamaihbgce", addrs, "你好",
			"4szhan"));
	System.out.println(SendMailInfo("smtp.ym.163.com", "cai.yachao@4szhan.com", "123456", null, addrs, "你好",
			"谢谢"));*/
	System.out.println(SendMailInfo("smtp.163.com", "free_navy@163.com", "lijiawei960622", null, addrs, "hello everyBody",
			"good good study, day day up!","moban"));
}

}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值