2013-12-18 93 views
-1

我不明白我在做什麼錯誤plz幫助我find.also我attching的代碼。 我使用代碼http://gafurbabu.wordpress.com/tag/send-email-via-smtp-in-android/ 主要活動電子郵件發送按鈕點擊不使用意圖

public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final Button send = (Button) this.findViewById(R.id.send); 
    send.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      try { 
       GMailSender sender = new GMailSender("[email protected]", "rushikesh"); 
       sender.sendMail("This is Subject", 
         "This is Body", 
         "[email protected]", 
         "[email protected]"); 
      } catch (Exception e) { 
       Log.e("SendMail", e.getMessage(), e); 
      } 

     } 
    }); 

} 

} GmailSender類

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

}

JSSEProvide類

public final class JSSEProvider extends Provider { 

public JSSEProvider() { 
    super("HarmonyJSSE", 1.0, "Harmony JSSE Provider"); 
    AccessController.doPrivileged(new java.security.PrivilegedAction<Void>() { 
     public Void run() { 
      put("SSLContext.TLS", 
        "org.apache.harmony.xnet.provider.jsse.SSLContextImpl"); 
      put("Alg.Alias.SSLContext.TLSv1", "TLS"); 
      put("KeyManagerFactory.X509", 
        "org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl"); 
      put("TrustManagerFactory.X509", 
        "org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl"); 
      return null; 
     } 
    }); 
} 

回答將幫助我 謝謝提前

+0

那麼問題是什麼?發生任何錯誤? – Piyush

+0

沒有錯誤發生..但我不明白是什麼happend我這樣做的第一次也調試代碼Session.getDefaulteIstance()方法返回[email protected] ...類似的東西,當把斷點發送方法包含錯誤的發送方法的內容 – user3104717

+0

是的,我解決了問題,我改變了mail.host int mail.smtp.host.Thank你的寶貴時間。再次見到你! :) – user3104717

回答

0

你有這個

<uses-permission android:name="android.permission.INTERNET" /> 
在AndroidManifest.xml中

添加在try-catch從GMailSender方法Sendmail的漁獲代碼,把一個斷點,一個在這條線:

Log.e("SendMail", e.getMessage(), e); 

在MainAvtivity OnClick方法。

它擊中其中之一嗎?

+0

我正在調試Session.getDefaultInstance()中的代碼,它返回[email protected]和Transport.send(消息)方法返回所有內容null – user3104717

+0

你是否從第一步從你得到的鏈接下載3個罐子碼?你把它們包含在你的項目中了嗎? – Radu1987

+0

是的,我也這樣做 – user3104717

相關問題