Skicka e-post med SendGrid från java i en Azure-distributionHow to Send Email Using SendGrid from Java in an Azure Deployment

I följande exempel visas hur du kan använda SendGrid för att skicka e-postmeddelanden från en webb sida som finns i Azure.The following example shows you how you can use SendGrid to send emails from a web page hosted in Azure. Det resulterande programmet kommer att uppmana användaren att ange e-postvärden, som visas i följande skärm bild.The resulting application will prompt the user for email values, as shown in the following screenshot.

E-postformulär

Det resulterande e-postmeddelandet ser ut ungefär som på följande skärm bild.The resulting email will look similar to the following screenshot.

E-postmeddelande

Du måste göra följande för att använda koden i det här avsnittet:You'll need to do the following to use the code in this topic:

  1. Hämta javax. e-jar v7, till exempel från https://www.oracle.com/technetwork/java/javamail/index.html .Obtain the javax.mail JARs, for example from https://www.oracle.com/technetwork/java/javamail/index.html.
  2. Lägg till jar v7 i din Java-build-sökväg.Add the JARs to your Java build path.
  3. Om du använder Sol förmörkelse för att skapa Java-programmet kan du inkludera SendGrid-biblioteken i program distributions filen (WAR) med hjälp av funktionen för distributions sammansättning i Sol förmörkelse.If you are using Eclipse to create this Java application, you can include the SendGrid libraries in your application deployment file (WAR) using Eclipse's deployment assembly feature. Om du inte använder Sol förmörkelse för att skapa Java-programmet, se till att biblioteken ingår i samma Azure-roll som Java-programmet och läggs till i programmets klass Sök väg.If you are not using Eclipse to create this Java application, ensure the libraries are included within the same Azure role as your Java application, and added to the class path of your application.

Du måste också ha ditt eget SendGrid-användarnamn och-lösen ord för att kunna skicka e-postmeddelandet.You must also have your own SendGrid username and password, to be able to send the email. Information om hur du kommer igång med SendGrid finns i så här skickar du e-post med SendGrid från Java.To get started with SendGrid, see How to send email using SendGrid from Java.

Dessutom rekommenderar vi att du skapar ett Hello World-program för Azure i Sol förmörkelseeller med andra tekniker som är värdar för Java-program i Azure om du inte använder Sol förmörkelse.Additionally, familiarity with the information at Creating a Hello World Application for Azure in Eclipse, or with other techniques for hosting Java applications in Azure if you are not using Eclipse, is highly recommended.

Skapa ett webb formulär för att skicka e-postCreate a web form for sending email

Följande kod visar hur du skapar ett webb formulär för att hämta användar data för att skicka e-post.The following code shows how to create a web form to retrieve user data for sending email. I syfte med det här innehållet heter JSP-filen emailform.jsp.For purposes of this content, the JSP file is named emailform.jsp.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Email form</title>
</head>
<body>
  <p>Fill in all fields and click <b>Send this email</b>.</p>
  <br/>
  <form action="sendemail.jsp" method="post">
    <table>
      <tr>
        <td>To:</td>
        <td><input type="text" size=50 name="emailTo">
        </td>
      </tr>
      <tr>
        <td>From:</td>
        <td><input type="text" size=50 name="emailFrom">
        </td>
      </tr>
      <tr>
        <td>Subject:</td>
        <td><input type="text" size=100 name="emailSubject" value="My email subject">
        </td>
      </tr>
      <tr>
        <td>Text:</td>
        <td><input type="text" size=400 name="emailText" value="Hello,<p>This is my message.</p>Thank you." />
        </td>
      </tr>
      <tr>
        <td>SendGrid user name:</td>
        <td><input type="text" name="sendGridUser">
        </td>
      </tr>
      <tr>
        <td>SendGrid password:</td>
        <td><input type="password" name="sendGridPassword">
        </td>
      </tr>
      <tr>
        <td colspan=2><input type="submit" value="Send this email">
        </td>
      </tr>
    </table>
  </form>
  <br/>
</body>
</html>

Skapa koden för att skicka e-postmeddelandetCreate the code to send the email

