ZapBounce and OneDrive

OneDrive files live inside a Microsoft 365 tenant, and so, usually, do the recipients on the lists stored there. That combination produces a result worth explaining in advance.

Microsoft 365 throttles and blocks SMTP verification probes from cloud addresses, so a list of Microsoft-hosted recipients returns more unknown verdicts than a consumer list would.

Microsoft-hosted recipients resist probing

An address at a Microsoft 365 domain frequently cannot be resolved by any external verifier, because the receiving side refuses or rate-limits probe traffic from cloud IP ranges.

Reporting that as unknown is accurate. Reporting it as valid would look better in a summary and perform identically in a send.

Those results are not billed, so the cost of a Microsoft-heavy list is lower than its row count suggests. Coverage is lower too, and knowing why prevents somebody filing a defect.

How the data moves

  1. Read the file through the Graph API

    A job authenticating against Microsoft Graph reads the file without a local download.

  2. Submit as a batch and expect a higher unknown share

    Plan the reporting so a Microsoft-heavy list reads as expected rather than as a failure.

  3. Write the results file back through Graph

    Alongside the original rather than over it, since OneDrive files are often shared.

  4. Re-check unknowns after two weeks

    Throttling is time-varying, so a second pass converts some of them.

Setting it up

  1. Register an application with Graph API permissions for the relevant files.
  2. Read the target file through Graph rather than downloading it.
  3. Submit the addresses as a batch.
  4. Write a results file back to OneDrive alongside the original.
  5. Report the unknown share separately with an explanation, so nobody treats it as a defect.
  6. Schedule a second pass over the unknowns two weeks later.

OneDrive: common questions

Why are so many addresses unknown?

Because they are Microsoft-hosted, and Microsoft 365 throttles verification probes from cloud addresses. Those results are never billed.

Will a second pass help?

It converts some. Throttling varies over time; outright blocks do not.

Should I download the file first?

No need. Graph reads it in place, which keeps the data out of local downloads folders.

A partner sheet where 1,500 rows come back unknown

Say your partnerships team keeps a 5,000-row contact sheet in OneDrive, and most of the companies on it run Microsoft 365. Suppose a first pass returns 1,500 rows as unknown. You're billed for the 3,500 that got a verdict, not for 5,000, because unknown results are free.

Someone will look at 1,500 unknowns and assume the job failed. It didn't. Those are the rows where Microsoft's servers throttled or refused the probe, and the honest report is that nobody outside the tenant could tell you more. Put that sentence in the summary next to the number.

Whatever is still unknown after a second pass should be handled like catch-all: mail it as a small separate send and watch what bounces. Your partners' own replies are better evidence than any probe, so an address that has answered you this year can stay on the list whatever the label says.

Reading and writing the file through Graph

Graph addresses a OneDrive file by path, so a job can fetch the CSV with a GET on /me/drive/root:/Lists/partners.csv:/content and never touch a laptop's downloads folder. A scheduled job running without a signed-in user can't use /me, so it addresses the drive as /users/{user-id}/drive or /drives/{drive-id} instead.

Permissions differ the same way. Delegated Files.Read and Files.ReadWrite cover a signed-in user. An unattended job needs the application versions, Files.Read.All and Files.ReadWrite.All, which reach every drive in the tenant, so get your admin's sign-off.

Writing back is a PUT to the new file's path ending in :/content, which Microsoft documents for files up to 250 MB. Larger results need an upload session. Name the output with the date, such as partners-verified-2026-09-19.csv, and leave the original alone, because shared files often carry other people's filters.

If the list lives in an Excel workbook, export it to CSV first. Our file endpoint takes CSV or TXT, and it carries every other column through untouched, so the verdict lands beside the partner record when you open the results.

Check a OneDrive export today

100 free checks a month, no card. Unknown results and duplicates are never billed.