Como enviar e-mails com a API Mail
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
A API de serviço de e-mail para Java é compatível com
a interface JavaMail (javax.mail
) para
o envio de mensagens de e-mail.
Antes de começar
Registre os e-mails dos remetentes como remetentes autorizados. Para mais informações, veja quem pode enviar e-mails.
Como enviar mensagens de e-mail
Para enviar mensagens de e-mail, use as classes JavaMail incluídas no SDK do App Engine.
Ao criar uma sessão JavaMail, se você não fornecer uma configuração de servidor SMTP, o App Engine usará o serviço de e-mail para enviar mensagens.
Se preferir, adicione a configuração SMTP para provedores de e-mail terceirizados compatíveis,
como Mailgun,
Mailjet ou
SendGrid.
Para enviar uma mensagem, siga estas etapas:
Crie uma mensagem usando um objeto Session
JavaMail.
Criar um objeto MimeMessage
.
Para configurar o remetente e o destinatário da mensagem, use a classe InternetAddress
.
Identifique o remetente chamando o método setFrom()
no
objeto MimeMessage
. Também é possível fornecer um nome pessoal como uma string no segundo parâmetro.
Identifique o destinatário passando um tipo de destinatário e um endereço para o
método addRecipient()
. O tipo de destinatário pode ser
Message.RecipientType.TO
, Message.RecipientType.CC
ou
Message.RecipientType.BCC
.
O construtor InternetAddress
gera um AddressException
se o endereço
de e-mail parece ser inválido.
Para definir um endereço para resposta, use o método setReplyTo()
.
Estabeleça o conteúdo da mensagem chamando métodos no
objeto MimeMessage
. Defina o assunto com setSubject()
e defina
o conteúdo do corpo de texto simples com setText()
.
Para enviar a mensagem, use o método estático send()
na
classe Transport
.
A API de serviço de e-mail permite especificar um conjunto limitado de cabeçalhos em mensagens de e-mail de saída. Para mais informações, consulte Cabeçalhos opcionais que podem ser usados.
O código de amostra a seguir demonstra como enviar e-mails:
As chamadas para o serviço de e-mail são assíncronas e retornam imediatamente. O serviço de e-mail gerencia o processo de contato dos servidores de e-mail dos destinatários e de entrega da mensagem. Se houver um problema ao enviar a mensagem para qualquer destinatário ou se o servidor de e-mail de um destinatário retornar uma mensagem de erro na entrega, a mensagem de erro será enviada para o remetente.
Como enviar mensagens de várias partes
É possível enviar mensagens de várias partes, como uma mensagem com anexos ou com um corpo de texto simples e um corpo HTML.
Para enviar uma mensagem de várias partes:
Crie um objeto MimeMultipart
para conter as partes, crie um
objeto MimeBodyPart
para cada anexo ou corpo de mensagem alternativo e adicione-o
ao contêiner.
Atribua o contêiner ao conteúdo de MimeMessage
.
O código de amostra a seguir demonstra como enviar uma mensagem de várias partes:
Por motivos de segurança, as partes e os anexos da mensagem precisam ser de um dos diversos tipos permitidos, e os nomes de arquivo do anexo precisam terminar com uma extensão de nome de arquivo reconhecida para o tipo. Para uma lista de tipos e extensões de nome de arquivo permitidos, consulte E-mail com anexos.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-09-04 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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)."]]