消息推送 邮件推送 (javaMail实现)

javaMail实现邮件的推送

javaMail不解释了,需要的自己去百度

直接说实现的步骤

1.设置自己的邮箱为发件邮箱,我这里是qq邮箱

 

 

好了,保存好你的授权码,很重要的

做到这里你已经完成了很大的工作,现在就上代码:

//设置基本参数

Properties prop = new Properties();
prop.setProperty("mail.host", "smtp.qq.com");
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.auth", "true");
Session session = Session.getInstance(prop);
session.setDebug(true);



	Transport ts = session.getTransport();
		ts.connect("smtp.qq.com", "你的qq邮箱", "生成的授权码");
		Message message = createEmail(session,newsobj);
		ts.sendMessage(message, message.getAllRecipients());
		ts.close();

好了,基本的设置完成,现在开始发邮件了

		
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress("2498414290@qq.com"));
        //获取邮箱 
        //自己实现的是从数据库中获取用户的邮箱,遍历
        Map<Integer, String> selectEmail = selectEmail();
        Object[] arr =  selectEmail.values().toArray();
		  InternetAddress[] sendTo = new InternetAddress[arr.length];  
		  
		  for (int i = 0; i < arr.length; i++) {  
	            System.out.println("发送到:" + arr[i]);  
	            sendTo[i] = new InternetAddress((String) arr[i]);  
	        }  
	            //设置收信人
		//  mimeMsg.setRecipients(javax.mail.internet.MimeMessage.RecipientType.TO, sendTo);  
	            message.setRecipients(Message.RecipientType.TO, sendTo);
	           // message.addRecipients(Message.RecipientType.TO, sendTo);
	            
	            //设置邮件内容 数据库获取

	            
	            List select = select(newsobj);
			     message.setSubject(select.get(1).toString()); 
			     String info = select.get(0).toString();
			     message.setContent(info, "text/html;charset=UTF-8");
			     message.saveChanges();
        
		  return message;
     
     
      

到这里已经完了,可能觉得不够详细,没事,我贴上完整的代码:

package com.email;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import com.entity.News;
import com.util.JDBCUtil;

public class EmailUtil {

	
public void email(News newsobj) {
	Properties prop = new Properties();
    prop.setProperty("mail.host", "smtp.qq.com");
    prop.setProperty("mail.transport.protocol", "smtp");
    prop.setProperty("mail.smtp.auth", "true");
    Session session = Session.getInstance(prop);
    session.setDebug(true);
    try {
    	Transport ts = session.getTransport();
		ts.connect("smtp.qq.com", "2498414290@qq.com", "ececbpqvhidseaha");
		Message message = createEmail(session,newsobj);
		ts.sendMessage(message, message.getAllRecipients());
		ts.close();
	} catch (MessagingException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	}
	
	public Message createEmail(Session session,News newsobj) throws Exception{
		
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress("2498414290@qq.com"));
        //获取邮箱
        Map<Integer, String> selectEmail = selectEmail();
		/*
		 * for (Integer in : selectEmail.keySet()) { //map.keySet()返回的是所有key的值 String
		 * str = selectEmail.get(in);//得到每个key多对用value的值 // arr[in]=str;
		 * 
		 * 
		 * }
		 */
        Object[] arr =  selectEmail.values().toArray();
		  InternetAddress[] sendTo = new InternetAddress[arr.length];  
		  
		  for (int i = 0; i < arr.length; i++) {  
	            System.out.println("发送到:" + arr[i]);  
	            sendTo[i] = new InternetAddress((String) arr[i]);  
	        }  
	            //设置收信人
		//  mimeMsg.setRecipients(javax.mail.internet.MimeMessage.RecipientType.TO, sendTo);  
	            message.setRecipients(Message.RecipientType.TO, sendTo);
	           // message.addRecipients(Message.RecipientType.TO, sendTo);
	            
	            //设置邮件内容 数据库获取

	            
	            List select = select(newsobj);
			     message.setSubject(select.get(1).toString()); 
			     String info = select.get(0).toString();
			     message.setContent(info, "text/html;charset=UTF-8");
			     message.saveChanges();
        
		  return message;
     
     
      
    }
	
	 //邮箱查询
    public Map<Integer, String> selectEmail() {
    	//链接数据库查询所有用户的邮箱
    	//原生sql查询
		Connection conn  = null;
		Statement st = null;
		ResultSet rs = null;
		Map<Integer, String> map = new HashMap<Integer, String>();
		try {
			//1. 注册驱动 
			conn = JDBCUtil.getConn();
			//3. 创建statement , 跟数据库打交道,一定需要这个对象
			st = conn.createStatement();
			
			//4. 执行查询 , 得到结果集
			//查询用户列表下权限为1的普通用户的邮箱
			
			String sql = "select email from user where role = 1;";
			rs = st.executeQuery(sql);
			//遍历
		
			for (int i =0;rs.next();i++) {
				String string = rs.getString("email");
				map.put(i, string);
				System.out.println(string);
		
				
			}
			
		} catch (Exception e) {
			e.printStackTrace();
			
		}finally{
			JDBCUtil.release(conn, st, rs);
		}
    
		return map;
    }
    
    //查询邮件内容
    public List select(News newsobj) {
    	//链接数据库查询所有用户的邮箱
    	//原生sql查询
		Connection conn  = null;
		Statement st = null;
		ResultSet rs = null;
		List list = new ArrayList();
		try {
			//1. 注册驱动 
			conn = JDBCUtil.getConn();
			//3. 创建statement , 跟数据库打交道,一定需要这个对象
			st = conn.createStatement();
			
			//4. 执行查询 , 得到结果集
			//查询用户列表下权限为1的普通用户的邮箱
			// order by addtime desc limit 0,1 ;
			String sql = "select title,content from news order by addtime desc limit 0,1;";
			rs = st.executeQuery(sql);
		
			while(rs.next()){
			
		
				String string = rs.getString("Content");
			
					list.add(0,rs.getString("Content"));
					list.add(1,rs.getString("title"));
			}
			}
			
	
			catch (Exception e) {
			e.printStackTrace();
			
		}finally{
			JDBCUtil.release(conn, st, rs);
		}
    
		return list;
    }
    
}

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
可以使用JavaMail API来实现每日推送银行账单。首先,需要连接到银行的邮件服务器,然后使用SMTP协议发送邮件。以下是一个简单的Java代码示例: ```java import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class BankStatementSender { public static void main(String[] args) { // 邮件服务器配置 String host = "smtp.example.com"; String port = "587"; String username = "your_username"; String password = "your_password"; // 收件人和发件人信息 String from = "your_email@example.com"; String to = "recipient_email@example.com"; String subject = "Daily Bank Statement"; // 邮件内容 String body = "Here is your daily bank statement."; // 配置邮件客户端 Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", host); props.put("mail.smtp.port", port); // 创建邮件会话 Session session = Session.getInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { // 创建邮件消息 Message message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject(subject); message.setText(body); // 发送邮件 Transport.send(message); System.out.println("Bank statement sent successfully."); } catch (MessagingException e) { throw new RuntimeException(e); } } } ``` 注意:需要替换邮件服务器的配置、收件人和发件人的信息以及邮件内容。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值