how to getAuth token and send email in background?

后端 未结 1 812
日久生厌
日久生厌 2020-12-10 10:08

I have used JavaMail-android libraries to send mail in background .In order to free user from username and password I decided to use Auth token generated when adding an acco

相关标签:
1条回答
  • 2020-12-10 10:43

    Hi its so simple and easy call your email sending class through Service it will work automatically email will send on particular time.

    Here i have posted sample code: you should write code in service as GMailSender sender = new GMailSender(send_id,send_pass,imgpath); its for sending email through your gmail id only.

    and now GmailSender.java as follows:

    public class GMailSender extends javax.mail.Authenticator 
    

    {

    private String mailhost = "smtp.gmail.com";   
    private String user;   
    private String password;   
    private Session session;   
    private String path_img;  
    
    static {   
        // AppLogger.LogError("Reached to Step1.1");
        Security.addProvider(new JSSEProvider());   
    }  
    
    public GMailSender(String user, String password,String path) 
    {  
        path_img = path;
        // AppLogger.LogError("Reached to Step1.2");
        this.user = user;   
        this.password = password;   
    
        Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465");
    
    
        //AppLogger.LogError("Reached to Step1.3");
        session = Session.getDefaultInstance(props, this);   
        //AppLogger.LogError("Reached to Step1.4");
    }   
    
    
    
    
    
    protected PasswordAuthentication getPasswordAuthentication() {   
        return new PasswordAuthentication(user, password);
    }   
    
    public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {   
        try{
    
        //   AppLogger.LogError("Reached to Step1.5");
        MimeMessage message = new MimeMessage(session); 
       // AppLogger.LogError("Reached to Step1.6");
        DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/html"));   
        message.setSender(new InternetAddress(sender));   
        message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(recipients));
        //AppLogger.LogError("Reached to Step1.7");
        message.setSubject(subject);   
    
        message.setDataHandler(handler);  
    
        MimeMultipart multipart = new MimeMultipart("related");
        String htmlText=null;
    
        BodyPart messageBodyPart = new MimeBodyPart();
        htmlText = body+ "";
    
        messageBodyPart.setContent(htmlText, "text/html");
    
    
    
        MimeBodyPart attachmentPart = new MimeBodyPart();
        FileDataSource fileDataSource = new FileDataSource(path_img) {
            @Override
            public String getContentType() {
                return "image/jpg";
            }
        };
        attachmentPart.setDataHandler(new DataHandler(fileDataSource));
        attachmentPart.setFileName("image.jpg");
    
        multipart.addBodyPart(messageBodyPart);
       multipart.addBodyPart(attachmentPart);
    
        message.setContent(multipart);
    
        //AppLogger.LogError("Reached to Step1.8");
        if (recipients.indexOf(',') > 0)   
        {
            //AppLogger.LogError("Reached to Step1.9");
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));   
            Transport.send(message); 
          //  AppLogger.LogError("Reached to Step2.1");
        }
        else 
        {
            //AppLogger.LogError("Reached to Step2.2");
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));  
            Transport.send(message); 
        //AppLogger.LogError("Reached to Step2.3");
        }
       // Transport.send(message); 
       // AppLogger.LogError("Reached to Step2.4");
        }catch (Exception e)
        {
            throw new FileNotFoundException();
          }
    
    
    
    
    
    }   
    
    public class ByteArrayDataSource implements DataSource {   
        private byte[] data;   
        private String type;   
    
        public ByteArrayDataSource(byte[] data, String type) {   
            super();   
            this.data = data;   
            this.type = type;   
        }   
    
        public ByteArrayDataSource(byte[] data) {   
            super();   
            this.data = data;   
        }   
    
        public void setType(String type) {   
            this.type = type;   
        }   
    
        public String getContentType() {   
            if (type == null)   
                return "application/octet-stream";   
            else  
                return type;   
        }   
    
        public InputStream getInputStream() throws IOException {   
            return new ByteArrayInputStream(data);   
        }   
    
        public String getName() {   
            return "ByteArrayDataSource";   
        }   
    
        public OutputStream getOutputStream() throws IOException {   
            throw new IOException("Not Supported");   
        }   
    }   
    

    try this sample and try for all email ids. and make sure that you have import all libraries needed..

    0 讨论(0)
提交回复
热议问题