2016-06-16 12 views
1

こんにちは私は、アプリが出てこなくてもバックグラウンドでメールを送信しようとしています。私はGMailSender/JSSEの誰かが言及したと思った/これは前に尋ねられたGMailSenderにパッケージを追加するのが難しかったnew com.provider.JSSEProvider() Cannot resolve symbole providerしかし、私はパッケージ名を入力するとエラーが出る。メールアプリが表示されずにメールを送信しようとしています

static { 
     Security.addProvider(new com.queens.feedback.JSSEProvider()); 
    } 

私はパッケージをリンクするにはどうすればよいの完全なコード

package queens.feedback; 

/** 
* Created by 2618436 on 16/06/2016. 
*/ 
import javax.activation.DataHandler; 
import javax.activation.DataSource; 
import javax.mail.Message; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 
import java.io.ByteArrayInputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.security.Security; 
import java.util.Properties; 


public class GMailSender extends javax.mail.Authenticator { 
    private String mailhost = "smtp.gmail.com"; 
    private String user; 
    private String password; 
    private Session session; 

    static { 
     Security.addProvider(new com.queens.feedback.JSSEProvider()); 
    } 

    public GMailSender(String user, String password) { 
     this.user = user; 
     this.password = password; 

     Properties props = new Properties(); 
     props.setProperty("mail.transport.protocol", "smtp"); 
     props.setProperty("mail.host", mailhost); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.port", "465"); 
     props.put("mail.smtp.socketFactory.port", "465"); 
     props.put("mail.smtp.socketFactory.class", 
       "javax.net.ssl.SSLSocketFactory"); 
     props.put("mail.smtp.socketFactory.fallback", "false"); 
     props.setProperty("mail.smtp.quitwait", "false"); 

     session = Session.getDefaultInstance(props, this); 
    } 

    protected PasswordAuthentication getPasswordAuthentication() { 
     return new PasswordAuthentication(user, password); 
    } 

    public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception { 
     try{ 
      MimeMessage message = new MimeMessage(session); 
      DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain")); 
      message.setSender(new InternetAddress(sender)); 
      message.setSubject(subject); 
      message.setDataHandler(handler); 
      if (recipients.indexOf(',') > 0) 
       message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients)); 
      else 
       message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients)); 
      Transport.send(message); 
     }catch(Exception e){ 

     } 
    } 

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

} 

+0

私はここでBackgroundCodeを使用するためにtreidを使用していますが、これは、utilsとcontextがエラーを出すものの、この問題を解決しましたこれで – user3603437

答えて

0

私はこれを使用しました。あなたはGmailの送信者クラスのワーキングバージョンを含んでいます。

+0

私もそれを使用しましたが、それでも動作していません。 – user3603437

関連する問題