首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >自动连接的JavaMailSender上的空指针

自动连接的JavaMailSender上的空指针
EN

Stack Overflow用户
提问于 2018-09-28 03:54:59
回答 1查看 402关注 0票数 0

当我在"sender.createMimeMessage()“中使用变量私有静态JavaMailSender时,为什么会抛出空指针异常?

我尝试只测试这个方法"SendTicketMail“,这就是为什么我把它声明为静态的(因为我的main需要它),同样我也需要把发送者声明为静态的。

如果这就是问题所在,我如何在不将发送者或SendTicket声明为静态的情况下对其进行测试?

代码语言:javascript
复制
package sof.eng.project.Tickets;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.validation.constraints.NotNull;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.stereotype.Controller;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;

import soft.eng.project.Event.Event;
import soft.eng.project.Parent.Parent;
import soft.eng.project.Provider.Provider;

public class TicketsController {

    @Autowired
    private static JavaMailSender sender;

    static void SendTicketMail(Parent parent, Provider provider, Event event, int Tickets, int TotalPrice) throws MessagingException, DocumentException, IOException
            {
                MimeMessage mimeMessageObj = sender.createMimeMessage();
                MimeMessageHelper messageObj = new MimeMessageHelper(mimeMessageObj, true, "UTF-8");
               // messageObj.setFrom(fromEmail);
                messageObj.setTo(parent.getEmail());
                messageObj.setSubject("Your ticket for...");
                messageObj.setText("<strong>See The Attached</strong>", true);

                String firstName = parent.getFirstName();
                String lastName = parent.getLastName();
                String eventname = event.getTitle();
                String fileName = "tickets.pdf";

                PDFConfiguration.makePDF(fileName, firstName, lastName, eventname, Tickets, TotalPrice);


                byte[] data = null;
                try {
                    data = readFully(fileName);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                messageObj.addAttachment(""+ eventname + "-Ticket.pdf", new ByteArrayResource(data));
            }

    public static byte[] readFully(String sourcePath) throws IOException
            {
                InputStream stream = new FileInputStream(sourcePath);

                byte[] buffer = new byte[8192];
                ByteArrayOutputStream baos = new ByteArrayOutputStream();

                int bytesRead;
                while ((bytesRead = stream.read(buffer)) != -1)
                {
                    baos.write(buffer, 0, bytesRead);
                }
                return baos.toByteArray();
            }

    public static void main(String[] args) throws MessagingException, DocumentException, IOException 
    {
        Parent parent = new Parent();
        parent.setFirstName("Max");
        parent.setLastName("Maximus");
        parent.setEmail("kanic123@gmail.com");
        parent.setPassword("asda");
        parent.setAddress("address");

        Provider provider = new Provider();
        provider.setFirstName("firstName");
        provider.setLastName("lastName");
        provider.setPassword("asda");
        provider.setCompanyName("asdaCorps");
        provider.setEmail("asda@gmail.com");
        provider.setBankAccount("123asda123");
        provider.setAddress("address Str");
        provider.setStatus("normal");

        Event event = new Event();
        event.setEmail("email");
        event.setTickets(1000);
        event.setPrice(10);
        event.setAddress("address");
        event.setMinAge(5);
        event.setMaxAge(15);
        event.setCategory("athletics");
        event.setTicketsLeft(100);
        event.setReleaseDate(null);
        event.setKickoffDate(null);
        event.setDescription("description");

        int Tickets = 10;
        int TotalPrice = 100;
        SendTicketMail(parent,provider,event,Tickets, TotalPrice);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-09-28 04:10:34

您需要启动Spring应用程序上下文。如果您想运行测试,我建议您使用JUnit和SpringJUnit4ClassRunner

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52544250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档