Följande kod, som anropas när du fyller i formuläret i emailform.jsp, skapar e-postmeddelandet och skickar det.The following code, which is called when you complete the form in emailform.jsp, creates the email message and sends it. I syfte med det här innehållet heter JSP-filen sendemail.jsp.For purposes of this content, the JSP file is named sendemail.jsp.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" import="javax.activation.*, javax.mail.*, javax.mail.internet.*, java.util.Date, java.util.Properties" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Email processing happens here</title>
</head>
<body>
    <b>This is my send mail page.</b><p/>
  <%

  final String sendGridUser = request.getParameter("sendGridUser");
  final String sendGridPassword = request.getParameter("sendGridPassword");

  class SMTPAuthenticator extends Authenticator
  {
    public PasswordAuthentication getPasswordAuthentication()
    {
        String username = sendGridUser;
        String password = sendGridPassword;

        return new PasswordAuthentication(username, password);   
    }
  }
  try
  {

      // The SendGrid SMTP server.
      String SMTP_HOST_NAME = "smtp.sendgrid.net";

      Properties properties;

      properties = new Properties();

      // Specify SMTP values.
      properties.put("mail.transport.protocol", "smtp");
      properties.put("mail.smtp.host", SMTP_HOST_NAME);
      properties.put("mail.smtp.port", 587);
      properties.put("mail.smtp.auth", "true");

      // Display the email fields entered by the user. 
      out.println("Value entered for email Subject: " + request.getParameter("emailSubject") + "<br/>");        
      out.println("Value entered for email      To: " + request.getParameter("emailTo") + "<br/>");
      out.println("Value entered for email    From: " + request.getParameter("emailFrom") + "<br/>");
      out.println("Value entered for email    Text: " + "<br/>" + request.getParameter("emailText") + "<br/>");

      // Create the authenticator object.
      Authenticator authenticator = new SMTPAuthenticator();

      // Create the mail session object.
      Session mailSession;
      mailSession = Session.getDefaultInstance(properties, authenticator);

      // Display debug information to stdout, useful when using the
      // compute emulator during development.
      mailSession.setDebug(true);

      // Create the message and message part objects.
      MimeMessage message;
      Multipart multipart;
      MimeBodyPart messagePart; 

      message = new MimeMessage(mailSession);

      multipart = new MimeMultipart("alternative");
      messagePart = new MimeBodyPart();
      messagePart.setContent(request.getParameter("emailText"), "text/html");
      multipart.addBodyPart(messagePart);            

      // Specify the email To, From, Subject and Content. 
      message.setFrom(new InternetAddress(request.getParameter("emailFrom")));
      message.addRecipient(Message.RecipientType.TO, new InternetAddress(request.getParameter("emailTo")));
      message.setSubject(request.getParameter("emailSubject")); 
      message.setContent(multipart);

      // Uncomment the following if you want to add a footer.
      // message.addHeader("X-SMTPAPI", "{\"filters\": {\"footer\": {\"settings\": {\"enable\":1,\"text/html\": \"<html>This is my <b>email footer</b>.</html>\"}}}}");

      // Uncomment the following if you want to enable click tracking.
      // message.addHeader("X-SMTPAPI", "{\"filters\": {\"clicktrack\": {\"settings\": {\"enable\":1}}}}");

      Transport transport;
      transport = mailSession.getTransport();
      // Connect the transport object.
      transport.connect();
      // Send the message.
      transport.sendMessage(message,  message.getRecipients(Message.RecipientType.TO));
      // Close the connection.
      transport.close();

    out.println("<p>Email processing completed.</p>");

  }
  catch (Exception e)
  {
      out.println("<p>Exception encountered: " + 
                        e.getMessage()     +
                        "</p>");   
  }
%>

</body>
</html>

Förutom att skicka e-postmeddelandet ger emailform.jsp ett resultat för användaren. ett exempel är följande skärm bild:In addition to sending the email, emailform.jsp provides a result for the user; an example is the following screenshot:

Skicka e-post resultat

Nästa stegNext steps

Distribuera ditt program till Compute-emulatorn och i en webbläsare kör emailform.jsp, ange värden i formuläret, klicka på skicka det här e-postmeddelandet och se resultatet i sendemail.jsp.Deploy your application to the compute emulator and within a browser run emailform.jsp, enter values in the form, click Send this email, and then see results in sendemail.jsp.

Den här koden angavs för att visa hur du använder SendGrid i Java på Azure.This code was provided to show you how to use SendGrid in Java on Azure. Innan du distribuerar till Azure i produktion kanske du vill lägga till mer fel hantering eller andra funktioner.Before deploying to Azure in production, you may want to add more error handling or other features. Exempel:For example: