
Security News
/Research
npm Phishing Email Targets Developers with Typosquatted Domain
A phishing attack targeted developers using a typosquatted npm domain (npnjs.com) to steal credentials via fake login pages - watch out for similar scams.
Official Python SDK for Netgsm SMS API. With this SDK, you can send SMS, cancel sent SMS, query reports, and more.
pip install netgsm-sms
from netgsm import Netgsm
# Initialize the SDK
netgsm = Netgsm(
username="YOUR_USERNAME", # Your Netgsm username
password="YOUR_PASSWORD", # Your Netgsm password
appname="YOUR_APP_NAME" # Optional, your application name
)
# Send SMS
response = netgsm.sms.send(
msgheader="HEADER",
messages=[
{
"msg": "Hello, this is a test message.",
"no": "5XXXXXXXXX"
}
]
)
print(response)
For more detailed usage examples and complete API reference, see the documentation directory.
For more examples, see the examples directory.
from netgsm import Netgsm
netgsm = Netgsm(
username="YOUR_USERNAME",
password="YOUR_PASSWORD",
appname="YOUR_APP_NAME" # Optional
)
# Send SMS
response = netgsm.sms.send(
msgheader="HEADER",
messages=[
{
"msg": "Hello world!",
"no": "5XXXXXXXXX"
}
]
)
print(response)
In the examples that come with the SDK, user credentials are read from the .env
file. To run the example applications, create a .env
file in the project root directory and add the following information:
NETGSM_USERNAME=YOUR_USERNAME
NETGSM_PASSWORD=YOUR_PASSWORD
NETGSM_MSGHEADER=YOUR_SMS_HEADER
NETGSM_APPNAME=YOUR_APP_NAME
You can start by copying the .env.example
file:
cp .env.example .env
Then update the .env
file with your own information.
This project is licensed under the MIT License - see the LICENSE file for details.
The SDK provides an advanced error handling mechanism to manage various error conditions that the Netgsm API may return.
from netgsm.exceptions.api_exception import (
ApiException, # Base API exception class
HttpException, # Base class for HTTP errors
BadRequestException, # HTTP 400 errors
UnauthorizedException, # HTTP 401 errors
ForbiddenException, # HTTP 403 errors
NotFoundException, # HTTP 404 errors
NotAcceptableException, # HTTP 406 errors (Netgsm errors usually return this way)
TimeoutException, # Timeout errors
ConnectionException, # Connection errors
ServerException # HTTP 5XX server errors
)
from netgsm import Netgsm
from netgsm.exceptions.api_exception import ApiException, NotAcceptableException
# Initialize Netgsm client
netgsm = Netgsm(username="user", password="pass")
try:
# Send SMS
response = netgsm.sms.send(
msgheader="HEADER",
messages=[
{
"msg": "Test message",
"no": "5XXXXXXXXX"
}
]
)
print(f"SMS sent. JobID: {response.get('jobid')}")
except NotAcceptableException as e:
# Error returned by Netgsm
print(f"Netgsm error: {e.message}")
print(f"HTTP status: {e.http_status}")
print(f"Error code: {e.code}")
except ApiException as e:
# General API error
print(f"API error: {e.message}")
The Netgsm API may return the following error codes with HTTP 406 status code:
Code | Description |
---|---|
20 | Could not be sent due to a problem in the message text or exceeded the standard maximum message character count |
30 | Invalid username, password or no API access permission. If IP restriction exists, request may have been made from an unauthorized IP |
40 | Message header (sender name) is not defined in the system |
50 | IYS controlled submissions cannot be made with your subscriber account |
51 | No IYS Brand information found for your subscription |
60 | Specified JobID not found |
70 | Invalid query. One of the parameters is incorrect or a required field is missing |
80 | Sending limit exceeded |
85 | Duplicate sending limit exceeded. Cannot create more than 20 tasks for the same number within 1 minute |
The SDK automatically recognizes these error codes and includes the relevant description in the NotAcceptableException
. If the error code is not found in the table above, it is reported as "Undefined error code".
For an example of how to catch and handle different error codes, see the Error Codes Example.
try:
response = netgsm.sms.send(...)
except NotAcceptableException as e:
if e.code == "40":
print("Message header is not defined!")
elif e.code == "30":
print("Invalid credentials or no API access!")
else:
print(f"Netgsm error: {e.message}")
For more detailed information, see the Error Handling Example.
FAQs
Netgsm Python SDK for SMS API
We found that netgsm-sms demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
/Research
A phishing attack targeted developers using a typosquatted npm domain (npnjs.com) to steal credentials via fake login pages - watch out for similar scams.
Security News
Knip hits 500 releases with v5.62.0, refining TypeScript config detection and updating plugins as monthly npm downloads approach 12M.
Security News
The EU Cyber Resilience Act is prompting compliance requests that open source maintainers may not be obligated or equipped to handle.