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) {
}
}
分享到:
相关推荐
在项目中,`SendMessage`可能是一个包含以上逻辑的类,封装了邮件和短信发送的具体实现。它可能包含不同的方法,如`sendEmail`和`sendSms`,分别对应邮件和短信的发送功能。 总之,使用Java进行邮件和短信发送涉及...
在Java编程语言中,发送邮件和短信是常见的通信方式,特别是在自动化通知、客户服务或系统集成中。...通过阅读提供的`java短信发送`和`java发送邮件`的文件,你可以找到更具体的实现细节和示例代码。
【JSP+SQL2000邮件短信发送系统】是一个基于Java Server Pages(JSP)技术和Microsoft SQL Server 2000数据库构建的系统,主要功能是实现邮件和短信的自动化发送。在这个系统中,JSP作为前端界面,用于用户交互,而...
本文将详细讲解"notify邮件/短信发送"这一主题,以及如何通过插件集成短信邮件服务商,利用Java Messaging Service (JMS) 和RESTful API实现发送功能。 1. **邮件和短信服务**: - **邮件服务**:电子邮件是一种...
使用java发送短信的方法有两个(一个是使用阿里的短信服务,一个是使用uoleem短信服务),使用java发送邮件的方法只有一个,这个方法支持群发和单发
在实际项目中,我们经常需要模拟邮件和短信发送功能,而FakeMessages就能够为我们提供这样的平台,无需实际发送任何消息,避免了对真实用户的打扰和隐私侵犯。这个服务通常被用于自动化测试、演示或者教学场景。 在...
### 二、创建邮件和短信发送触发器 #### 1. **定义触发器类** 首先,我们需要创建一个CLR触发器类。CLR(Common Language Runtime)允许我们在SQL Server中使用.NET Framework语言编写自定义代码。在这个例子中,...
3. **设置邮件属性**:接下来,需要设置邮件的基本属性,包括发件人、收件人、主题和邮件内容。例如: ```vfp oSMTP.Configuration.Fields.Item("urn:schemas-cdo-message:cdo-to") = "13980001234@139.com" ...
异步手机短信和邮件发送消息中心平台构建 本文提出了一种异步手机短信和邮件发送消息中心平台(MCP)的解决方案,以满足分布式环境下企业应用对性能、安全性、稳定性的要求。该平台能够异步传递消息,将彼此独立的...
在上述代码中,你需要实现`MFMailComposeViewControllerDelegate`和`MFMessageComposeViewControllerDelegate`协议,处理邮件和短信发送的结果。 总的来说,“MessAndPhoneAndMail”这个示例项目将引导你了解如何在...
总结来说,Spring Boot项目中实现阿里云、腾讯云的短信发送和邮件发送服务,主要步骤包括:添加依赖、配置服务参数、创建接口和服务实现类、动态注册服务以及在代码中使用服务。这样的封装方式既方便了服务的扩展,...
在MATLAB中发送电子邮件和短信是一项实用的技能,特别是在自动化数据报告、远程监控或系统通知等场景下。本文将深入探讨如何使用MATLAB编写程序来实现这一功能。 首先,我们来了解一下MATLAB发送电子邮件的基本原理...
邮件短信自动通知系统是一种自动化工具,它能够帮助企业或个人在特定事件发生时,如订单确认、账户变动或系统警报等,快速有效地发送批量邮件或短信通知。这种系统的开发涉及多个技术领域,包括服务器管理、数据库...
4. **异常处理**:确保在邮件或短信发送失败时有适当的错误处理和重试机制。 5. **日志管理**:利用`shippinglog`目录下的日志记录任务执行情况,便于追踪和分析问题。 总的来说,这个项目实例展示了如何结合Quartz...
在本文中,我们将深入探讨如何使用SpringBoot框架发送邮件,特别是用于发送短信验证码以增强用户登录功能。这个示例是基于“瑞吉外卖”项目,由黑马程序员提供,通过集成SpringBoot的`spring-boot-starter-mail`依赖...
在这个界面上,开发者或用户可以直接输入短信内容和邮件参数,模拟短信接收和邮件发送的过程,以检查代码的正确性。 6. **组合与原创**:这个程序是将别人的一些组件和自己编写的代码进行了整合,因此可能包含既有...
本资源包主要关注的是使用Java实现短信验证码和邮件发送功能,这两者都是现代Web应用中验证用户身份和安全通信的重要手段。 一、Java短信验证码 1. **SMS验证码原理**:短信验证码是通过向用户手机发送一个随机...
在iOS应用开发中,有时需要集成邮件和短信发送功能,以方便用户快速分享内容或进行沟通。本示例将详细讲解如何使用Objective-C在iOS应用中实现这些功能。 首先,我们来关注邮件发送的部分。iOS提供了`MessageUI`...
微信企业微信短信邮件qq发送消息