How to Send Mass Email Campaigns in Outlook: Step-by-Step Guide

How to Send Mass Email in Outlook
Alex Kachalov Alex Kachalov 25 october 2023, 14:38 412
For beginners

Outlook is one of the most popular email clients, and it can be used to send mass emails. Many wonder how to do that, and this article is here to explain the procedure. We’ll show you the exact steps to take for most effective results.

But before you start, note that sending mass emails via Outlook is not an ideal solution. The process is tedious, time-consuming, and risks exposing the personal email address of each recipient to all the recipients on the list. You’re better off using a dedicated email service provider (ESP) like UniOne.

How To Send Bulk Emails Via Outlook

Here are the five steps you take to send bulk emails via Microsoft Outlook.

Step 1: Write a Draft In Microsoft Word

Creating the draft for your email on Microsoft Word is more convenient than using Outlook. Microsoft Word is integrated with Outlook, so you can compose your text in Word and send it via Outlook.

If your draft contains images and GIFs, you can preview how they’ll look in an email. Click the View tab from the top menu ribbon and select Web Layout. This option will show exactly how your text would look for the email recipients

Step 2: Start Mail Merge

Once your draft is ready, you can select the Mail Merge option. This feature lets you send personalized documents to a list of individual recipients.

Click on the Mailings tab in the top menu and select Start Mail Merge underneath. This option has a drop-down menu, choose E-mail Messages.

Step 3: Choose Your Email Recipients

Choose Select Recipients under the Mailings tab, and you’ll see a drop-down list of options:

  • Type a New List
  • Use an Existing List
  • Choose from Outlook Contacts

Let’s explain how each option works.

  • Type a New List: This option allows you to enter all the recipients’ email addresses manually.
  • Use an Existing List: Import an existing list of email addresses from an external source, e.g., a CSV file.
  • Choose from Outlook Contacts: Choose the email recipients from your existing list of Microsoft Outlook contacts (aka your address book).

You can edit your address list by adding or deleting entries. When done, click OK to save the new list as a file on your PC. The list will be stored under \Documents\My Data Sources by default.

Step 4: Personalize Your Emails

Personalization involves using personal data about your email subscribers to send more targeted messages. For example, you can begin a message with “Dear [Subscriber’s first name]” or “A reward for [Subsriber’s first name].” Personalization makes recipients more willing to engage with your messages.

You can change the greeting line on your emails directly from Microsoft Word.

Look for the Greeting Line option under the Mailings tab. Here, you can personalize the first thing the recipient sees when they open your message. For example, it can be “Dear [Recipient’s First Name].”

You can also insert custom fields in your email. Find the Insert Merge Field option under your Mailings tab, and you can insert each field where they fit.

For example, your message can be like:

  • Dear «First Name», We are inviting your «Company_Name» to our upcoming event, and will be glad if you attend…

You can insert merge fields anywhere you’re comfortable with them.

Step 5: Finish & Merge Your Email

At this point, you have finished creating and personalizing your email, and it’s time to send it en masse. Click Finish & Merge > Send Email Messages under the Mailings tab. Add a subject line and click OK to send your message.

Congratulations! You have successfully sent a mass email using Outlook.

Outlook Limitations

Outlook was designed with individual communications in mind. It is aimed at individuals who send messages to a single recipient or for relatively few people within an organization. It wasn’t built for bulk email sending, where one person sends an email to hundreds or thousands of subscribers simultaneously.

Outlook’s capabilities as a mass email tool are limited in many aspects. The most important shortcomings, as compared to a dedicated email service provider, are listed below.

Editing Capabilities

Neither Outlook nor Word is a perfect tool for composing emails. The process takes more time and may yield poor results for complex emails which will look inconsistently in different email clients.

External ESPs usually offer specialized email composing tools that let you create eye-catching emails that customers are more likely to respond to.

Example of an eye-catching professional email

List Management

Outlook doesn’t make it easy to manage email lists. Imagine you have 400 addresses on your email list and counting, and you need to use a certain portion of this list to send a message. This process will be tedious and time-consuming.

In contrast, email service providers make it unbelievably easy to manage email lists. You can create signup forms and embed them on your website. Whenever someone adds their email address to the form, it automatically reflects on the email list managed by your ESP. You can easily add and remove subscribers to keep your list in good shape. You can also segment your lists and send more targeted messages with external ESPs.

Avoiding Email Blocklists

A good ESP ensures that emails from your address aren’t blocklisted. Email services may block addresses for several reasons, such as high spam complaints rate of the originating mail server, malicious-looking content, or using words associated with spammers.

