Stay organized with collections
Save and categorize content based on your preferences.
Send-as aliases represent the email addresses an account can
send mail from. Each account always has at least one alias to represent the
primary email address of the account.
Aliases are also used to manage signatures for an account. Basic understanding
of send-as aliases are required for you to be able to change email signatures.
The above video shows you how to loop through send-as aliases and modify the
signature for a user's primary email address.
You must create
aliases prior to use. In some cases, users must also verify ownership of the
alias.
If Gmail requires user verification for an alias, the alias is returned with the
status pending. A verification message is automatically sent to the
target email address. The owner of the email address must complete the verification
process before it can be used.
Aliases that do not require verification have a verification status of accepted.
Use the verify method to
resend the verification request if needed.
SMTP settings
Aliases for external addresses should send mail through a remote SMTP
mail sending agent (MSA). To configure the SMTP MSA for an alias, use
the smtpMsa field to provide the connection details.
Managing signatures
You may also configure email signatures for each alias. For example, to set the
signature for the user's primary address:
importcom.google.api.client.googleapis.json.GoogleJsonError;importcom.google.api.client.googleapis.json.GoogleJsonResponseException;importcom.google.api.client.http.HttpRequestInitializer;importcom.google.api.client.http.javanet.NetHttpTransport;importcom.google.api.client.json.gson.GsonFactory;importcom.google.api.services.gmail.Gmail;importcom.google.api.services.gmail.GmailScopes;importcom.google.api.services.gmail.model.ListSendAsResponse;importcom.google.api.services.gmail.model.SendAs;importcom.google.auth.http.HttpCredentialsAdapter;importcom.google.auth.oauth2.GoogleCredentials;importjava.io.IOException;/* Class to demonstrate the use of Gmail Update Signature API */publicclassUpdateSignature{/** * Update the gmail signature. * * @return the updated signature id , {@code null} otherwise. * @throws IOException - if service account credentials file not found. */publicstaticStringupdateGmailSignature()throwsIOException{/* Load pre-authorized user credentials from the environment. TODO(developer) - See https://developers.google.com/identity for guides on implementing OAuth2 for your application. */GoogleCredentialscredentials=GoogleCredentials.getApplicationDefault().createScoped(GmailScopes.GMAIL_SETTINGS_BASIC);HttpRequestInitializerrequestInitializer=newHttpCredentialsAdapter(credentials);// Create the gmail API clientGmailservice=newGmail.Builder(newNetHttpTransport(),GsonFactory.getDefaultInstance(),requestInitializer).setApplicationName("Gmail samples").build();try{SendAsprimaryAlias=null;ListSendAsResponsealiases=service.users().settings().sendAs().list("me").execute();for(SendAsalias:aliases.getSendAs()){if(alias.getIsPrimary()){primaryAlias=alias;break;}}// Updating a new signatureSendAsaliasSettings=newSendAs().setSignature("Automated Signature");SendAsresult=service.users().settings().sendAs().patch("me",primaryAlias.getSendAsEmail(),aliasSettings).execute();//Prints the updated signatureSystem.out.println("Updated signature - "+result.getSignature());returnresult.getSignature();}catch(GoogleJsonResponseExceptione){// TODO(developer) - handle error appropriatelyGoogleJsonErrorerror=e.getDetails();if(error.getCode()==403){System.err.println("Unable to update signature: "+e.getDetails());}else{throwe;}}returnnull;}}
importgoogle.authfromgoogleapiclient.discoveryimportbuildfromgoogleapiclient.errorsimportHttpErrordefupdate_signature():"""Create and update signature in gmail. Returns:Draft object, including updated signature. Load pre-authorized user credentials from the environment. TODO(developer) - See https://developers.google.com/identity for guides on implementing OAuth2 for the application. """creds,_=google.auth.default()try:# create gmail api clientservice=build("gmail","v1",credentials=creds)primary_alias=None# pylint: disable=E1101aliases=service.users().settings().sendAs().list(userId="me").execute()foraliasinaliases.get("sendAs"):ifalias.get("isPrimary"):primary_alias=aliasbreaksend_as_configuration={"displayName":primary_alias.get("sendAsEmail"),"signature":"Automated Signature",}# pylint: disable=E1101result=(service.users().settings().sendAs().patch(userId="me",sendAsEmail=primary_alias.get("sendAsEmail"),body=send_as_configuration,).execute())print(f'Updated signature for: {result.get("displayName")}')exceptHttpErroraserror:print(f"An error occurred: {error}")result=Nonereturnresult.get("signature")if__name__=="__main__":update_signature()
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-04 UTC."],[],[],null,["Send-as aliases represent the email addresses an account can\nsend mail from. Each account always has at least one alias to represent the\nprimary email address of the account.\n\nSend-as aliases correspond to the\n[\"Send mail as\" feature](https://support.google.com/mail/answer/22370) in the\nweb interface.\n\nAliases are also used to manage signatures for an account. Basic understanding\nof send-as aliases are required for you to be able to change email signatures.\nThe above video shows you how to loop through send-as aliases and modify the\nsignature for a user's primary email address.\n\nFor information about how to\n[create](/workspace/gmail/api/v1/reference/users/settings/sendAs/create),\n[list](/workspace/gmail/api/v1/reference/users/settings/sendAs/list),\n[get](/workspace/gmail/api/v1/reference/users/settings/sendAs/get),\n[update](/workspace/gmail/api/v1/reference/users/settings/sendAs/update),\nor [delete](/workspace/gmail/api/v1/reference/users/settings/sendAs/delete) aliases,\nsee the\n[`SendAs` reference](/workspace/gmail/api/reference/rest/v1/users.settings.sendAs).\n\nCreating and verifying aliases\n\nYou must [create](/workspace/gmail/api/v1/reference/users/settings/sendAs/create)\naliases prior to use. In some cases, users must also verify ownership of the\nalias.\n\nIf Gmail requires user verification for an alias, the alias is returned with the\nstatus `pending`. A verification message is automatically sent to the\ntarget email address. The owner of the email address must complete the verification\nprocess before it can be used.\n\nAliases that do not require verification have a verification status of `accepted`.\n\nUse the [verify](/workspace/gmail/api/v1/reference/users/settings/sendAs/verify) method to\nresend the verification request if needed.\n\nSMTP settings\n\nAliases for external addresses should send mail through a remote SMTP\nmail sending agent (MSA). To configure the SMTP MSA for an alias, use\nthe `smtpMsa` field to provide the connection details.\n\nManaging signatures\n\nYou may also configure email signatures for each alias. For example, to set the\nsignature for the user's primary address: \n\nJava \ngmail/snippets/src/main/java/UpdateSignature.java \n[View on GitHub](https://github.com/googleworkspace/java-samples/blob/main/gmail/snippets/src/main/java/UpdateSignature.java) \n\n```java\nimport com.google.api.client.googleapis.json.GoogleJsonError;\nimport com.google.api.client.googleapis.json.GoogleJsonResponseException;\nimport com.google.api.client.http.HttpRequestInitializer;\nimport com.google.api.client.http.javanet.NetHttpTransport;\nimport com.google.api.client.json.gson.GsonFactory;\nimport com.google.api.services.gmail.Gmail;\nimport com.google.api.services.gmail.GmailScopes;\nimport com.google.api.services.gmail.model.ListSendAsResponse;\nimport com.google.api.services.gmail.model.SendAs;\nimport com.google.auth.http.HttpCredentialsAdapter;\nimport com.google.auth.oauth2.GoogleCredentials;\nimport java.io.IOException;\n\n/* Class to demonstrate the use of Gmail Update Signature API */\npublic class UpdateSignature {\n /**\n * Update the gmail signature.\n *\n * @return the updated signature id , {@code null} otherwise.\n * @throws IOException - if service account credentials file not found.\n */\n public static String updateGmailSignature() throws IOException {\n /* Load pre-authorized user credentials from the environment.\n TODO(developer) - See https://developers.google.com/identity for\n guides on implementing OAuth2 for your application. */\n GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()\n .createScoped(GmailScopes.GMAIL_SETTINGS_BASIC);\n HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(credentials);\n\n // Create the gmail API client\n Gmail service = new Gmail.Builder(new NetHttpTransport(),\n GsonFactory.getDefaultInstance(),\n requestInitializer)\n .setApplicationName(\"Gmail samples\")\n .build();\n\n try {\n SendAs primaryAlias = null;\n ListSendAsResponse aliases = service.users().settings().sendAs().list(\"me\").execute();\n for (SendAs alias : aliases.getSendAs()) {\n if (alias.getIsPrimary()) {\n primaryAlias = alias;\n break;\n }\n }\n // Updating a new signature\n SendAs aliasSettings = new SendAs().setSignature(\"Automated Signature\");\n SendAs result = service.users().settings().sendAs().patch(\n \"me\",\n primaryAlias.getSendAsEmail(),\n aliasSettings)\n .execute();\n //Prints the updated signature\n System.out.println(\"Updated signature - \" + result.getSignature());\n return result.getSignature();\n } catch (GoogleJsonResponseException e) {\n // TODO(developer) - handle error appropriately\n GoogleJsonError error = e.getDetails();\n if (error.getCode() == 403) {\n System.err.println(\"Unable to update signature: \" + e.getDetails());\n } else {\n throw e;\n }\n }\n return null;\n }\n}\n```\n\nPython \ngmail/snippet/settings snippets/update_signature.py \n[View on GitHub](https://github.com/googleworkspace/python-samples/blob/main/gmail/snippet/settings snippets/update_signature.py) \n\n```python\nimport google.auth\nfrom googleapiclient.discovery import build\nfrom googleapiclient.errors import HttpError\n\n\ndef update_signature():\n \"\"\"Create and update signature in gmail.\n Returns:Draft object, including updated signature.\n\n Load pre-authorized user credentials from the environment.\n TODO(developer) - See https://developers.google.com/identity\n for guides on implementing OAuth2 for the application.\n \"\"\"\n creds, _ = google.auth.default()\n\n try:\n # create gmail api client\n service = build(\"gmail\", \"v1\", credentials=creds)\n\n primary_alias = None\n\n # pylint: disable=E1101\n aliases = service.users().settings().sendAs().list(userId=\"me\").execute()\n for alias in aliases.get(\"sendAs\"):\n if alias.get(\"isPrimary\"):\n primary_alias = alias\n break\n\n send_as_configuration = {\n \"displayName\": primary_alias.get(\"sendAsEmail\"),\n \"signature\": \"Automated Signature\",\n }\n\n # pylint: disable=E1101\n result = (\n service.users()\n .settings()\n .sendAs()\n .patch(\n userId=\"me\",\n sendAsEmail=primary_alias.get(\"sendAsEmail\"),\n body=send_as_configuration,\n )\n .execute()\n )\n print(f'Updated signature for: {result.get(\"displayName\")}')\n\n except HttpError as error:\n print(f\"An error occurred: {error}\")\n result = None\n\n return result.get(\"signature\")\n\n\nif __name__ == \"__main__\":\n update_signature()\n```"]]