Email sending

Customer support. Even the experts need help sometimes. Success with a transactional email app means getting quick and reliable support—whether that’s in the form of live chat, email, or phone. The best tools also have an extensive and updated knowledge base so you can help yourself when possible.

Email Composer/ Editor

Click the New Mail button in the left pane, to open the Zoho Mail composer, with Rich Text Formatting options. The composer opens in a tab, where you can draft your email. You can choose the inline editor or the new window option to reply to/forward emails from the Settings. The default settings for the Composer can be customized from the Compose Settings.

  • From: The From address can be selected from the drop-down which contains the main email address of your account, your email aliases, and the external email addresses configured. The corresponding Display name will also be displayed next to the selected email address. Refer here for instructions to configure external email address as a From Address.
  • To: Specify the direct recipients of the email here. The organization email addresses will be available from the AutoFill. Click the To Label, to open the address book and choose an email address from the address book.
  • Cc (Carbon Copy): Specify the recipients to whom the email should be copied. When you add an email address in Cc, other recipients will be able to view the addresses.
  • Bcc: (Blind Carbon Copy): Specify the recipients to whom the email should be copied, without exposing the email addresses to others. The other recipients will not know about the email addresses in Bcc.
  • Subject: Title or a Short Summary of the contents of the email

Mail Content – Richly Formatted Mail

Zoho Mail provides a WYSIWYG (What You See Is What You Get) editor, which provides options to send a richly formatted email with images, tables, hyperlinks, and even smileys. The formatting options allow you to personalize the layout and your email. The built-in Spell-checker helps you to perform a spell check in your outgoing emails, across multiple languages. You can choose the encoding for the outgoing email. It is recommended that you use UTF-8 for outgoing emails, as it is capable of encoding all characters in Unicode.

Plain Text Mail

A plain text email is one that contains only the content of the email, without any formatting such as Bold, Italics etc. You can choose the Plain Text option to send an email without any formatting. Click the drop-down in the right corner of the composer, and choose Plain text mode.

The system will request confirmation for converting Rich Text to Plain text. On confirming, the formatting toolbar will be hidden and you will see only the spell check icon. Any formatting changes made to the content and signatures will be lost along with any media or table inserted. These formatting changes will also be reflected when you save the email as a draft or template. Hence, the message will be sent as a plain text email.

To revert back to the Rich Text mode, click the same drop-down and choose Rich Text mode. Now you will be able to format the text that you’ve inserted, add tables, images etc. Even if you revert to Rich Text Mode, the prior formatting will not be restored.

Enhanced Spell check and Composer language

Zoho Mail has an inbuilt enhanced spell checker to correct your spelling and grammar errors on the go. After composing your email, click the Spell check icon. The misspelled words or grammar errors in your email content will be highlighted. Click the highlighted words to see a list of possible words with the nearest spelling or alternative words. You can also add a word to your custom dictionary by clicking the Add to dictionary icon so that it doesn’t get flagged the next time you spell-check an email.

If you click the drop-down next to the Spell check icon, you will be shown a list of languages that you can choose from. This primarily means the language against which your email content will be checked for validation during a spell check. It does not refer to the language you can compose the email in. For example, if you’ve chosen English (US) from the composer language listing, the email content will be checked with an American English dictionary, and relevant spelling and grammar suggestions will be provided.

More options

While composing an email you can also set certain preferences in the compose window before you send the email. You can set the priority for the email, insert a signature/template, change the encoding format and ask for read receipts from the recipient end.


Recipients are the people you are sending the email to. You will need to type the email address for each recipient. Most of the time, you’ll add recipients to the To: field, but you can also add recipients to the Cc: or Bcc: fields.

Cc stands for carbon copy. This is used when you want to send an email to someone who is not the main recipient. This helps to keep these people in the loop while letting them know that they probably don’t need to reply to your message. Bcc stands for blind carbon copy. It works almost the same way as Cc, except that all of the email address in the Bcc fields are hidden, making it ideal when emailing a large number of recipients or when privacy is needed.

Cc and Bcc

Cc stands for carbon copy. This is used when you want to send an email to someone who is not the main recipient. This helps to keep that person in the loop while letting them know that they probably don’t need to reply to your message.Bcc stands for blind carbon copy. It works almost the same way as Cc, except all of the email address in the Bcc fields are hidden, making it ideal when emailing a large number of recipients or when privacy is needed.

To send an email:

Composing an email

Selecting contacts

Typing a message in the body field

