2012-01-29 5 views
-1

asp.net WebアプリケーションからSMSを送信するには?Asp.net WebアプリケーションからSMSを送信する方法

どのプロバイダから購入する必要がありますか?

SMSの送信数に制限はありますか?

例外/遅延が発生した場合にメインスレッドに影響しないように、SMSコードを別のスレッドで書き込むべきですか?

誰でもコードサンプルとそれがどのように機能するかの概念を提供できますか?

答えて

1

これを達成するには、何らかの種類の電話プロバイダを利用する必要があります。私は個人的にはTwilioの大ファンです。非常に合理的な料金で、APIlanguage specific API wrappersで公開されています。特に.NETには正式なものも含まれます。

コードサンプルとチュートリアルはhereです。

Twilioエンドポイントに渡されるXMLメッセージを基本的に構築するため、パフォーマンスへの影響は最小限です。重い持ち上げは、より多くのXMLメッセージを受け渡しするシステムとして、あなたの肩から離れています。

うまくいけば、とても使いやすいプラットフォームです。ここ

2

はちょうどあなたのオンラインSMSプロバイダ* /ここ

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Net; 

namespace SMSAPI 
{ 
class SmsSender 
{ 
void send(string uid, string pwd, string no, string msg) 
{ 
String content = "username="+uid+"&password="+pwd; 
try 
{ 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://wwwa.way2sms.com/auth.cl"); 
request.KeepAlive = false; 
byte[] byteArray = Encoding.UTF8.GetBytes(content); 
CookieContainer cookies = new CookieContainer(); 
request.CookieContainer = cookies; 
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"; 
request.ContentLength = byteArray.Length; 
request.ContentType = "application/x-www-form-urlencoded"; 
request.Accept = "*/*"; 
request.Referer = "http://wwwg.way2sms.com//entry.jsp"; 
request.Method = "POST"; 
Stream dataStream = request.GetRequestStream(); 
dataStream.Write(byteArray, 0, byteArray.Length); 
dataStream.Close(); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
foreach (Cookie cook in response.Cookies) 
{ 
cookies.Add(cook); 
} 
Stream stream = response.GetResponseStream(); 
StreamReader reader = new StreamReader(stream); 
string serverData = reader.ReadToEnd(); 
reader.Close(); 
content = "custid=undefined&HiddenAction=instantsms&Action=custfrom450000&login=&pass=&MobNo="+no+"&textArea="+msg; 
request = (HttpWebRequest)WebRequest.Create("http://wwwa.way2sms.com/FirstServletsms?custid="); 
byteArray = Encoding.UTF8.GetBytes(content); 
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"; 
request.ContentLength = byteArray.Length; 
request.ContentType = "application/x-www-form-urlencoded"; 
request.Accept = "*/*"; 
request.CookieContainer = cookies; 
request.Method = "POST"; 
dataStream = request.GetRequestStream(); 
dataStream.Write(byteArray, 0, byteArray.Length); 
dataStream.Close(); 
response = (HttpWebResponse)request.GetResponse(); 
stream = response.GetResponseStream(); 
reader = new StreamReader(stream); 
serverData = reader.ReadToEnd(); 
reader.Close(); 
request = (HttpWebRequest)WebRequest.Create("http://wwwa.way2sms.com/jsp/logout.jsp"); 
byteArray = Encoding.UTF8.GetBytes(content); 
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5"; 
request.ContentLength = byteArray.Length; 
request.ContentType = "application/x-www-form-urlencoded"; 
request.Accept = "*/*"; 
request.CookieContainer = cookies; 
request.Method = "POST"; 
dataStream = request.GetRequestStream(); 
    dataStream.Write(byteArray, 0, byteArray.Length); 
dataStream.Close(); 
response = (HttpWebResponse)request.GetResponse(); 
stream = response.GetResponseStream(); 
reader = new StreamReader(stream); 
serverData = reader.ReadToEnd(); 
reader.Close(); 
} 
catch (ArgumentException e) 
{ 
Console.WriteLine("arg exception"); 
Console.Read(); 

} 
catch (WebException e) 
{ 
Console.WriteLine("web exception"); 
Console.Read(); 
} 
catch (Exception e) 
{ 
Console.WriteLine("exception"); 
Console.Read(); 
} 
} 

static void Main(string[] args) 
{ 
    SmsSender sms = new SmsSender(); 
sms.send("username", "password", "phno_recipient", "message"); 
} 

} 
} 
0