At UniOne, we detect and eliminate any potential malicious actors from our network, ensuring they don’t affect anyone’s reputation. Our servers are safe and secure. You can also request a dedicated IP address to send messages from and retain absolute control over your reputation.

Automation

Outlook doesn’t provide sophisticated automated email tools. For example, you can’t create an email that gets automatically sent to a customer when they take a specific action on your website. But you can do that with external email service providers like UniOne.

External ESPs provide sophisticated email automation tools. Without lifting a finger, you can send automated messages to individual recipients, e.g., password change requests, login notifications, abandoned cart emails, etc. You can’t do that with Outlook; you must send every email manually.

Hiding Recipients

When you send mass emails on Outlook, you need to add all your recipients to the BCC: section. BCC stands for “Blind carbon copy”, which means that any addressee from this section will not be seen by others. In contrast, if you add your recipients to To: or CC: fields, the entire list will be visible to anyone who receives a copy.

However, if you use an ESP like UniOne, each recipient will see the message as if it were meant for them only. They can’t see the email addresses of other recipients of the same email.

GDPR Compliance

General Data Protection Regulation (GDPR) is a prominent data privacy regulation enacted by all countries under the European Union (EU). If you have a subscriber based in the EU, you must adhere to GDPR requirements, such as including an unsubscribe link in your emails and deleting a subscriber’s data at their request.

ESPs have built-in data privacy and security features to help customers comply with GDPR and other data regulations. If you’re using Outlook to send mass emails, you’re more likely to run afoul of these regulations and risk legal consequences.

Address Limits

Outlook caps the number of recipients you can email simultaneously at 500. This limit makes the app unsuitable for any serious business that wants to communicate effectively with customers. Most mid-size or large companies may have over 500 subscribers on the list, meaning Outlook is unsuitable.

You can use Outlook to send emails when your business is just starting. However, if you cross over 500 subscribers, you must find an alternative email marketing platform to communicate with them.

Deliverability Tools

Email delivery rate is the percentage of emails you send that reach the intended recipients’ inboxes. For example, if you send 200 messages and only 160 reach the recipient’s inboxes, your deliverability rate is (160/200 x 100%) = 80%.

Email service providers have built-in tools to measure and improve your email deliverability rate. For example, your ESP can help you detect and remove invalid addresses from your subscriber list. It can identify the email addresses that haven’t interacted with emails for a long time, and you’ll decide whether you need to delete them.

Outlook doesn’t come with deliverability enhancement tools, which leaves you at a disadvantage compared to using ESPs.

Analytics

Email service providers let you analyze the A to Z of your emails. You can monitor vital metrics about your email campaigns and know where to improve. Examples of such metrics include:

  • Open rate: The percentage of subscribers who open your message after receiving it. 15 to 25% is a good email open rate; anything below this figure is a cause for concern.
  • Bounce rate: The percentage of your emails that get rejected for whatever reason, e.g., invalid address, spam complaints, etc.
  • Click-through rate: The percentage of subscribers who click at least one link in your email.
  • Click-to-open rate: The percentage of subscribers who click on a link after opening your email. Brands increasingly favor this metric over click-through rates.
  • Spam rate: The percentage of messages that entered the recipients’ spam folders instead of primary inboxes.
  • Conversion rate: The percentage of recipients who follow the suggested action in your email.

Outlook doesn’t provide a built-in analytics tool to help you monitor the above metrics. However, UniOne and other ESPs provide a dedicated dashboard to monitor these metrics.

Follow-Ups

Outlook's Mail Merge works for sending one-off emails to recipients. However, you can't automatically follow up on emails, which is needed if you're pitching and selling products.

If you’re using an email marketing platform, it’s easy to follow up on emails. You can set reminders, and the platform will automatically notify you when it’s time to send a follow-up message to a lead or customer.

Frequently Asked Questions – FAQ

How can I send group emails without showing recipients’ addresses in Outlook?

You can use the BCC box to hide the names and email addresses of people you email to. Follow these steps:

  • Open a new message.
  • Put your own email address in the To box.
  • Add the list of intended recipients in the BCC box.
  • Type your message and send it.

If the BCC box isn’t showing, click Message Options > Fields > Show BCC to unlock it.

What Is the Address Limit For Outlook Emails?

Microsoft limits its address list to 500 lines. You cannot email over 500 addresses at a time, which makes Outlook unsuitable for business email marketing.

What’s the Best Mass Email Alternative To Outlook?