If the person you are emailing is already one of your contacts, you can start typing that person’s first name, last name, or email address, and Gmail will display the contact below the To: field. You can then press the Enter key to add the person to the To: field.

Adding a current contact

Adding attachments

An attachment is simply a file (like an image or document) that is sent along with your email. For example, if you are applying for a job, you might send your resume as an attachment, with the body of the email being the cover letter. It’s a good idea to include a message in the body of your email explaining what the attachment is, especially if the recipient isn’t expecting an attachment.

To add an attachment:

Clicking the attachment button

Attaching a file

Uploading an attachment

Email formatting

Formatting options

Best transactional email service for transactional emails and email marketing in one

A screenshot of Sendgrid, our pick for the best transactional email app for transactional emails and email marketing in one

If you want to manage your transactional emails and marketing emails under one roof, SendGrid is the way to go. Transactional emails are at the core of SendGrid’s business, so it’s no surprise it’s a killer in this domain. And it stacks up really nicely against some other big names.

For example: SendGrid outshines Mailchimp with its intuitive email editor as well as its comprehensive analytics. SendGrid offers an expert insights report, deliverability metrics, category comparisons, and more. And because SendGrid is a transactional email app first and foremost, it has all the features—whereas the standard Mailchimp UI and data aren’t present in Mailchimp Transactional Email. Similarly, SendGrid outshines other apps like Sendinblue with its API integrations and support for multiple frameworks like Java, PHP, Go, Python, and C#.

SendGrid’s email templates are great for customizing and branding emails. There are a lot of options to add your brand logo, alter the design, and even add your own code. I was also impressed by their email testing—you can do inbox rendering and test your emails for how they look and deliver on different devices.

The email testing capabilities, combined with SendGrid’s comprehensive analytics, make it super easy to continually improve your emails based on feedback. So if you want to do your email marketing and transactional emails in one place—without sacrificing on quality of the transactional side of things—SendGrid is my pick. (You can also purchase marketing and transactional email services separately if you don’t want to commit to both services off the bat.)

Send emails through SendGrid for new Typeform entries

Thank Shopify customers for new orders with SendGrid emails

Best transactional email service for Mailchimp users

A screenshot of Mailchimp Transaction Email (formerly Mandrill), our pick for the best transactional email app for Mailchimp users

The email marketing leader Mailchimp designed Mailchimp Transactional Email (formerly Mandrill) as a paid add-on, so any Mailchimp user has a viable option for sending transactional emails straight from Mailchimp. So if you’re using Mailchimp as your email marketing tool, there’s no reason to use a different app for transactional emails.

Mailchimp has robust API documentation—which was helpful for me as I navigated the system—and you can start sending via transactional API or an SMTP integration. And there’s a lot of room for setting up rules and optimizing customer journeys. For example, you can set up a "Reminder" email sequence at regular intervals for any email subject line that includes the word "event" (to nudge your subscribers to join an event they’ve signed up for).

There’s nothing groundbreaking in the analytics department—just the basics of top email clients, top operating systems, and URL tracking. But, while I wasn’t able to test this feature, you can create your own comparison reports to group different emails and analyze data (compare data between different sender IDs, different API keys, different templates, or your own tags).

The main problem O had was that, in order to send an email, you need to configure DKIM and SPF settings, which require you to update the TXT records with your domain host at the backend. It’s a few extra steps, and it’s complicated if you already have an SPF record added to your domain and need to add a second one for Mailchimp. That’s the situation we were in, so I couldn’t actually send a test email—but if you already trust Mailchimp to send your emails, you’ll be able to rely on Mailchimp Transactional Email too.

Mailchimp also has a unique pricing structure: instead of the classic monthly plans, you can purchase "blocks" based on the number of emails you need. For example, if you need 10,000 emails for one month, you’ll purchase one block at $20. This option is great to have if you have seasonality in your business and won’t need the same number of emails each month.

You can automate Mailchimp Transactional Email with Zapier, connecting it to all the other apps in your stack. That way you can do things like automatically receive Slack notifications for every new bounced transactional email or send template Mailchimp emails when new Mailchimp Transactional subscribers are added.

Email sending

Designing the HTML contents of an email is very different from designing a normal HTML page. For starters, most email clients only support a subset of all CSS features. In addition, popular email clients like Gmail don’t support defining styles inside

sections and you must inline all the CSS styles.

Sending Emails with Mailer

Symfony’s Mailer & Mime components form a powerful system for creating and sending emails – complete with support for multipart messages, Twig integration, CSS inlining, file attachments and a lot more. Get them installed with:

