Envoyer des messages avec l'API Mail
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
L'API du service Mail pour Java est compatible avec l'interface JavaMail (javax.mail
) pour l'envoi d'e-mails.
Avant de commencer
Enregistrez vos adresses e-mail d'expéditeur en tant qu'expéditeurs autorisés. Pour obtenir plus d'informations, consultez la section Utilisateurs autorisés à envoyer des e-mails.
Envoyer des e-mails
Pour envoyer des e-mails, servez-vous des classes JavaMail fournies avec le SDK App Engine.
Lorsque vous créez une session JavaMail, App Engine utilise le service Mail pour envoyer les messages si vous n'indiquez aucune configuration de serveur SMTP.
Vous pouvez également ajouter une configuration SMTP pour les fournisseurs de messagerie tiers compatibles, tels que Mailgun, Mailjet ou SendGrid.
Pour envoyer un message, procédez comme suit :
Créez un message à l'aide d'un objet Session
JavaMail.
Créez un objet MimeMessage
.
Pour définir l'expéditeur et le destinataire du message, utilisez la classe InternetAddress
.
Identifiez l'expéditeur en appelant la méthode setFrom()
sur l'objet MimeMessage
. Vous pouvez éventuellement fournir un nom personnel sous forme de chaîne dans le deuxième paramètre.
Identifiez le destinataire en transmettant un type de destinataire et une adresse à la méthode addRecipient()
. Le type de destinataire peut être Message.RecipientType.TO
, Message.RecipientType.CC
ou Message.RecipientType.BCC
.
Le constructeur InternetAddress
génère une exception AddressException
si l'adresse e-mail s'avère être incorrecte.
Pour définir une adresse de réponse, utilisez la méthode setReplyTo()
.
Établissez le contenu du message en appelant des méthodes sur l'objet MimeMessage
. Définissez l'objet avec setSubject()
, puis le contenu du corps en texte brut avec setText()
.
Pour envoyer le message, utilisez la méthode statique send()
sur la classe Transport
.
Le service Mail vous permet de spécifier un ensemble limité d'en-têtes pour les e-mails sortants. Pour obtenir plus d'informations, consultez la section En-têtes facultatifs que vous pouvez utiliser.
L'exemple de code suivant montre comment envoyer un message :
Les appels vers le service Mail sont effectués de façon asynchrone et affichent immédiatement un résultat. Ce service gère le processus visant à contacter les serveurs de messagerie des destinataires et à transmettre le message. Si un problème survient pendant l'envoi d'un message à un destinataire ou si le serveur de messagerie d'un destinataire affiche un "message d'erreur automatique", le message d'erreur est envoyé à l'expéditeur.
Envoyer des messages incluant différents types de données
Vous pouvez envoyer des messages incluant différents types de données, tels qu'un message avec des pièces jointes ou un message avec du texte brut et du contenu HTML.
Pour envoyer un message incluant différents types de données, procédez comme suit :
Créez un objet MimeMultipart
pour contenir les différentes données, puis créez un objet MimeBodyPart
pour chaque pièce jointe ou un autre corps de message, et ajoutez-le au conteneur.
Faites passer le conteneur en tant que "content" (contenu) de l'objet MimeMessage
.
L'exemple de code suivant montre comment envoyer un message contenant différents types de données :
Pour des raisons de sécurité, les données d'un message et les pièces jointes doivent correspondre à l'un des types autorisés et les noms des fichiers des pièces jointes doivent se terminer par une extension reconnue pour le type. Pour consulter la liste des types et extensions de nom de fichier autorisés, consultez la section Messages avec pièces jointes.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[[["\u003cp\u003eThe Java Mail service API supports the \u003ccode\u003ejavax.mail\u003c/code\u003e interface for sending email messages within first-generation runtimes, with migration options for second-generation runtimes.\u003c/p\u003e\n"],["\u003cp\u003eTo send emails, you need to create a JavaMail \u003ccode\u003eSession\u003c/code\u003e object and a \u003ccode\u003eMimeMessage\u003c/code\u003e object, and configure the sender and recipients using the \u003ccode\u003eInternetAddress\u003c/code\u003e class.\u003c/p\u003e\n"],["\u003cp\u003eApp Engine can use its own Mail service for sending messages if no SMTP server is configured, but it also supports third-party providers like Mailgun, Mailjet, and SendGrid.\u003c/p\u003e\n"],["\u003cp\u003eYou can send multi-part messages, including file attachments and messages with both plaintext and HTML bodies, by using \u003ccode\u003eMimeMultipart\u003c/code\u003e and \u003ccode\u003eMimeBodyPart\u003c/code\u003e objects.\u003c/p\u003e\n"],["\u003cp\u003eThe Mail service handles contacting recipients' mail servers and delivering messages asynchronously, with error messages or bounces going to the sender.\u003c/p\u003e\n"]]],[],null,["# Sending Mail with the Mail API\n\nThe Mail service API for Java supports the\n[JavaMail](http://www.oracle.com/technetwork/java/javamail/index.html) (`javax.mail`) interface for\nsending email messages.\n\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| java-gen2\n|\n| /services/access). If you are updating to the App Engine Java 11/17 runtime, refer to the [migration guide](/appengine/migration-center/standard/migrate-to-second-gen/java-differences) to learn about your migration options for legacy bundled services.\n\n\u003cbr /\u003e\n\nBefore you begin\n----------------\n\nRegister your sender emails as authorized senders. For more information, see\n[who can send email](/appengine/docs/legacy/standard/java/mail#who_can_send_mail).\n\nSending email messages\n----------------------\n\nTo send email messages, use the JavaMail classes included with the App Engine\nSDK.\n\nWhen you create a JavaMail Session, if you do not provide any SMTP server\nconfiguration, App Engine uses the Mail service for sending messages.\nAlternatively, add SMTP configuration for supported third-party mail\nproviders such as [Mailgun](/appengine/docs/legacy/standard/java/mail/mailgun),\n[Mailjet](/appengine/docs/legacy/standard/java/mail/mailjet), or\n[SendGrid](/appengine/docs/legacy/standard/java/mail/sendgrid).\n\nTo send a message:\n\n1. Create a message using a JavaMail `Session` object.\n\n2. Create a `MimeMessage` object.\n\n3. To set the message sender and recipient, use the `InternetAddress` class.\n\n 1. Identify the sender by calling the `setFrom()` method on the\n `MimeMessage` object. Optionally, you can provide a personal name as a\n string in the second parameter.\n\n 2. Identify the recipient by passing a recipient type and an address to the\n `addRecipient()` method. The recipient type can be\n `Message.RecipientType.TO`, `Message.RecipientType.CC` or\n `Message.RecipientType.BCC`.\n\n The `InternetAddress` constructor raises an `AddressException` if the email\n address appears to be invalid.\n4. To set a \"reply to\" address, use the `setReplyTo()` method.\n\n5. Establish the contents of the message by calling methods on the\n `MimeMessage` object. Set the subject with `setSubject()` and set the\n plaintext body content with `setText()`.\n\n6. To send the message, use the static method `send()` on the `Transport`\n class.\n\nThe Mail service allows you to specify a limited set of headers on outgoing\nemail messages. For more information, see [Optional headers you can\nuse](/appengine/docs/legacy/standard/java/mail/mail-with-headers-attachments#optional_headers_you_can_use).\n\nThe following code sample demonstrates how to send mail: \n\n Properties props = new Properties();\n Session session = Session.getDefaultInstance(props, null);\n\n try {\n Message msg = new MimeMessage(session);\n msg.setFrom(new InternetAddress(\"admin@example.com\", \"Example.com Admin\"));\n msg.addRecipient(Message.RecipientType.TO,\n new InternetAddress(\"user@example.com\", \"Mr. User\"));\n msg.setSubject(\"Your Example.com account has been activated\");\n msg.setText(\"This is a test\");\n Transport.send(msg);\n } catch (AddressException e) {\n // ...\n } catch (MessagingException e) {\n // ...\n } catch (UnsupportedEncodingException e) {\n // ...\n }\n\nCalls to the Mail service are asynchronous and return immediately. The Mail\nservice manages the process of contacting the recipients' mail servers and\ndelivering the message. If there is a problem sending the message to any\nrecipient, or if a recipient's mail server returns a \"bounce\" message, the error\nmessage goes to the sender.\n\nSending multi-part messages\n---------------------------\n\nYou can send multi-part messages, such as a message with file attachments, or a\nmessage with a plaintext message body and an HTML message body.\n\nTo send a multi-part message:\n\n1. Create a `MimeMultipart` object to contain the parts, then create a\n `MimeBodyPart` object for each attachment or alternate message body and add\n it to the container.'\n\n2. Assign the container to the content for `MimeMessage`.\n\nThe following code sample demonstrates how to send a multi-part message: \n\n String htmlBody = \"\"; // ...\n byte[] attachmentData = null; // ...\n Multipart mp = new MimeMultipart();\n\n MimeBodyPart htmlPart = new MimeBodyPart();\n htmlPart.setContent(htmlBody, \"text/html\");\n mp.addBodyPart(htmlPart);\n\n MimeBodyPart attachment = new MimeBodyPart();\n InputStream attachmentDataStream = new ByteArrayInputStream(attachmentData);\n attachment.setFileName(\"manual.pdf\");\n attachment.setContent(attachmentDataStream, \"application/pdf\");\n mp.addBodyPart(attachment);\n\n msg.setContent(mp);\n\nFor security purposes, message parts and attachments must be of one of several\nallowed types, and attachment filenames must end in a recognized filename\nextension for the type. For a list of allowed types and filename extensions, see\n[Mail with attachments](/appengine/docs/legacy/standard/java/mail/mail-with-headers-attachments#mail_with_attachments)."]]