【问题标题】:How to send SMS using Java [closed]如何使用 Java 发送 SMS [关闭]
【发布时间】:2011-01-15 03:08:54
【问题描述】:

我想通过网络应用程序向手机发送短信,可以吗?我该怎么做?

【问题讨论】:

  • 您的搜索也很感激。这里有很多关于发送短信的问题。
  • @Shoban 我认为表达您的担忧的最佳方式是使用网站为您提供的机制,例如拒绝投票。当然 cmets 是这些方法之一,但无论问题的质量如何,都不需要粗鲁和讽刺的回答,只会拖累网站。

标签: java web-applications sms


【解决方案1】:

最简单的方法是使用 SMS 网关。

那里有很多,我用过的一个是Clickatel,我只需向它发布一个XML 请求,网关就可以完成其余的工作。

我已经使用 java 和 apache commons HTTP Client 完成了这项工作

【讨论】:

    【解决方案2】:

    Here你可以在source forge中找到一个Java SMS API项目。

    除此之外,您还需要一个Sms Gateway 用于基础架构。一些公司为您提供 API,让您可以轻松地制作程序。

    【讨论】:

      【解决方案3】:

      您可以使用这个免费的 Java 示例程序,使用连接到您计算机的 GSM 调制解调器从您的 PC 将 SMS 发送到您的 COM 端口。您还需要从 Sun 下载并安装 Java comm api。

      此程序需要以下 java 文件才能运行。

      1. SerialConnection.java(此文件用于从您的 java 程序连接到您的 COM 端口)

      2. SerialConnectionException.java(此文件用于处理 Java 程序中的串行连接异常)

      3. SerialParameters.java(此程序用于设置您的 COM 端口属性,以便从您的 java 程序连接到您的 COM 端口)

      4. Sender.java(这是实现可运行并使用串行连接发送短信的程序)

      5. SMSClient.java(这个java类是主类,可以在你自己的java程序中实例化并调用来发送短信。这个程序反过来会在内部使用以上四个文件来发送你的短信) .

      下载发送短信 Java 示例程序文件

      /*
       *
       * A free Java sample program 
       * A list of java programs to send SMS using your COM serial connection
       * and a GSM modem
       *
       * @author William Alexander
       * free for use as long as this comment is included 
       * in the program as it is
       * 
       * More Free Java programs available for download 
       * at http://www.java-samples.com
       *
       *
       * Note: to use this program you need to download all the 5 java files
       * mentioned on top
       *
       */
      public class SMSClient implements Runnable{
      
        public final static int SYNCHRONOUS=0;
        public final static int ASYNCHRONOUS=1;
        private Thread myThread=null;
      
        private int mode=-1;
        private String recipient=null;
        private String message=null;
      
        public int status=-1;
        public long messageNo=-1;
      
      
        public SMSClient(int mode) {
            this.mode=mode;
          }
      
        public int sendMessage (String recipient, String message){
          this.recipient=recipient;
          this.message=message;
          //System.out.println("recipient: " + recipient + " message: " + message);
          myThread = new Thread(this);
          myThread.start();
      //    run();
          return status;
          }
          public void run(){
      
          Sender aSender = new Sender(recipient,message);
      
          try{
            //send message
                aSender.send ();
      
               // System.out.println("sending ... ");
      
            //in SYNCHRONOUS mode wait for return : 0 for OK,
            //-2 for timeout, -1 for other errors
            if (mode==SYNCHRONOUS) {
                while (aSender.status == -1){
                  myThread.sleep (1000);
                }
            }
            if (aSender.status == 0) messageNo=aSender.messageNo ;
      
          }catch (Exception e){
      
              e.printStackTrace();
      
          }
      
          this.status=aSender.status ;
      
          aSender=null;
      
      
        }
      }
      

      【讨论】:

      • 谢谢ratty,我用net bean构建了这个,请问我知道如何发送短信,你能告诉我相关步骤吗
      • 从谷歌复制一些东西对我来说似乎不是一个好的答案。
      • 专注于解决方案不要打扰源mr.valentin
      • 使用连接到 PC 的 gsm 调制解调器发送短信速度很慢。 gsm 调制解调器每秒可以发送多少条消息是有一定限制的。所以最好使用运营商提供的短信网关。
      【解决方案4】:

      步骤 1。 下载 Mail.jar 和 Activation.jar(请参阅参考资料中的链接)并保存到计算机本地驱动器上的 Java 库目录中。

      第 2 步。

      在您的 Java 集成开发环境 (IDE) 中启动一个新的 Java 类并将其命名为“MyMobileJava.java”。

      第 3 步。

      在 Java 类的开头输入以下 Java 库。这些库包括用于发送 SMS 文本消息所需的 Java 邮件和通信 API 资源以及其他支持输入/输出和 Internet 类库。

      import java.io.*;
      import java.net.InetAddress;
      import java.util.Properties;
      import java.util.Date;
      import javax.mail.*;
      import javax.mail.internet.*;
      import javax.activation.*;
      

      第 4 步 将以下 Java 代码放在库导入语句之后,以便实例化 Java 类并为默认 SMS 文本消息赋值。

      public class SMTPSend {
      
              public SMTPSend() {
              }
      
              public void msgsend() {
                String username = "MySMSUsername";
                String password = "MyPassword";
                String smtphost = "MySMSHost.com";
                String compression = "My SMS Compression Information";
                String from = "mySMSUsername@MySMSHost.com";
                String to = "PhoneNumberToText@sms.MySMSHost.com";
                String body = "Hello SMS World!";
                Transport myTransport = null;
      

      第 5 步 创建 Java 代码以创建一个新的通信会话,该会话随后将用于配置文本消息中包含的信息。然后将准备好发送此信息。在第四步中输入的代码的末尾,在您的 Java 类中输入以下 Java 代码。

       try {
          Properties props = System.getProperties();
          props.put("mail.smtp.auth", "true");
          Session mailSession = Session.getDefaultInstance(props, null);
          Message msg = new MimeMessage(mailSession);
          msg.setFrom(new InternetAddress(from));
          InternetAddress[] address = {new InternetAddress(to)};
          msg.setRecipients(Message.RecipientType.TO, address);
          msg.setSubject(compression);
          msg.setText(body);
          msg.setSentDate(new Date());
      

      第 6 步 通过连接到您的 SMS 主机地址、保存对消息的更改,然后发送信息来发送文本消息。为此,请输入以下 Java 代码以完成 Java 类。

           myTransport = mailSession.getTransport("smtp");
            myTransport.connect(smtphost, username, password);
            msg.saveChanges();
            myTransport.sendMessage(msg, msg.getAllRecipients());
            myTransport.close();
           } catch (Exception e) {
              e.printStackTrace();
            }
         }
      
         public static void main(String[] argv) {
           SMTPSend smtpSend = new SMTPSend();
           smtpSend.msgsend();
         }
       } //enter code here`
      

      【讨论】:

      • 可能应该在代码的每一行之前添加四个空格;然后它会突出显示,而不是全部放在一行上。
      • 同时选择您的代码并按 ctrl+K 也会这样做。
      【解决方案5】:

      最简单的方法是找一个支持短信的运营商通过邮件..

      例如。你有 Telia/Comviq/Chello 之类的。如果您发送电子邮件至; yournumber@youroperator.com 它将通过短信将您的电子邮件发送到您的手机。

      【讨论】:

        【解决方案6】:

        请查看 SMSLib (http://smslib.org),这是一个使用 GMS 调制解调器或手机发送和接收短信的开源库。这真是一个很棒的图书馆。

        【讨论】:

          【解决方案7】:

          我编写了一个小型 maven 库,用于访问瑞士移动运营商 Sunrise 和 Orange 的免费(仅供客户)网络界面。你可以在http://github.com/resmo/libjsms找到源代码

          【讨论】:

            【解决方案8】:

            只需检索所有手机电子邮件转短信 (SMS Gateway) 地址,然后向该电子邮件转短信地址发送电子邮件。

            【讨论】:

              猜你喜欢
              • 2010-10-07
              • 1970-01-01
              • 2010-12-28
              • 1970-01-01
              • 2011-07-24
              • 2013-10-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多