There’s no single “best” alternative, as it depends on many factors. Any ESP will do a better job than Outlook. UniOne is the option we can recommend because it offers secure and reliable email services for an affordable price.

Related Articles

Blog
For beginners
How to Send an Email with Python

Email notifications are essential for every business with an online presence. Over 4 billion active email users worldwide make it the best medium to reach customers. You can remind customers about important upcoming events, verify password changes, notify of login attempts, etc. Businesses use email to inform their customers of upcoming discounts and promotions to get higher sales.

Apart from sending emails manually, you may use programming languages like Python. This article will show how to implement the latter option. We’ll explain how sending emails via Python works and give you some good examples.

What email sending options do you have with Python?

The Simple Mail Transfer Protocol (SMTP) powers the massive flow of information exchange between email servers worldwide. Python supports the use of SMTP with a built-in smtplib module as part of its standard library. This module makes it easy to send emails via SMTP connections; it implements the standard RFC 821 (SMTP) and RFC 1869 (ESMTP) specifications and needs no extra installations to work.

You can use the smtplib module to automate sending transactional and bulk emails. It does not limit you to plain-text emails: you may also compose HTML messages and add attachments such as photos, PDF documents, etc.

Send emails via a third-party email service provider using API

From a programmer’s viewpoint, there’s hardly any difference between using your own SMTP server or the one provided by another party, be it your company’s IT department or an external service. However, operating your own SMTP servers makes you responsible for maintaining and securing them, which can be cumbersome and disruptive to your core business. Instead, you can choose an external email service provider (ESP) like UniOne to handle the task and make your life easier.

It should be noted that a good ESP usually offers two different ways to send emails. The most basic one is an SMTP API, which can be accessed using the same smtplib module mentioned above. The only difference is that you’ll need to specify the external server’s hostname and port instead of your own.

The second option is to use a specialized application programming interface, or API. This method does not rely on smtplib; instead, it uses the HTTP protocol to send commands to the ESP’s server. This method offers numerous advantages over the first one, but requires more complex programming.

In this article, we’ll show you the most essential examples using the smtplib module and Python on Windows. The same code will also work on Linux machines, but may require some fixes. If you need information about using the HTTP API, refer to the ESP’s documentation.

A step-by-step guide to sending emails with Python

How to send emails using a local SMTP server

A local SMTP server is a server that resides on your system. Typically you don't use it to send actual emails, but it will come handy if you need to check whether your Python script works correctly. You may install any popular server that is available for your OS. However, the easiest approach will be using an smtpd module that comes bundled with Python on Windows. Actually, it does not send your emails anywhere; it just outputs the message to your console, which is all you need for debugging.

To start smtpd, enter the following command at your command prompt:

python -m smtpd -c DebuggingServer -n localhost:2501

Now you have an instance of smtpd listening on port 2501. Let’s proceed with actual coding. Below is the most basic Python script to send an email from a local SMTP server:

import smtplib

sender = 'from@example.com'
receivers = ['to@example.com']
message = """From: Sender <from@example.com>
To: Addressee <to@example.com>
Subject: Test message #1


This is a test message for this UniOne tutorial on sending emails with Python.
"""

try:
    smtpObj = smtplib.SMTP('localhost', 2501)
    smtpObj.setdebuglevel(1)
    smtpObj.sendmail(sender, receivers, message)
    smtpObj.quit()      
    print("Successfully sent an email")
except SMTPException:
    print("Something has gone wrong")

Let’s take a closer look at the code. The first step is to import the smtplib module:

 

import smtplib

 

To send emails, we create an SMTP object:

 

smtpObj = smtplib.SMTP([host [, port]])

 

Provide the correct values for the above parameters:

  • host - This part refers to the hostname of your SMTP server. Use localhost as a host name if the server runs on your local machine.
  • port - Specifies the port number to use. It will be your local SMTP port number, or the one you’ve specified on the smtpd command line.

Now we have an open SMTP connection to the server, and may proceed with sending a simple email message. For this, the SMTP object has an instance method called sendmail(). This method requires three parameters:

  • sender − a string with the sender’s From address
  • receivers − a list of strings, one for each recipient’s address
  • message − a message formatted as specified in RFCs (note the two empty lines separating the headers section from the body)

Before calling this method, we enable the debugging mode for our SMTP object to see what’s happening when the script is run.

The next line checks whether an error has occurred while connecting to the server or sending a message. SMTPException is the base exception class for smtplib; for more sophisticated error processing, consult the module’s documentation.

