Stay organized with collections
Save and categorize content based on your preferences.
This guide describes how to use the Mail API to send mail.
Before you begin
Register your sender emails as authorized senders. For more information, see
who can send email.
Sending mail
In PHP 7/8, the App Engine Mail function is no longer overloaded by default, and
must be explicitly enabled. This new behavior lets you repurpose the Mail function
to better suit your needs. This change also allows you to have visibility into
which implementation is currently being used for all Mail function calls.
If you prefer using the native PHP mail() function to send mail using the App Engine Mail API, you can enable it in your php.ini file as follows:
Alternatively, you can make direct calls to the Mail API:
// Notice that $image_content_id is the optional Content-ID header value of the// attachment. Must be enclosed by angle brackets (<>)$image_content_id = '<image-content-id>';// Pull in the raw file data of the image file to attach it to the message.$image_data = file_get_contents('image.jpg');try { $message = new Message(); $message->setSender('from@example.com'); $message->addTo('to@example.com'); $message->setSubject('Example email'); $message->setTextBody('Hello, world!'); $message->addAttachment('image.jpg', $image_data, $image_content_id); $message->send(); echo 'Mail Sent';} catch (InvalidArgumentException $e) { echo 'There was an error';
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eThis guide details how to utilize the Mail API for sending emails.\u003c/p\u003e\n"],["\u003cp\u003eThe API is compatible with first-generation runtimes and is usable when upgrading to corresponding second-generation runtimes.\u003c/p\u003e\n"],["\u003cp\u003eTo send emails you must register your sender emails as authorized senders.\u003c/p\u003e\n"]]],[],null,["# Sending mail with the Mail API\n\nGo Java PHP Python\n\nThis guide describes how to use the Mail API to send mail.\n\n\u003cbr /\u003e\n\n| This API is supported for first-generation runtimes and can be used when [upgrading to corresponding second-generation runtimes](/appengine/docs/standard/\n|\n| /services/access). If you are updating to the App Engine runtime, refer to the [Upgrade to second-generation runtimes]() page to learn about your migration options for legacy bundled services.\n\nBefore you begin\n----------------\n\nRegister your sender emails as authorized senders. For more information, see\n[who can send email](/appengine/docs/standard/services/mail#who_can_send_mail).\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e"]]