Mit der Mail API E-Mails senden
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Die Mail Service API für Java unterstützt die Schnittstelle JavaMail (javax.mail
) zum Senden von E-Mail-Nachrichten.
Hinweise
Registrieren Sie die Absender-E-Mail-Adressen als autorisierte Absender. Weitere Informationen finden Sie unter Wer E-Mails senden kann.
E-Mail-Nachrichten senden
Mit den JavaMail-Klassen, die im App Engine SDK enthalten sind, können Sie E-Mail-Nachrichten versenden.
Wenn Sie eine JavaMail-Sitzung erstellen und keine SMTP-Serverkonfiguration angeben, versendet App Engine Nachrichten über den Mail-Dienst.
Alternativ können Sie eine SMTP-Konfiguration für unterstützte E-Mail-Drittanbieter wie Mailgun, Mailjet oder SendGrid einrichten.
So senden Sie eine Nachricht:
Erstellen Sie eine Nachricht mit einem JavaMail Session
-Objekt.
Erstellen Sie ein MimeMessage
-Objekt.
Verwenden Sie die Klasse InternetAddress
, um den Absender und Empfänger der Nachricht festzulegen.
Ermitteln Sie den Absender durch Aufrufen der Methode setFrom()
für das Objekt MimeMessage
. Optional können Sie im zweiten Parameter einen Personennamen als String angeben.
Bestimmen Sie den Empfänger, indem Sie einen Empfängertyp und eine Adresse an die Methode addRecipient()
übergeben. Der Empfängertyp kann sein Message.RecipientType.TO
, Message.RecipientType.CC
oder Message.RecipientType.BCC
.
Der InternetAddress
-Konstruktor löst eine AddressException
aus, wenn die E-Mail-Adresse offenbar ungültig ist.
Verwenden Sie die Methode setReplyTo()
, um eine Antwortadresse festzulegen.
Legen Sie den Nachrichteninhalt durch Aufruf von Methoden für das Objekt MimeMessage
fest. Legen Sie den Betreff mit setSubject()
fest und legen Sie den Textkörper des Klartexts mit setText()
fest.
Verwenden Sie zum Senden der Nachricht die statische Methode send()
für die Klasse Transport
.
Der Mail-Dienst ermöglicht die Angabe einer begrenzten Zahl von Headern für ausgehende E-Mail-Nachrichten. Weitere Informationen dazu finden Sie unter Zulässige optionale Header.
Hier ein Codebeispiel für das Senden von E-Mail-Nachrichten:
Aufrufe an den Mail-Dienst erfolgen asynchron und werden sofort zurückgegeben. Der Mail-Dienst verwaltet die Kontaktaufnahme mit den Mailservern der Empfänger und die Nachrichtenlieferung. Tritt beim Senden der Nachricht an einen Empfänger ein Problem auf oder gibt der Mail-Server eines Empfängers eine "Bounce"-Nachricht zurück, wird die Fehlermeldung an den Absender gesendet.
Mehrteilige Nachrichten senden
Sie können mehrteilige Nachrichten senden, z. B. eine Nachricht mit Dateianhängen oder eine Nachricht mit unformatiertem und HTML-Nachrichtentext.
So senden Sie eine mehrteilige Nachricht:
Erstellen Sie ein MimeMultipart
-Objekt für die einzelnen Teile und ein MimeBodyPart
-Objekt für jeden Anhang oder alternativen Nachrichtentext und fügen Sie diese dem Container hinzu.
Weisen Sie den Container dem Inhalt für MimeMessage
zu.
Hier ein Codebeispiel für den Versand einer mehrteiligen Nachricht:
Aus Sicherheitsgründen müssen Nachrichtenteile und -anhänge einem von mehreren verschiedenen zulässigen Typen entsprechen und die Dateinamen der Anhänge müssen mit einer erkannten Dateinamenerweiterung für diesen Typ enden. Eine Liste der zulässigen Typen und Dateinamenerweiterungen finden Sie unter E-Mail mit Anhängen.
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2025-09-04 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 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)."]]