Using an external SMTP server

The above example assumes you’re running an SMTP server locally on your PC. If not, you’ll need to modify the script accordingly, as described below.

When sending emails via SMTP, you’ll also want to encrypt the connection. Unencrypted connections can be intercepted by hackers looking to steal sensitive information. Encrypting prevents this problem.

For an encrypted connection, you’ll need this code to create an SMTP object:

smtpObj = smtpObj.SMTP_SSL(host, port)

This object is identical to smtplib.SMTP, but uses an implicit SSL connection to the server. For the host parameter, you specify your server's IP address or domain name. The port value defaults to 465, the standard for SMTP over SSL. For more information on secure connections, see our blog article.

When connecting to an external server, you’ll also need to properly introduce yourself. For this, the following method call is used:

smtpObj.login(username, password)

In the examples below, we’ll use one of the SMTP servers provided by UniOne. Connecting to our SMTP server is simple; you just need to use the proper connection parameters:

  • host: either smtp.us1.unione.io or smtp.eu1.unione.io (for accounts registered at us1.unione.io and eu1.unione.io, respectively).
  • port: 25, 465 or 587. You can use any of these ports; all our connections are encrypted by default, so you don't need to worry about that.
  • username: your account’s user_id or project_id (you can look up these parameters in your UniOne dashboard).
  • password: your account's API key or project_api_key.
  • encoding: use UTF-8.

For more things to note when using UniOne, see info on our SMTP API.

This is how the code will finally look like:

import smtplib

port = 465 
smtp_server = "smtp.us1.unione.io"
login = "123456789" # your UniOne user_id or project_id
password = "*******" # your UniOne API key or project_api_key

sender_email = "UniOne@example.com"
receiver_email = "recipient@example.com"
message = """From: Sender <from@example.com>
To: Addressee <to@example.com>
Subject: Test message #2


This is a test message sent from UniOne with Python using a secure connection.
"""

try:
    smtpObj = smtplib.SMTP_SSL(smtp_server, port)
    smtpObj.login(username, password)
    smtpObj.sendmail(sender, receivers, message) 
    smtpObj.quit()        
    print("Successfully sent an email")
except SMTPException:
    print("Something has gone wrong")

How to send HTML emails with Python

In the next example, we'll use the MIME message type that combines HTML/CSS and plain text. In Python, MIME messages are handled by the email.mime module.

It's advisable to write separate text and HTML versions of your email and merge them with the MIMEMultipart("alternative") Python object instance. This approach means that an email client can render your message in either HTML or text.

# Import the necessary components
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

port = 587 
smtp_server = "smtp.us1.unione.io"
login = "123456789" # your UniOne user_id or project_id
password = "*******" # your UniOne API key or project_api_key

sender_email = "UniOne@example.com"
receiver_email = "recipient@example.com"
message = MIMEMultipart("alternative")
message["Subject"] = "Multipart email test"
message["From"] = sender_email
message["To"] = receiver_email

# the plain text part
text = """\
Hi,
Check out our new post on the UniOne blog about sending emails with Python:
We hope you learn a lot from it"""

# the HTML part
html = """\
<html>
  <body>
    <p>Hi,<br>
      Check out our new post on the UniOne blog about sending emails with Python.</p>
    <p>We hope you learn a lot from it.</p>
  </body>
</html>
"""

# convert both parts to MIMEText objects and add them to the MIMEMultipart message
part1 = MIMEText(text, "plain")
part2 = MIMEText(html, "html")
message.attach(part1)
message.attach(part2)

# send your email
with smtplib.SMTP_SSL(smtp_server, port) as server:
    server.login(login, password)
    server.sendmail(
        sender_email, receiver_email, message.as_string()
    )

print('Message sent')

How to send emails with attachments

The next thing to learn is how to send emails with attachments using Python.

Python lets you attach text files, documents, images, videos, audio, etc. You just need to use the proper email class, such as email.mime.image.MIMEImage or email.mime.text.MIMEtext.

Keep in mind that the maximum total size for a UniOne email, including text and all attachments, is 10 MB.

import smtplib

# import the required modules
from email import encoders
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

port = 587 
smtp_server = "smtp.us1.unione.io"
login = "123456789" # your UniOne user_id
password = "*******" # your UniOne API key or project_api_key

subject = "How to send emails using Python"
sender_email = "UniOne@example.com"
receiver_email = "recipient@example.com"

message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = subject

# Add body to email
body = "This is a tutorial for sending attachments via Python"
message.attach(MIMEText(body, "plain"))

