`

邮件和短信的发送

 
阅读更多
package com.mes.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.mes.payplus.util.weixin.MD5Util;
import com.sun.mail.smtp.SMTPAddressFailedException;




public class SendEmailUtil {
	public final static String proxy_url="proxy.zte.com.cn";//代理url
	public final static String proxy_port="80";//代理端口
	private static String email_user;
	private static String email_password;
	private static String email_host;
	private static String email_from;
	
	static{
		Properties pro = new Properties();
		String classPath =SendEmailUtil.class.getClassLoader().getResource("").getPath();
		String filePath = classPath + "email.properties";
		try {
			InputStream inStream = new FileInputStream(new File(filePath));
			pro.load(inStream);
		} catch (IOException e) {
			e.printStackTrace();
		}
		email_user = pro.getProperty("email_user");
		email_password = pro.getProperty("email_password");
		email_host=pro.getProperty("email_host");
		email_from=pro.getProperty("email_from");
	}
	/**
	 * 字符串数组转化成List
	 * @param strs
	 * @return
	 */
	public static ArrayList<String> transList(String[] strs){
		ArrayList<String> list=new ArrayList<String>();
		if(strs.length!=0){
			for(int i=0;i<strs.length;i++){
				list.add(strs[i]);
			}
		}
		return list;
	}
	
		//发短信 Post方法没有调通  显示必填参数有些没填 但是看接口说明是完全填了的,,,班车管家
		public static boolean sendSmsPost(String content,String phoneNum) throws Exception {
			boolean flag=false;
			URL url = new URL("http://www.jc-chn.cn/smsSend.do?");
			// 设置请求参数
			String psd1=MD5Util.MD5Encode("qx7q61pf", null);//47x88ytq
			String psd2=MD5Util.MD5Encode("zxyh01"+psd1,null);
			StringBuffer sb = new StringBuffer();
			sb.append("username=zxyh01");
			sb.append("&password="+psd2);
			sb.append("&mobile="+phoneNum);//多个电话号码用,分开
			sb.append("&content=" + URLEncoder.encode(content, "utf-8"));
			sb.append("&dstime=");
			// 通用的请求属性
			//配置代理 方便本地
			URLConnection conn = url.openConnection();
			conn.setRequestProperty("accept", "*/*");
			conn.setRequestProperty("connection", "Keep-Alive");
			conn.setDoOutput(true);
			conn.setDoInput(true);
			// 获取connection对象的输出流
			PrintWriter out = new PrintWriter(conn.getOutputStream());
			// 发送请求参数
			out.print(sb.toString());
			// 定义flush输出流的缓冲
			out.flush();

			// 定义bufferedReader输入流读取URL响应
			BufferedReader in = new BufferedReader(new InputStreamReader(
					url.openStream()));
			String line = "";
			String result = "";
			while ((line = in.readLine()) != null) {
				result += line + "\n";
			}
			out.close();
			in.close();
			System.out.println(result);
			return flag;
		}
		//发短信 GeT方法调通 可以使用
		public static boolean sendSmsGet(String content,String phoneNum) throws IOException {
			boolean flag=false;
			//从配置中读取短信相关信息
			String[] strs =changePhoneUser();
			//把需要的读取出来
			String uri=strs[0];
			String user_name=strs[1];
			String password=strs[2];
			StringBuffer sb = new StringBuffer(uri+"?");
			sb.append("username="+user_name);
			//第一次加密
			String psd1=MD5Util.MD5Encode(password, null);
			//第二次加密
			String psd2=MD5Util.MD5Encode(user_name+psd1,null);
			sb.append("&password="+psd2);
			sb.append("&mobile="+phoneNum);
			sb.append("&plaintext=乐享生活");
			
			sb.append("&content="+URLEncoder.encode(content,"utf-8"));
			sb.append("&dstime=");
			URL url = new URL(sb.toString());
			//配置代理 方便本地测试
			URLConnection conn = null;
			String proxy_set = "false";
			if (proxy_set!=null && proxy_set.equals("true"))
			{
				//HttpProxy proxy = new HttpProxy("proxy.zte.com.cn",80);
				System.setProperty("http.proxyHost", proxy_url);  
				System.setProperty("http.proxyPort", proxy_port);  
				conn = url.openConnection();
			    //conn.connect();
			}
			else
			{
				conn = url.openConnection();
			}
			
			conn.setRequestProperty("accept", "*/*");
			conn.setRequestProperty("connection", "Keep-Alive");
			conn.connect(); 
			BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
			String line = "";
			String result = "";
			while ((line=in.readLine())!=null){
				result += line + "\n";
			}
		    in.close();
		    System.out.println("短信发送返回值:"+result);
		if((!result.contains("-"))&&(!"0".equals(result))){
			flag=true;
		}
		return flag;
		} 
		/**
		 * 从配置文件中读取 短信服务器信息
		 * 动态改变短信服务器 名字  密码 修改位置   email_info.properties
		 */
		public static String[] changePhoneUser(){
			//Prop prop=new Prop("config/email_info.properties");
		/*	String user ="zxyh04";
		    String password="4k0ggxjy";*/
			String user ="zxyh01";
		    String password="qx7q61pf";
		    String url="http://www.jc-chn.cn/smsSend.do";
		    String[] strs={url,user,password};
			return strs;	
		}
		
		/**
		 * 发邮件
		 */
			public static boolean sendEmail(String toEmail, String context, String subject,
					HttpServletRequest request, HttpServletResponse response) {
				boolean flag=false;
				Properties props = new Properties();
				Authenticator auth = new Authenticator() {
					@Override
					protected PasswordAuthentication getPasswordAuthentication() {
						return new PasswordAuthentication(email_user,email_password);
					}
				};
				props.put("mail.smtp.host", email_host);
				props.put("mail.smtp.auth", "true");
				props.put("mail.from", email_from);
				props.put("mail.smtp.reportsuccess", true);
				Session session = Session.getInstance(props, auth);
				session.setDebug(false);
				StringBuffer sb = new StringBuffer();
				try {
					MimeMessage msg = new MimeMessage(session);
					msg.setFrom();
					msg.setRecipients(Message.RecipientType.TO, toEmail);
					msg.setSubject(subject);
					msg.setSentDate(new Date());
					msg.setText(context);
					Transport.send(msg);
					flag=true;
				} catch (SMTPAddressFailedException ex) {
					// 250是发送OK的 捕获到250 Mail OK
					// 550 User not found: 461503821@163.com 550错误 只能获取到Invalid
					// Addresses没有发现这个邮箱
					int message=ex.getReturnCode();
					if(message==250){
						flag=true;
					}
					System.out.println("SMTPAddressFailedException---------------------------"+ ex.getReturnCode());
					System.out.println("SMTPAddressFailedException---------------------------"+ ex.getMessage());
					sb.append("SMTPAddressFailedException---------------------------"+ ex.getMessage() + "\t");
				} catch (MessagingException mex) {
					String message=mex.getMessage();
					if(message.contains("250")){
						flag=true;
					}
					System.out.println("MessagingException------" + mex.getMessage());
					sb.append("MessagingException------" + mex.getMessage());
				} catch (Exception e) {
					e.getMessage();
				}
				return flag;
			}
		
		public static void main(String[] args) {
			
		}
	}
		


分享到:
评论

相关推荐

    使用Java进行邮件短信发送

    在项目中,`SendMessage`可能是一个包含以上逻辑的类,封装了邮件和短信发送的具体实现。它可能包含不同的方法,如`sendEmail`和`sendSms`,分别对应邮件和短信的发送功能。 总之,使用Java进行邮件和短信发送涉及...

    java发送邮件和发送短信代码

    在Java编程语言中,发送邮件和短信是常见的通信方式,特别是在自动化通知、客户服务或系统集成中。...通过阅读提供的`java短信发送`和`java发送邮件`的文件,你可以找到更具体的实现细节和示例代码。

    JSP+SQL2000邮件 短信发送系统

    【JSP+SQL2000邮件短信发送系统】是一个基于Java Server Pages(JSP)技术和Microsoft SQL Server 2000数据库构建的系统,主要功能是实现邮件和短信的自动化发送。在这个系统中,JSP作为前端界面,用于用户交互,而...

    notify 邮件/短信发送

    本文将详细讲解"notify邮件/短信发送"这一主题,以及如何通过插件集成短信邮件服务商,利用Java Messaging Service (JMS) 和RESTful API实现发送功能。 1. **邮件和短信服务**: - **邮件服务**:电子邮件是一种...

    使用java发送(邮件,短信)帮助类

    使用java发送短信的方法有两个(一个是使用阿里的短信服务,一个是使用uoleem短信服务),使用java发送邮件的方法只有一个,这个方法支持群发和单发

    FakeMessages一个虚拟的邮件和短信服务提供商

    在实际项目中,我们经常需要模拟邮件和短信发送功能,而FakeMessages就能够为我们提供这样的平台,无需实际发送任何消息,避免了对真实用户的打扰和隐私侵犯。这个服务通常被用于自动化测试、演示或者教学场景。 在...

    新增用户就发送邮件和手机短信的SqlServer触发器

    ### 二、创建邮件和短信发送触发器 #### 1. **定义触发器类** 首先,我们需要创建一个CLR触发器类。CLR(Common Language Runtime)允许我们在SQL Server中使用.NET Framework语言编写自定义代码。在这个例子中,...

    VFP种实现发送邮件,不带附件,变通给手机发送短信。

    3. **设置邮件属性**:接下来,需要设置邮件的基本属性,包括发件人、收件人、主题和邮件内容。例如: ```vfp oSMTP.Configuration.Fields.Item("urn:schemas-cdo-message:cdo-to") = "13980001234@139.com" ...

    异步手机短信和邮件发送消息中心平台构建.docx

    异步手机短信和邮件发送消息中心平台构建 本文提出了一种异步手机短信和邮件发送消息中心平台(MCP)的解决方案,以满足分布式环境下企业应用对性能、安全性、稳定性的要求。该平台能够异步传递消息,将彼此独立的...

    iOS 打电话发邮件读短信功能实现

    在上述代码中,你需要实现`MFMailComposeViewControllerDelegate`和`MFMessageComposeViewControllerDelegate`协议,处理邮件和短信发送的结果。 总的来说,“MessAndPhoneAndMail”这个示例项目将引导你了解如何在...

    Springboot阿里、腾讯短信和邮件发送service封装

    总结来说,Spring Boot项目中实现阿里云、腾讯云的短信发送和邮件发送服务,主要步骤包括:添加依赖、配置服务参数、创建接口和服务实现类、动态注册服务以及在代码中使用服务。这样的封装方式既方便了服务的扩展,...

    matlab发邮件或短信.zip_matlab发邮件_matlab程序自动发邮件_短信_自动发短信

    在MATLAB中发送电子邮件和短信是一项实用的技能,特别是在自动化数据报告、远程监控或系统通知等场景下。本文将深入探讨如何使用MATLAB编写程序来实现这一功能。 首先,我们来了解一下MATLAB发送电子邮件的基本原理...

    邮件短信自动通知系统(转)

    邮件短信自动通知系统是一种自动化工具,它能够帮助企业或个人在特定事件发生时,如订单确认、账户变动或系统警报等,快速有效地发送批量邮件或短信通知。这种系统的开发涉及多个技术领域,包括服务器管理、数据库...

    使用quartz的项目实例(发送邮件和短信)

    4. **异常处理**:确保在邮件或短信发送失败时有适当的错误处理和重试机制。 5. **日志管理**:利用`shippinglog`目录下的日志记录任务执行情况,便于追踪和分析问题。 总的来说,这个项目实例展示了如何结合Quartz...

    安卓后台邮件转发短信

    在这个界面上,开发者或用户可以直接输入短信内容和邮件参数,模拟短信接收和邮件发送的过程,以检查代码的正确性。 6. **组合与原创**:这个程序是将别人的一些组件和自己编写的代码进行了整合,因此可能包含既有...

    java短信验证码、邮件发送

    本资源包主要关注的是使用Java实现短信验证码和邮件发送功能,这两者都是现代Web应用中验证用户身份和安全通信的重要手段。 一、Java短信验证码 1. **SMS验证码原理**:短信验证码是通过向用户手机发送一个随机...

    【瑞吉外卖】SpringBoot使用邮件发送短信验证码--完善用户登录功能

    在本文中,我们将深入探讨如何使用SpringBoot框架发送邮件,特别是用于发送短信验证码以增强用户登录功能。这个示例是基于“瑞吉外卖”项目,由黑马程序员提供,通过集成SpringBoot的`spring-boot-starter-mail`依赖...

    iOS开发中实现邮件和短信发送的简单示例

    在iOS应用开发中,有时需要集成邮件和短信发送功能,以方便用户快速分享内容或进行沟通。本示例将详细讲解如何使用Objective-C在iOS应用中实现这些功能。 首先,我们来关注邮件发送的部分。iOS提供了`MessageUI`...

    微信企业微信短信邮件qq发送消息

    微信企业微信短信邮件qq发送消息

Global site tag (gtag.js) - Google Analytics