Why Email & SMS Setup Gets Ignored in Bangladesh Implementations
There are two reasons. First, implementation vendors often treat email and SMS as "configuration items" — things to set up quickly at the end of the project, not core functionality. Second, the person configuring Odoo typically has access to the company Gmail account but not the domain's DNS settings, which means they cannot complete the SPF/DKIM setup that determines whether emails land in the inbox or spam.
The result: Odoo sends emails from a generic Gmail address (not the company domain), deliverability is poor, customer-facing confirmations look unprofessional, and SMS either never gets configured or uses a cheap non-masked gateway that shows a random number to recipients — damaging brand trust.
This guide takes a different approach. It covers the full stack: SMTP server, DNS configuration, incoming aliases, SMS gateway selection, and notification template customisation — in the order you should configure them.
An ERP that cannot send a professional order confirmation email is not a business system — it is a database with a UI.
Outgoing Email: SMTP Configuration in Odoo
Odoo sends all outgoing email through Settings → Technical → Email → Outgoing Mail Servers. You need at least one configured server before Odoo can send anything. Here is what each field means and what to enter.
Zoho Mail SMTP — Best for Most Bangladesh Businesses
| Field | Value |
|---|---|
| Description | Zoho Outgoing SMTP |
| SMTP Server | smtp.zoho.com |
| SMTP Port | 587 (STARTTLS) or 465 (SSL) |
| Connection Security | TLS (STARTTLS) — preferred |
| Username | noreply@yourdomain.com (your Zoho email) |
| Password | App-specific password (generate in Zoho account security) |
| From Filter | yourdomain.com |
| Priority | 10 |
Why Zoho: Affordable (free up to 5 users on custom domain), Bangladesh businesses can get a custom domain email setup in 30 minutes, excellent deliverability, and no 2,000/day limit like Gmail. For the company address (info@, sales@, noreply@), Zoho is the right default.
In Zoho, you must generate an App Password (not your account password) for SMTP authentication. Go to Zoho Account → Security → App Passwords → Generate New Password. Use this app password in Odoo — your main Zoho password will not work for SMTP.
Google Workspace (Gmail) SMTP
| Field | Value |
|---|---|
| SMTP Server | smtp.gmail.com |
| SMTP Port | 587 |
| Connection Security | TLS (STARTTLS) |
| Username | your-google-workspace-email@yourdomain.com |
| Password | App Password (generated from Google Account → Security → 2-Step → App Passwords) |
Limitation: Google Workspace limits outgoing SMTP to 2,000 messages per day per user. For Bangladesh companies sending high-volume transactional emails (order confirmations, invoices at scale), this limit is hit quickly. Split across multiple Gmail accounts or use Mailgun/SendGrid for high-volume sends.
Do not use a personal @gmail.com account for Odoo SMTP. Use only Google Workspace (paid, on your own domain). Personal Gmail accounts are blocked from SMTP relay and cannot be used as business sender addresses without significant deliverability issues.
Mailgun or SendGrid — For 10,000+ Emails Per Day
If your Bangladesh business sends high-volume transactional email — invoice batches, customer notifications at scale, supplier reminders — use a dedicated transactional email service. Both Mailgun and SendGrid provide SMTP relay credentials that work identically in Odoo's outgoing mail server configuration.
| Provider | Free Tier | SMTP Host |
|---|---|---|
| Mailgun | 100 emails/day | smtp.mailgun.org |
| SendGrid | 100 emails/day | smtp.sendgrid.net |
| Brevo (Sendinblue) | 300 emails/day | smtp-relay.brevo.com |
Payment from Bangladesh: Mailgun and SendGrid accept international Visa/Mastercard. Brevo sometimes accepts bKash via resellers. Budget approximately $15–35/month for the volume tier most mid-size Bangladesh companies need.
SMTP Provider Decision Matrix for Bangladesh
Deliverability: SPF, DKIM, and DMARC
This is the section most Bangladesh implementations skip — and the reason Odoo emails end up in spam. SPF, DKIM, and DMARC are DNS records that tell email providers worldwide that your domain is authorised to send email and that nobody is spoofing it. Without them, emails from your Odoo system may work perfectly in testing but land in spam for 40–60% of recipients.
SPF Record — Tell the World Which Servers Send Your Email
Add a TXT record to your domain DNS (wherever your domain is registered — often GoDaddy, Namecheap, or a Bangladesh registrar like BDCOM, Fiber@Home). The record name is @ (root of your domain) and the value includes your SMTP provider's SPF include.
v=spf1 include:zoho.com include:mailgun.org ip4:YOUR_ODOO_SERVER_IP ~all
If using Google Workspace: replace include:zoho.com with include:_spf.google.com. The ~all at the end means "soft fail" — emails from unlisted sources are marked suspicious but not outright rejected. Use -all (hard fail) only once you are confident your SPF record is complete.
Your domain can only have ONE SPF TXT record. If you add multiple v=spf1 records, they conflict and break deliverability entirely. Combine all your sending sources into a single SPF record on one line.
DKIM — Digital Signature for Each Email
DKIM adds a cryptographic signature to every email, proving it has not been tampered with in transit. Each SMTP provider generates a unique DKIM TXT record that you add to your domain DNS. The record name looks like: zoho._domainkey.yourdomain.com (prefix varies by provider).
Zoho DKIM: Zoho Admin Console → Domains → SPF/DKIM → Generate DKIM Key → copy the TXT record to your domain DNS.
Google Workspace DKIM: Admin Console → Apps → Google Workspace → Gmail → Authenticate Email → Generate New Record → add to DNS.
Mailgun DKIM: Auto-generated when you verify your domain in Mailgun. Copy the two TXT records provided.
DKIM propagation takes 24–48 hours. Verify with: nslookup -type=TXT zoho._domainkey.yourdomain.com
DMARC — Policy for How Recipients Handle Failed Checks
DMARC tells receiving mail servers what to do if SPF or DKIM checks fail. Start with a monitoring-only policy (p=none) and review the reports before moving to quarantine or reject.
v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com; pct=100
After 30 days with no legitimate email failures in your reports, upgrade to p=quarantine. After another 30 clean days, upgrade to p=reject. This progressive approach ensures you do not accidentally block legitimate email while tightening security.
Incoming Email: Aliases for Bangladesh Operations
Odoo's incoming email aliases turn email addresses into action triggers. Email to sales@yourdomain.com creates a CRM lead. Email to support@yourdomain.com creates a helpdesk ticket. Email to purchase@yourdomain.com routes to the purchase module. This is configured in Settings → Technical → Email → Aliases.
To receive incoming email, you need a catchall alias configured and an incoming mail server. The two options for Bangladesh:
Option 1 — IMAP polling (simpler): Odoo connects to your email server via IMAP every 5 minutes and processes new emails. Configure at Settings → Technical → Email → Incoming Mail Servers. Works with any email provider that supports IMAP (Zoho, Gmail, cPanel). Downside: 5-minute delay between email received and Odoo action.
Option 2 — Postfix relay (faster, server-required): Run Postfix on your Odoo server to receive email in real-time and relay to Odoo's built-in MTA. Requires MX records pointing to your server. Faster but requires Linux server administration knowledge.
For most Bangladesh SMEs, IMAP polling is the right choice. It is simpler to configure, works with existing email providers, and the 5-minute delay is acceptable for most internal workflows. Only implement Postfix relay if you need real-time email-to-ticket creation (e.g., customer support operations with SLA requirements).
Bangladesh SMS Gateways: Selection and Comparison
SMS is uniquely important in Bangladesh business operations. WhatsApp penetration is high but not universal; SMS reaches everyone with a mobile phone. For Odoo, SMS is used for payment reminders, delivery notifications, OTPs, and approval alerts to managers.
SSL Wireless — Best Coverage, Most Reliable
SSL Wireless (SSL EZY) is Bangladesh's largest bulk SMS provider, with connections to all 5 operators: Grameenphone, Robi, Banglalink, Teletalk, and Airtel Bangladesh. Features:
- Masking (Sender ID): Send SMS from your company name (e.g., "ACME-BD") instead of a random number. Requires BTRC approval — 5–7 working days, company trade license required.
- Non-masking: Available immediately. SMS shows a numeric sender ID. No approval required.
- API: REST API with JSON payload. Straightforward documentation. Authentication via username + password or API key.
- Pricing: Negotiated per business. Approximately BDT 0.35–0.55 per SMS on standard plans. Bulk purchase reduces cost.
- Reliability: 98%+ delivery rate on Grameenphone. Slightly lower on Teletalk.
Contact: sslwireless.com — sales team in Dhaka for business accounts.
MiCom — Competitive Pricing, Good for Volume
MiCom is the second-largest Bangladesh bulk SMS provider. REST API similar to SSL Wireless. Pricing is slightly more competitive for high-volume senders (1 million+ SMS/month). Good for manufacturing companies sending daily shift notifications or large-scale customer alerts.
ADN SMS and BulkSMSBD are also available options for smaller budgets. ADN is particularly popular with NGOs and educational institutions. BulkSMSBD has no frills but the cheapest pricing for non-masked volume sends.
Connecting Bangladesh SMS to Odoo
Odoo has a built-in SMS module that works with IAP (Odoo's own SMS credit service) or a custom SMS provider. For Bangladesh, you almost always want a custom SMS provider — IAP credits are expensive and not optimised for Bangladesh operator routes.
SSL Wireless REST API Integration with Odoo
The integration overrides Odoo's sms.sms model's send method to route through SSL Wireless instead of IAP. The module structure:
import requests
def send_sms_ssl_wireless(to_number, message):
"""Send SMS via SSL Wireless REST API."""
# Normalise Bangladesh number to international format
number = to_number.strip().replace(" ", "").replace("-", "")
if number.startswith("0"):
number = "88" + number # Add Bangladesh country code
url = "https://sms.sslwireless.com/pushapi/dynamic/server.php"
payload = {
"api_token": "YOUR_SSL_API_TOKEN",
"sid": "YOUR_SENDER_ID",
"sms": message,
"msisdn": number,
"csmsid": str(hash(f"{number}{message}"))[:15] # unique message ID
}
response = requests.post(url, data=payload, timeout=10)
return response.json()Store api_token and sid in Odoo System Parameters, not hardcoded. The number normalisation step is important — Bangladesh mobile numbers in Odoo are often stored as 01XXXXXXXXX but SSL Wireless requires 8801XXXXXXXXX format.
Bangladesh BTRC enforces Do Not Disturb (DND) rules. Users registered on the national DND registry cannot receive promotional SMS. Masked sender IDs are not exempt. However, transactional SMS (order confirmations, payment alerts, OTPs) are generally exempt from DND restrictions. Structure your SMS content as transactional, not promotional, to maintain delivery rates.
WhatsApp Business Integration
WhatsApp is the dominant messaging platform in Bangladesh business. Every sales rep, vendor, and customer communicates on WhatsApp. Integrating WhatsApp with Odoo gives you a unified communication log and automated notifications.
Odoo 16+ Enterprise: Has a native WhatsApp module. Go to Settings → WhatsApp → Connect Account. Requires a WhatsApp Business Account linked to Meta Business Suite, a dedicated phone number (cannot be your personal WhatsApp number), and approved message templates. Setup takes approximately 2–3 business days including Meta verification.
Odoo Community / Older Versions: Use a WhatsApp Business API provider as middleware. Bangladesh options:
- Twilio WhatsApp API: International provider, excellent documentation, accepts international cards. Monthly cost from $15 plus per-message fees.
- 360dialog: European WhatsApp BSP (Business Solution Provider). Good pricing for high volume. Requires Meta Business verification.
- Local BSPs: Some Bangladesh IT firms resell WhatsApp Business API access — check with your implementation partner.
WhatsApp message templates must be pre-approved by Meta. Template approval takes 24–72 hours. Common Bangladesh use cases requiring templates: order confirmation, payment received, delivery dispatch, meeting reminder. Write your templates in plain English (no promotional language) for faster approval.
Notification Templates: Customising for Bangladesh Operations
Odoo's default email templates are in English and written for a generic global audience. Bangladesh businesses should customise them to reflect local business context, proper formatting, and the company's communication style.
Access templates at Settings → Technical → Email → Templates. Key templates to customise for Bangladesh operations:
- Sale Order Confirmation: Add company trade license number, TIN, and bank account details. Include LC terms if applicable for export customers.
- Invoice: Add Mushak registration number, ensure VAT breakdown is visible, add "Pay within [X] days" text per your credit terms.
- Purchase Order: Add your company's standard terms and conditions in Bangla or English. Include delivery location and contact person.
- Payment Reminder: Customise to reflect Bangladesh business culture — respectful but firm tone. Include bKash/bank transfer details for easy payment.
- Delivery Slip: Add driver name, vehicle number, and Pathao/Steadfast tracking number if applicable.
For the user notification settings that control who receives which Odoo notifications, see the Odoo User Access Rights guide — it covers how to limit notification flood to only relevant users per role. And for post-go-live communication management, the Post Go-Live Hypercare guide includes how to manage notification overload in the first 30 days after launch.
Troubleshooting Common Email & SMS Issues
Emails sending from Odoo but landing in spam
Check SPF, DKIM, DMARC as described above. Also check that the From address in Odoo templates matches the SMTP sending domain. Mismatched From vs. sender domain is a major spam trigger.
"SMTP Authentication Failed" error in Odoo
Almost always one of: (a) you entered your main account password instead of an App Password — generate an App Password in Zoho/Google security settings; (b) 2FA is enabled on the email account but you are not using an App Password; (c) your SMTP provider requires "Less Secure Apps" to be enabled (Gmail legacy accounts only — not applicable to Workspace).
SSL certificate error on SMTP connection
Your Odoo server cannot verify the SMTP provider's SSL certificate. Ensure the ca-certificates package is installed and updated on your server (sudo apt-get update && sudo apt-get install ca-certificates). Also verify the server clock is NTP-synced.
SMS API returning "Invalid Number" for Bangladesh mobile numbers
Format issue. Bangladesh numbers must be 8801XXXXXXXXX for SSL Wireless (9 digits after 880). Numbers stored in Odoo as 01XXXXXXXXX need the country code prepended. Add a normalisation step in your SMS module as shown in the code example above.
SMS delivered but marked as "Failed" in Odoo
The SMS module is checking the API response but the response format from SSL Wireless does not match what Odoo expects. Parse the SSL Wireless response JSON explicitly — check for their status field value ("success" or error codes) rather than relying on HTTP status codes alone.
If your Odoo installation's email setup is broken, spam-filtered, or never configured, I can audit and fix the SMTP, DNS records, SMS gateway, and template configuration in a single remote session. Book a configuration review →
Frequently asked questions
Which SMTP server is best for Odoo in Bangladesh?
For most Bangladesh businesses, Zoho Mail SMTP is the best balance of reliability, price, and deliverability. It supports custom domain email, has no problematic sending limits for typical SME volumes, and the SMTP credentials are simple to configure. Google Workspace is excellent but limits outgoing SMTP to 2,000 messages per day per user. For high-volume transactional email (10,000+/day), use Mailgun or SendGrid with SMTP relay.
Which SMS gateway works best with Odoo in Bangladesh?
SSL Wireless is the most reliable with widest network coverage across all five Bangladesh operators. For Odoo integration, use their REST API with JSON payload. MiCom is a strong second option with competitive pricing for high-volume sends. Both require a business account. Masking (sender ID showing your company name) requires BTRC approval and takes 5–7 working days.
Why are Odoo emails going to spam for Bangladesh recipients?
Most common causes: missing SPF record (add your SMTP provider's SPF include to your domain DNS), no DKIM signature (enable and add DKIM TXT record), or no DMARC policy. SPF + DKIM + DMARC together resolve 90% of deliverability issues. Also check that the From address domain matches your sending domain — mismatches trigger spam filters aggressively.
Can Odoo send WhatsApp messages to Bangladesh customers?
Yes, via WhatsApp Business API. Odoo 16+ Enterprise has a native WhatsApp module requiring a WhatsApp Business Account, a dedicated phone number, and approved message templates. For Community or older versions, use a WhatsApp Business API provider (Twilio, 360dialog) as middleware. Setup takes 2–5 business days including Meta business verification.