现在,我面临着一个非常奇怪的问题,那就是在发送邮件期间
这很奇怪,因为当我在localhost上测试我的应用程序时,一切都很好,但是当我部署应用程序时,它可以发送邮件。

你们也可以检查一下
http://www.mkjit-solutions.com/app/jsf/Contactus.xhtml

我看到此异常:

javax.mail.SendFailedException: Sending failed; nested exception is:
class javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first. yv6sm13782372pac.29 - gsmtp


我使用的代码是

props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.debug", "true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");


Session session = Session.getInstance(props,
          new javax.mail.Authenticator()
                  {
            protected PasswordAuthentication getPasswordAuthentication()
                        {
                return new PasswordAuthentication(userAddress, userPassword);
            }
          });

        customMsg += "3 - ";

        try {

                        customMsg += "3.1 - ";
            Message message = new MimeMessage(session);

                        customMsg += "3.2 - ";
            message.setFrom(new InternetAddress(userAddress));

                        customMsg += "3.3 -  ";
                        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(toAddress));

                        customMsg += "3.4 -  ";
                        message.setSubject(subject);

                        customMsg += "3.5 -  ";
                        message.setText(msg);

                        customMsg += "3.6 -  ";
 Transport transport = session.getTransport("smtp");
            Transport.send(message);

                  customMsg += "4 -  ";


                    System.out.println("ua"+userAddress);
                    System.out.println(""+userPassword);
                    System.out.println("ta"+toAddress);




                  System.out.println("Done");
                        flag = true;
                        customMsg += " [Value of Flag "+flag+"] ";
        }
                catch (Exception ex)
                {
                    System.out.println("");
                    ex.printStackTrace();
                    flag = false;
                    customMsg += " [Value of Flag "+flag+"] ";
                    this.e = ex;
                    //throw new RuntimeException(e);

        }

                return flag;

最佳答案

首先修复这些common mistakes

Gmail示例代码在JavaMail FAQ中。

如果仍然无法正常工作,请遵循以下debugging tips并发布结果。

09-28 07:44