【问题标题】:Running JavaMail API in Gradle Project on Eclipse在 Eclipse 上的 Gradle 项目中运行 JavaMail API
【发布时间】:2016-10-27 19:00:00
【问题描述】:

我的 Eclipse IDE 中有一个 Gradle 项目,我需要能够发送电子邮件收据作为学校项目的一部分。我查看了这个链接http://www.tutorialspoint.com/java/java_sending_email.htm 来尝试创建最基本的电子邮件。我已经尝试过“发送简单的电子邮件”示例,但这是我的错误:

Usage - java org.mortbay.jetty.Main [<addr>:]<port>
Usage - java org.mortbay.jetty.Main [<addr>:]<port> docroot
Usage - java org.mortbay.jetty.Main [<addr>:]<port> -webapp myapp.war
Usage - java org.mortbay.jetty.Main [<addr>:]<port> -webapps webapps
Usage - java -jar jetty-x.x.x-standalone.jar [<addr>:]<port>
Usage - java -jar jetty-x.x.x-standalone.jar [<addr>:]<port> docroot
Usage - java -jar jetty-x.x.x-standalone.jar [<addr>:]<port> -webapp myapp.war
Usage - java -jar jetty-x.x.x-standalone.jar [<addr>:]<port> -webapps webapps

我猜我没有正确安装 JavaMail API 和 Java Activation Framework (JAF)。我已经遵循了一些关于如何做到这一点的指南。我所做的是右键单击 gradle project -> Properties -> Java Build Path -> Libraries tab -> Add External JARs .. 我添加了 JAF 和 JavaMail jar 文件(activation-1.1.1.jar 和 mail-1.4 .5.jar)。我也加了

compile group: 'javax.mail', name: 'mail', version: '1.4.5'
compile group: 'javax.activation', name: 'activation', version: '1.1.1'

到我的 build.gradle 文件。任何有关如何使这项工作的帮助将不胜感激。

这是我使用的代码。

// File Name SendEmail.java

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendEmail
{
   public static void main(String [] args)
 {    
      // Recipient's email ID needs to be mentioned.
  String to = "abcd@gmail.com";

  // Sender's email ID needs to be mentioned
  String from = "web@gmail.com";

  // Assuming you are sending email from localhost
  String host = "localhost";

  // Get system properties
  Properties properties = System.getProperties();

  // Setup mail server
  properties.setProperty("mail.smtp.host", host);

  // Get the default Session object.
  Session session = Session.getDefaultInstance(properties);

  try{
     // Create a default MimeMessage object.
     MimeMessage message = new MimeMessage(session);

     // Set From: header field of the header.
     message.setFrom(new InternetAddress(from));

     // Set To: header field of the header.
     message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

     // Set Subject: header field
     message.setSubject("This is the Subject Line!");

     // Now set the actual message
     message.setText("This is actual message");

     // Send message
     Transport.send(message);
     System.out.println("Sent message successfully....");
  }catch (MessagingException mex) {
     mex.printStackTrace();
  }
 }
}

【问题讨论】:

  • 发布您迄今为止编写的代码以发送电子邮件。
  • 我使用了与我帖子中教程链接中提供的完全相同的代码。
  • 您的错误似乎与 JavaMail 无关。当您使用不正确的参数启动 Jetty(Java 网络服务器)时,您会遇到错误。您可能想要描述您尝试启动应用程序的方式,以及您正在使用的 Eclipse 项目的类型。
  • @MarkRotteveel 我不确定我是如何运行 Jetty 但我的应用程序正在使用 Gradle 项目。
  • 那么,您究竟是如何尝试运行您的应用程序(哪个命令行,或哪个 Eclipse 选项)?

标签: java eclipse gradle


【解决方案1】:

您必须进行适当的设置才能发送电子邮件。喜欢

String host = "localhost";  // instead of localhost you have to give your hostname.

如果您想通过 gmail 发送邮件,请使用以下代码:

SendEmail.java

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendEmail{

    public static void main(String[] args) {

        final String username = "username@gmail.com";
        final String password = "password";

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

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

        try {

            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("from-email@gmail.com"));
            message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("to-email@gmail.com"));
            message.setSubject("Testing Subject");
            message.setText("Welcome Message");

            Transport.send(message);

            System.out.println("Mail Sent Successfully");

        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
}

【讨论】:

  • 我已经尝试过这段代码,它告诉我登录浏览器并重试,即使我已登录浏览器中的电子邮件地址。
  • 您是否使用您在以下字段中提供的相同电子邮件 ID 和密码登录 gmail:final String username = "username@gmail.com"; final String password = "password"; b> 您的 "from-email@gmail.com" 也应该与您的用户名相同。
  • 是的,我都做了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 2019-08-09
  • 2016-09-12
相关资源
最近更新 更多