If the username, password or host contain any character considered special in a URI (such as + , @ , $ , # , / , : , * , ! ), you must encode them. See RFC 3986 for the full list of reserved characters or use the urlencode function to encode them.

Using Built-in Transports

When using native://default , if php.ini uses the sendmail -t command, you won’t have error reporting and Bcc headers won’t be removed. It’s highly recommended to NOT use native://default as you cannot control how sendmail is configured (prefer using sendmail://default if possible).

Using a 3rd Party Transport

The MAILER_DSN isn’t a real address: it’s a convenient format that offloads most of the configuration work to mailer. The sendgrid scheme activates the SendGrid provider that you just installed, which knows all about how to deliver messages via SendGrid. The only part you need to change is the KEY placeholder.

Each provider has different environment variables that the Mailer uses to configure the actual protocol, address and authentication for delivery. Some also have options that can be configured with query parameters at the end of the MAILER_DSN – like ?region= for Amazon SES or Mailgun. Some providers support sending via http , api or smtp . Symfony chooses the best available transport, but you can force to use one:

High Availability

Load Balancing

TLS Peer Verification

By default, SMTP transports perform TLS peer verification. This behavior is configurable with the verify_peer option. Although it’s not recommended to disable this verification for security reasons, it can be useful while developing the application or when using a self-signed certificate:

Other Options

Generating Mailables

When building Laravel applications, each type of email sent by your application is represented as a "mailable" class. These classes are stored in the app/Mail directory. Don’t worry if you don’t see this directory in your application, since it will be generated for you when you create your first mailable class using the make:mail Artisan command:

Once you have generated a mailable class, open it up so we can explore its contents. First, note that all of a mailable class’ configuration is done in the build method. Within this method, you may call various methods such as from , subject , view , and attach to configure the email’s presentation and delivery.

Configuring The Sender

Using The from Method

First, let’s explore configuring the sender of the email. Or, in other words, who the email is going to be "from". There are two ways to configure the sender. First, you may use the from method within your mailable class’ build method:

Using A Global from Address

However, if your application uses the same "from" address for all of its emails, it can become cumbersome to call the from method in each mailable class you generate. Instead, you may specify a global "from" address in your config/mail.php configuration file. This address will be used if no other "from" address is specified within the mailable class:

Configuring The View

Within a mailable class’ build method, you may use the view method to specify which template should be used when rendering the email’s contents. Since each email typically uses a Blade template to render its contents, you have the full power and convenience of the Blade templating engine when building your email’s HTML:

Plain Text Emails

If you would like to define a plain-text version of your email, you may use the text method. Like the view method, the text method accepts a template name which will be used to render the contents of the email. You are free to define both an HTML and plain-text version of your message:

View Data

Via Public Properties

Typically, you will want to pass some data to your view that you can utilize when rendering the email’s HTML. There are two ways you may make data available to your view. First, any public property defined on your mailable class will automatically be made available to the view. So, for example, you may pass data into your mailable class’ constructor and set that data to public properties defined on the class:

Via The with Method:

If you would like to customize the format of your email’s data before it is sent to the template, you may manually pass your data to the view via the with method. Typically, you will still pass data via the mailable class’ constructor; however, you should set this data to protected or private properties so the data is not automatically made available to the template. Then, when calling the with method, pass an array of data that you wish to make available to the template:


Attaching Files From Disk

Raw Data Attachments

The attachData method may be used to attach a raw string of bytes as an attachment. For example, you might use this method if you have generated a PDF in memory and want to attach it to the email without writing it to disk. The attachData method accepts the raw data bytes as its first argument, the name of the file as its second argument, and an array of options as its third argument:

Inline Attachments

Embedding inline images into your emails is typically cumbersome; however, Laravel provides a convenient way to attach images to your emails. To embed an inline image, use the embed method on the $message variable within your email template. Laravel automatically makes the $message variable available to all of your email templates, so you don’t need to worry about passing it in manually:

Embedding Raw Data Attachments

If you already have a raw image data string you wish to embed into an email template, you may call the embedData method on the $message variable. When calling the embedData method, you will need to provide a filename that should be assigned to the embedded image:

Tags & Metadata

Some third-party email providers such as Mailgun and Postmark support message "tags" and "metadata", which may be used to group and track emails sent by your application. You may add tags and metadata to an email message via the tag and metadata methods:

If your application is using the Mailgun driver, you may consult Mailgun’s documentation for more information on tags and metadata. Likewise, the Postmark documentation may also be consulted for more information on their support for tags and metadata.

Customizing The Symfony Message

The withSymfonyMessage method of the Mailable base class allows you to register a closure which will be invoked with the Symfony Message instance before sending the message. This gives you an opportunity to deeply customize the message before it is delivered:

3. Send a message

IMPORTANT: The message sending process may take from several to several dozen minutes when using custom filtering, sending to a large number of tags, or excluding them. This must be taken into account when planning to send a message – if you want the email sending with custom addressing to come out at a specific time, it is worth setting it earlier, e.g. one hour before the scheduled sending date, by entering this data in the “Send on” field. For emails sent from your own email account and from an Email marketing account, the sending to a group of more than 1000 contacts must be approved by a SALESmanago employee.

After completing the scheduling, the report on the sent message will appear in the Email Marketing → Email Analytics tab, where information about the progress and sending statistics will be successively refreshed.

IMPORTANT: It is advisable to verify the data related to OR and CTR a few days after sending the message. It should be taken into account that the recipients do not have to open it and read its content immediately after receiving the message.

Email sending

Using with smtplib.SMTP_SSL() as server: makes sure that the connection is automatically closed at the end of the indented code block. If port is zero, or not specified, .SMTP_SSL() will use the standard port for SMTP over SSL (port 465).

Aldren Santos

Sending Emails With Python

You probably found this tutorial because you want to send emails using Python. Perhaps you want to receive email reminders from your code, send a confirmation email to users when they create an account, or send emails to members of your organization to remind them to pay their dues. Sending emails manually is a time-consuming and error-prone task, but it’s easy to automate with Python.

Python comes with the built-in smtplib module for sending emails using the Simple Mail Transfer Protocol (SMTP). smtplib uses the RFC 821 protocol for SMTP. The examples in this tutorial will use the Gmail SMTP server to send emails, but the same principles apply to other email services. Although the majority of email providers use the same connection ports as the ones in this tutorial, you can run a quick Google search to confirm yours.

To get started with this tutorial, set up a Gmail account for development, or set up an SMTP debugging server that discards emails you send and prints them to the command prompt instead. Both options are laid out for you below. A local SMTP debugging server can be useful for fixing any issues with email functionality and ensuring your email functions are bug-free before sending out any emails.

Option 1: Setting up a Gmail Account for Development

If you decide to use a Gmail account to send your emails, I highly recommend setting up a throwaway account for the development of your code. This is because you’ll have to adjust your Gmail account’s security settings to allow access from your Python code, and because there’s a chance you might accidentally expose your login details. Also, I found that the inbox of my testing account rapidly filled up with test emails, which is reason enough to set up a new Gmail account for development.

A nice feature of Gmail is that you can use the + sign to add any modifiers to your email address, right before the @ sign. For example, mail sent to [email protected] and [email protected] will both arrive at [email protected] . When testing email functionality, you can use this to emulate multiple addresses that all point to the same inbox.

Option 2: Setting up a Local SMTP Server

You can test email functionality by running a local SMTP debugging server, using the smtpd module that comes pre-installed with Python. Rather than sending emails to the specified address, it discards them and prints their content to the console. Running a local debugging server means it’s not necessary to deal with encryption of messages or use credentials to log in to an email server.

For the rest of the tutorial, I’ll assume you’re using a Gmail account, but if you’re using a local debugging server, just make sure to use localhost as your SMTP server and use port 1025 rather than port 465 or 587. Besides this, you won’t need to use login() or encrypt the communication using SSL/TLS.

The most anonymous email providers

If you want to send email anonymously, it always boils down to choosing a secure email provider. They can still keep a log with your name, IP, or location, so you need to pick one that will respect your anonymity and will not collect your data.

1. ProtonMail – the best secure email provider

Keep in mind that once the email is sent, it won’t encrypt metadata, headers, or subject lines. There is a free and paid plan (from 4.00$ a month) that increases the maximum amount of messages that you can send per day. The only downside is that they will likely ask you to provide a telephone number to confirm your account.

ProtonMail also offers the feature of self-destructing messages. All you need to do is set your preferred expiration time, and, when the time comes, ProtonMail will delete the messages from the recipient’s inbox.

2. Tutanota – the most anonymous email provider

Tutanota can provide you with end-to-end encryption. If you need, you will be able to send encrypted messages even to non-Tutanota users. The encryption includes not only the inbox, but your contacts as well. You won’t need to provide any identifiable information when registering an account. Plus, it will strip your IP address from your emails. Their code is open source so everyone can examine it.

This secure email service is one of the best options for those who don’t want to spend a fortune – or to spend money at all. That’s because it offers a free version that includes 1 GB of storage. However, this plan supports only one user and has other limits – for example, it stores your emails only for four weeks. For additional features, like setting up encrypted calendars and unlimited email history, you can pay as little as 1.20 EUR a month.

3. StartMail – the best easy-to-use email provider

StartMail is what Gmail could be if their company focused more on privacy rather than how to place ads. Their parent company even runs Startpage, which is one of the few privacy-friendly search engines.

Following this example, StartMail is one of the most private email boxes that you could get. It supports burner emails, so you can add barriers to your mailbox. Even if such an email appears in a spam mailing list, you can quickly dispose of it and create another.

Like most privacy-focused email services, StartMail encrypts the messages locally and sends them via HTTPS. There is also PGP support, but your contact will also have to use a matching setup. Otherwise, it won’t work.

4. Guerilla Mail – the best temporary email against spam

Guerilla Mail has been a popular anonymous email provider since 2006. It differs from the other secure email providers on this list, as it provides a temporal email address to send and receive email anonymously. You can either create the email address yourself or let Guerilla Mail do it for you if you’re in a hurry. You don’t even need to have an account to send messages, which makes things even more comfortable.

You can use Guerilla Mail when you want to register to a site but are not comfortable with using your real email address. In other words, you can use this email provider as a dumpster for unwanted spam emails, or when you don’t trust the sender.

The best thing about Guerilla Mail is the fact that it’s absolutely free – you just go to their site and use the service. So far, Guerilla has processed more than 13 billion emails – and the number is constantly growing.

Importance of email security and anonymity

Using a standard email provider, in most cases you’ll get a decent service, but your privacy might be at risk. These services generate income from ads, and they need to know your browsing habits to tailor these ads for you. Plus, email metadata will expose your private IP address to anyone willing to look at the X-Originating-IP or Original-IP lines. This will enable hackers (or the receiver) to find your city, state, ZIP code, internet service provider, and more.

How to Send an Anonymous Email (ProtonMail, Tutanota, Secure Email, Guerilla Mail) video screenshot

Does Gmail reveal your IP address?

If you use Gmail as a webmail service, your external IP address and hostname will not be leaked. However, if you’ e using Thunderbird, or Outlook client to send Gmail emails using SMTP, then your IP address and hostname will be sent through along with your email. Keep in mind that during police investigation, Gmail would be forced to reveal your IP address and location.

How do you hide your email address when sending an email?

It’s impossible to hide “From” addresses when sending emails. However, you can use a fake address to trick someone into thinking that it was someone else. You’ll still have to use a real domain name because non-existing domain names will get caught up in spam filters.

Can you send an anonymous email in Outlook?

By design, Outlook always uses an email account associated with the sender. This means that it’s impossible to indicate other “From” that your used email account. If they don’t match, Outlook will return an error, and it will be impossible to send an email.

Is Gmail anonymous?

Gmail isn’t anonymous because Google tends to collect your data and serve you ads. However, it’s possible to keep some degree of privacy with the Gmail account by using a fake name, location, birth date when registering, and always using a VPN with it.

Can I hide my IP address when sending an email?

You can use a VPN or TOR to hide your originating IP address when sending an email to have it display the proxy server’s IP instead of your actual home IP address. This won’t reveal your IP to the public when sending emails.

What is a burner email account?

A burner email account is a separate email account without important contacts that its user can quickly dispose of after several uses. It has the benefit of not being tied to real user’s names or its other accounts.

Is Outlook more secure than Gmail?

Microsoft’s security settings are an enigma. Meanwhile, Google’s privacy policy is much more transparent. Besides, Google offers login through hardware 2FA, which is a very secure method of authentication. Plus, there are excellent bonuses with Gmail, like placing spam in a separate Junk folder rather than adding a red or yellow icon at the top of suspicious emails. This means that Gmail is preferable to Outlook when it comes to security.


Sometimes, the Activity Log error output lacks verbosity when sending emails via SMTP fails. Alternatively, the underlying cause may be different from the message that the system ultimately displays.

For version 8.0 and later

For version 7.x and earlier

In WHMCS 7 and earlier, adding the following line to the configuration.php file will output a large amount of debugging information when you send mail manually. This requires that the Mail Type is SMTP in the Mail tab at Configuration ( ) > System Settings > General Settings:

After sending an email manually, the system will display the interaction between your server and the email server, for debugging purposes. After this process, be sure to revert the change to the configuration.php file.


Leave a Reply

Your email address will not be published. Required fields are marked *