Нулевой указатель на проводной JavaMailSender - PullRequest
0 голосов
/ 27 сентября 2018

Почему это вызывает исключение нулевого указателя для переменной private static JavaMailSender, когда я использую его в "sender.createMimeMessage ()"?

Я пытаюсь проверить только этот метод "SendTicketMail", которыйпочему я объявил его статическим (потому что так требовало мое основное), а также мне нужно было объявить отправителя статическим.

Если это проблема, как я могу проверить их, не объявляя отправителя или SendTicket статическим?

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);
    }
}

1 Ответ

0 голосов
/ 27 сентября 2018

Вам необходимо запустить контекст приложения Spring.Если вы хотите запустить тест, я рекомендую вам использовать JUnit и SpringJUnit4ClassRunner

...