Send Email Directly From Your Code
How does it work?
Connect your email service
We support both transactional email services (Mailgun, Mailjet, Mailtrap, SendinBlue, SendGrid, Amazon SES and Postmark) and personal email services (AOL, Gmail, FastMail, iCloud, Mail.ru, Outlook, Yahoo, Yandex and Zoho).
Create email template
Send email from your code
await emailjs.send(
'YOUR_SERVICE_ID',
'YOUR_TEMPLATE_ID',
{ name: 'James', message: 'Hello!' },
{ publicKey: 'YOUR_PUBLIC_KEY' },
);
FAQ
Is EmailJS a transactional email provider like SendGrid or Resend?
No, EmailJS is an Email Orchestration Layer and a Unified API hub. We do not operate our own email delivery servers; instead, we sit on top of your existing infrastructure.
With EmailJS, you connect your preferred email services—whether it’s a personal Gmail account, a standard SMTP server, or enterprise providers like SendGrid, Resend, or AWS SES. This abstraction gives you complete architectural flexibility: you can route emails through different services dynamically via your code or switch providers instantly from the dashboard, without ever refactoring your core application logic.
Why should I use EmailJS in my app?
Standard transactional providers require direct API authentication (secret keys or passwords) to send messages. Exposing these credentials in client-side code (JavaScript, mobile apps, desktop software) is a critical security risk, as anyone can extract your keys and send unauthorized emails on your behalf.
EmailJS acts as a secure, provider-agnostic proxy. It safely stores all your provider authentication details on the server-side. Your client-side application code never touches secret keys; instead, it triggers predefined templates via our secure abstraction layer.
Does EmailJS support plain text formats and automated AI parsers?
Yes. EmailJS automatically dispatches emails in a multipart format, bundle-packing both the HTML layout and a clean plain-text alternative into a single payload.
If a recipient’s client restricts HTML (such as smartwatches, IoT screens, or strict corporate firewalls), it seamlessly falls back to the plain text version. This ensures maximum deliverability and makes your transactional messages perfectly readable for automated AI parsers and data-extraction agents.
What prevents someone from abusing my Public Key?
A better way to think of EmailJS in terms of security is not as a service that allows you to send emails from your code, but rather as a service that allows you to create a predefined set of emails via the dashboard, and then just trigger the emails from the code. This is quite similar to how emails are usually sent via a proprietary server code, and also to the way products like Intercom or customer.io are working.
To safeguard your monthly request quota from automated bots and script flooding, EmailJS provides standard, easy-to-configure guardrails directly in your dashboard, including Origin Whitelisting (CORS) and IP-based Rate Limiting.
Is there a free tier available for testing and small projects?
Yes. We believe secure communication tools should be accessible to everyone, which is why we offer a generous free plan that includes everything you need to build, test, and launch your project.
Unlike other free services, we never serve ads, and we strictly do not sell your email content, metadata, or logs. The free tier is completely funded by our paid subscribers. Once your application scales and you require higher volume routing, dedicated support, or advanced security controls, you can easily upgrade to a premium plan.