# Open PDF file in binary mode
filename = "PythonTutorial.pdf"
with open(filename, "rb") as attachment:
    # Create an attachment from your PDF file
    part = MIMEApplication(attachment.read())
    attachment.close()

# Add attachment to your message and convert it to string
part['Content-Disposition'] = 'attachment; filename="%s"' % filename
message.attach(part)
text = message.as_string()

# send your email
with smtplib.SMTP_SSL(smtp_server, port) as server:
    server.login(login, password)
    server.sendmail(
        sender_email, receiver_email, text
    )
print('Sent')

Sending emails to multiple recipients with Python

You can send emails to multiple recipients using Python code via the UniOne API. As mentioned earlier, each recipient will receive separate email copies that will count toward your subscription.

Adding more recipients is simple; just type their address separated by commas and add CC and BCC. However, this method can be stressful if you're sending messages to thousands of addresses (you likely can’t type them all). The alternative is to place all the addresses in a CSV file and point the SMTP server to that database to fetch all them.

Input:

import csv, smtplib

port = 587 
smtp_server = "smtp.us1.unione.io"
login = "123456789" # your UniOne user_id
password = "*******" # your UniOne API key or project_api_key
sender = "UniOne@example.com"
message = """Subject: Read our tutorial for sending emails via Python
To: {recipient}
From: {sender}

Hi {name}, we have written a detailed tutorial for sending emails via Python"""

with smtplib.SMTP_SSL(smtp_server, port) as server:
    server.login(login, password)
    with open("contacts.csv") as file:
        reader = csv.reader(file)
        next(reader)  # skip the header row
        for name, email in reader:
            server.sendmail(
                sender,
                email,
                message.format(name=name, recipient=email, sender=sender)
            )
            print(f'Sent to {name}')

For the above example, we have created a CSV file named “contacts.csv” with all the recipients’ names and addresses (put this file in the same folder as your Python script). This program instructs the server to read the file, fetch the email addresses, and send the email to each one.

Sending emails with images

You can send images by adding them as attachments to your emails with Python code. The best option is to add the image as a CID attachment (embedded it as a MIME object).

Input:

# import all necessary components
import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart

port = 587 
smtp_server = "smtp.us1.unione.io"
login = "123456789" # your UniOne user_id
password = "*******" # your UniOne API key or project_api_key

sender_email = "UniOne@example.com"
receiver_email = "recipient@example.com"
message = MIMEMultipart("alternative")
message["Subject"] = "CID image testing"
message["From"] = sender_email
message["To"] = receiver_email

# write the HTML part
html = """\
<html>
 <body>
   <img src="cid:UniOneImage">
 </body>
</html>
"""

part = MIMEText(html, "html")
message.attach(part)

# This code assumes that you saved the image file in the same directory as your Python script
fp = open('UniOneImage.jpg', 'rb')
image = MIMEImage(fp.read())
fp.close()

# Specify the ID according to the img src in the HTML part
image.add_header('Content-ID', '<UniOneImage>')
message.attach(image)

# send your email
with smtplib.SMTP_SSL(smtp_server, port) as server:
    server.login(login, password)
    server.sendmail(
        sender_email, receiver_email, message.as_string()
    )
print('Sent OK')

The above code illustrates attaching an image named “UniOneImage.jpg” that you’ve already saved in the same directory as your Python script. The program instructs the SMTP server to fetch and send the image to the recipients.

Conclusion

We have explained how to write Python scripts to send plain text emails, emails having attachments, and emails with multiple recipients. By following our tips, you can send messages easily via the UniOne SMTP API.

UniOne is a secure and reliable email service that guarantees high deliverability rates if you adhere to email regulations and best practices.

Valeriia Dziubenko
05 march 2024, 16:0413 min
Blog
Top Amazon SES Alternatives in 2024
Amazon Simple Email Service, aka Amazon SES, is a cloud-based email service provider known for its reliability and versatility. There are many Amazon SES alternatives that allow you to send emails seamlessly and affordably. We’ll introduce you to these alternatives, including their features, pros and cons, pricing, and more.
Yurii Bitko
26 march 2024, 09:3312 min
Blog
For beginners
What is Email Bounce Rate and How to Keep It Low?
Bounced emails are a regular concern for every business interacting with customers via email. The term “bounced email” implies that it didn't reach the intended recipient. Instead, the message was rejected by the receiving server for whatever reason.
Valeriia Dziubenko
15 september 2023, 13:086 min