私はSmsHelper クラス

public class SmsHelper 
{ 
    public void SendSms(string toNumber, string content) 
    { 
     bool connected; 

     TcpClient smsServer = OpenConnection("xyz.xy.x.xyz", xyzd, out connected);//require ip and port 

     if (connected) 
     { 
      string sms = content; 

      SendSmsToClient(smsServer, Properties.Settings.Default.FromNumber, toNumber, sms); 

     } 
    } 

    protected static TcpClient OpenConnection(string ip, int port, out bool connected) 
    { 
     string response = string.Empty; 
     string message = string.Empty; 

     TcpClient tcpClient = new TcpClient(); 

     try 
     { 
      ASCIIEncoding ascEn = new ASCIIEncoding(); 

      tcpClient.Connect(ip, port); 

      Stream stream = tcpClient.GetStream(); 

      byte[] bb = new byte[100]; 
      stream.Read(bb, 0, 100); 

      string connect = ascEn.GetString(bb); 

      if (!String.IsNullOrEmpty(connect)) 
      { 
       //authenticating to smsServer 
       string str = "action: login\r\nusername: xxxxx\r\nsecret: integration\r\n\r\n"; 

       byte[] ba = ascEn.GetBytes(str); 
       stream.Write(ba, 0, ba.Length); 
       stream.Flush(); 

       byte[] resp = new byte[100]; 
       stream.Read(resp, 0, 100); 
       response = ascEn.GetString(resp); 
       stream.Read(resp, 0, 100); 
       message = ascEn.GetString(resp); 

       if (response.Contains("Success") && message.Contains("Authentication accepted")) 
       { 
        Console.WriteLine("Authenticated"); 
        stream.Flush(); 
        connected = true; 
        return tcpClient; 
       } 
       else 
       { 
        Console.WriteLine("Credentials error Cant Authenticate"); 
        tcpClient.Close(); 
        connected = false; 
        return tcpClient; 
       } 
      } 

      connected = false; 
      return tcpClient; 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 

     connected = false; 
     return tcpClient; 
    } 

    protected static void CloseConnection(TcpClient client) 
    { 
     client.Close(); 
     Console.WriteLine("Connection Closed process terminated..."); 
    } 


    protected static void SendSmsToClient(TcpClient client, string fromNumber, string toNumber, string smsBody) 
    { 
     string response = string.Empty; 
     string message = string.Empty; 
     string eventMsg = string.Empty; 

     ASCIIEncoding asen = new ASCIIEncoding(); 
     Stream stm = client.GetStream(); 

     string smsSend = string.Format("action: smscommand\r\ncommand: gsm send sms {0} {1} \r\n\r\n", fromNumber, toNumber); 

     byte[] smsCmd = asen.GetBytes(smsSend); 

     stm.Write(smsCmd, 0, smsCmd.Length); 
     stm.Flush(); 

     byte[] smsResp = new byte[1000]; 
     stm.Read(smsResp, 0, 1000); 
     response = asen.GetString(smsResp); 

     if (!String.IsNullOrEmpty(response)) 
     { 
      stm.Read(smsResp, 0, 1000); 
      message = asen.GetString(smsResp); 

      if (!String.IsNullOrEmpty(message)) 
      { 
       stm.Read(smsResp, 0, 1000); 

       eventMsg = asen.GetString(smsResp); 

       if (!String.IsNullOrEmpty(eventMsg)) 
       { 
        String[] list = eventMsg.Split('\n'); 

        foreach (string value in list) 
        { 
         if (value.StartsWith("--END")) 
         { 
          stm.Flush(); 
         } 
        } 
       } 
      } 
     } 
    } 
} 
作成使い捨て&を実装れるtcpClientを使用 "way2smsがconfiureある" confiure
関連する問題