当前位置: 首页 > 知识库问答 >
问题:

Transport.send不在javax.mail图书馆工作

咸皓
2023-03-14

我必须给主类加上JavaMailUtl类这是我的JavaMailUtl类:

import javax.mail.Authenticator;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


public class JavaMailUtl {
    public static void sendMail(String recepient) throws Exception{
        System.out.println("Preparing Email");
        Properties properties = new Properties();

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

        String myAccountEmail = "someEmail@gmail.com";
        String password = "xxxxxxxx";

        Session session = Session.getInstance(properties, new Authenticator() {
            @Override
            protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
                return new javax.mail.PasswordAuthentication(myAccountEmail, password);
            }

});
        Message message = prepareMessage(session, myAccountEmail, recepient);
        Transport.send(message);
        System.out.println("Message sent!");
    }

    private static Message prepareMessage(Session session, String myAccountEmail, String recepient){
        try {
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(myAccountEmail));
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(recepient));
            message.setSubject("Gmail API");
            message.setText("This Message sent from Java APP");
        } catch (Exception ex) {
            Logger.getLogger(JavaMailUtl.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
}

这是我的主要课程:

public class JavaEmailMessaging {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
        JavaMailUtl.sendMail("someOtherEmail@gmail.com");
    }

}

当我尝试运行项目时,出现以下错误:

Preparing Email
Exception in thread "main" java.lang.NullPointerException
    at javax.mail.Transport.send(Transport.java:123)
    at mailing.email.messaging.JavaMailUtl.sendMail(JavaMailUtl.java:43)
    at mailing.email.messaging.JavaEmailMessaging.main(JavaEmailMessaging.java:18)

多次仔细检查代码,发现没有问题,我的每个对象都指向了正确的位置。

共有1个答案

陈飞
2023-03-14

您的prepareMessage方法返回null。在“尝试”之前定义消息,然后返回消息。

类似这样:

    private static Message prepareMessage(Session session, String myAccountEmail, String recepient) {
        Message message = null;
        try {
            message = new MimeMessage(session);
            message.setFrom(new InternetAddress(myAccountEmail));
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(recepient));
            message.setSubject("Gmail API");
            message.setText("This Message sent from Java APP");
        } catch (Exception ex) {
            Logger.getLogger(JavaMailUtl.class.getName()).log(Level.SEVERE, null, ex);
        }
        return message;
    }

希望这有帮助。

编辑:另外,值得注意的是,Java 14中的一个增强应该可以减少这种情况的痛苦。您将获得有关什么是null的更多信息。

 类似资料:
  • 我正在尝试使用javamail从一个帐户向另一个帐户发送电子邮件。但代码无法执行传输。发送(msg);线可能的原因是什么?下面是以下jsp代码。

  • 在尝试设置Python包(mlabwrap)时,我收到以下链接错误: build命令如下所示: c-pthread-shared-Wl,-O1-Wl,-Bsymbolic functions-Wl,-Bsymbolic functions-Wl,-z,relro-fno严格别名-DNDEBUG-g-fwrapv-O2-Wall-Wstrict原型-D_FORTIFY_SOURCE=2-g-fsta

  • 我刚接触Spring,我可能犯了最愚蠢的错误,但我不能解决这个问题超过2个小时。根据视频教程,我做了分页,我做的和他的一模一样,但他在实体之间没有关系。我认为错误在于作者和图书实体之间的一对一关系。你能帮忙吗? 我想添加分页,因为我的表中有100多万条记录,在添加分页后,我出现了这个错误。 账簿实体: 作者实体: BookServiceImpl类: } LibrarianController类:

  • 我正在使用Fresco库将图像和GIF加载到我的应用程序中。我遇到的最大的限制是壁画的布局宽度和高度必须设置。因此,我设置了简单的付款人视图,如下所示: 我的问题是,如果图像的高度大于宽度,那么在图像的右边有很多空白(见附件),但是高度是好的 然后它可能发生在高度,如果实际图像小于宽度(见附件),所以这里,因为固定的高度是250dp,有很多空白的图像下面。

  • 提供了大量的库例程。 有些内置在解释器, ex.exe, exw.exe or exu 。 其他的是用Euphoria编写的,你必须在euphoria\include目录中包含一个.e文件才能使用它们。 要指出可以传入和返回的对象类型,使用以下前缀 - S.No 前缀和描述 1 x 一般对象(原子或序列) 2 s 一个序列 3 a 一个原子 4 i 整数 5 fn 用作文件编号的整数 6 st 字

  • 问题内容: 我正在尝试获取这个伐木工人库,并且它总是挂在下载步骤上。 我在星期五和今天都遇到了同样的问题。其他Go软件包安装正常。我正在使用Scientific Linux。有什么想法怎么回事? (它挂在最后一行,到目前为止,我已经运行了20分钟。) 问题答案: 谢谢@Jimb。将git升级到较新版本可解决此问题。