2016-05-23 5 views
0

My-CodeIn Android, E-Mail-Benachrichtigung funktioniert nicht

EmailSendActivity m = new EmailSendActivity("userName", "password"); 

     String[] toArr = { "Recipients"}; 
     m.setTo(toArr); 
     m.setFrom("[email protected]"); //Same as user email 
     m.setSubject("Party Booked"); 
     m.setBody("Successsssssssssssssssssssssssss"); 

     try { 
      //m.addAttachment("/sdcard/filelocation"); 

      if(m.send()) { 
      Toast.makeText(this, "Sent Email.", Toast.LENGTH_LONG).show(); 
      } else { 
      Toast.makeText(this, "Email was not sent.", Toast.LENGTH_LONG).show(); 
      } 
     } catch(Exception e) { 
      //Toast.makeText(MailApp.this, "There was a problem sending the email.", Toast.LENGTH_LONG).show(); 
      Log.e("ClaimRegister", "Could not send email.", e); 
     } 

EmailSendActivity

public class EmailSendActivity extends javax.mail.Authenticator { 

     private String _user; 
     private String _pass; 

     private String[] _to; 
     private String _from; 

     private String _port; 
     private String _sport; 

     private String _host; 

     private String _subject; 
     private String _body; 

     private boolean _auth; 

     private boolean _debuggable; 

     private Multipart _multipart; 


     public EmailSendActivity() { 
     _host = "smtp.gmail.com"; // default smtp server 
     _port = "465"; // default smtp port 
     _sport = "465"; // default socketfactory port 

     _user = ""; // username 
     _pass = ""; // password 
     _from = ""; // email sent from 
     _subject = ""; // email subject 
     _body = ""; // email body 

     _debuggable = false; // debug mode on or off - default off 
     _auth = true; // smtp authentication - default on 

     _multipart = new MimeMultipart(); 

     // There is something wrong with MailCap, javamail can not find a handler for the multipart/mixed part, so this bit needs to be added. 
     MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap(); 
     mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html"); 
     mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml"); 
     mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain"); 
     mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed"); 
     mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822"); 
     CommandMap.setDefaultCommandMap(mc); 
     } 

     public EmailSendActivity(String user, String pass) { 
     this(); 

     _user = user; 
     _pass = pass; 
     } 

     public boolean send() throws Exception { 
     Properties props = _setProperties(); 

     if(!_user.equals("") && !_pass.equals("") && _to.length > 0 && !_from.equals("") && !_subject.equals("") && !_body.equals("")) { 
      Session session = Session.getInstance(props, this); 

      MimeMessage msg = new MimeMessage(session); 

      msg.setFrom(new InternetAddress(_from)); 

      InternetAddress[] addressTo = new InternetAddress[_to.length]; 
      for (int i = 0; i < _to.length; i++) { 
      addressTo[i] = new InternetAddress(_to[i]); 
      } 
      msg.setRecipients(MimeMessage.RecipientType.TO, addressTo); 

      msg.setSubject(_subject); 
      msg.setSentDate(new Date()); 

      // setup message body 
      BodyPart messageBodyPart = new MimeBodyPart(); 
      messageBodyPart.setText(_body); 
      _multipart.addBodyPart(messageBodyPart); 

      // Put parts in message 
      msg.setContent(_multipart); 
      Log.d("Msg !!!!","msg =" +msg.toString()); 
      // send email 
      Transport.send(msg); 

      return true; 
     } else { 
      return false; 
     } 
     } 

     public void addAttachment(String filename) throws Exception { 
     BodyPart messageBodyPart = new MimeBodyPart(); 
     DataSource source = new FileDataSource(filename); 
     messageBodyPart.setDataHandler(new DataHandler(source)); 
     messageBodyPart.setFileName(filename); 

     _multipart.addBodyPart(messageBodyPart); 
     } 

     @Override 
     public PasswordAuthentication getPasswordAuthentication() { 
     return new PasswordAuthentication(_user, _pass); 
     } 

     private Properties _setProperties() { 
     Properties props = new Properties(); 

     props.put("mail.smtp.host", _host); 

     if(_debuggable) { 
      props.put("mail.debug", "true"); 
     } 

     if(_auth) { 
      props.put("mail.smtp.auth", "true"); 
     } 

     props.put("mail.smtp.port", _port); 
     props.put("mail.smtp.socketFactory.port", _sport); 
     props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 
     props.put("mail.smtp.socketFactory.fallback", "false"); 

     return props; 
     } 

     // the getters and setters 
     public String getBody() { 
     return _body; 
     } 

     public void setBody(String _body) { 
     this._body = _body; 
     } 
     public void setTo(String[] toArr) { 
      this._to = toArr; 
     } 

     public void setFrom(String string) { 
      this._from = string; 
     } 

     public void setSubject(String string) { 
      this._subject = string; 
     } 


    } 

Fehler

05-23 03:22:28.494: E/ClaimRegister(2107): Could not send email. 

05-23 03:22:28.494: E/ClaimRegister(2107): android.os.NetworkOnMainThreadException 

05-23 03:22:28.494: E/ClaimRegister(2107): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145) 

05-23 03:22:28.494: E/ClaimRegister(2107): at java.net.InetAddress.lookupHostByName(InetAddress.java:385) 

05-23 03:22:28.494: E/ClaimRegister(2107): at java.net.InetAddress.getLocalHost(InetAddress.java:365) 

05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.internet.InternetAddress.getLocalHostName(InternetAddress.java:568) 

05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.internet.InternetAddress._getLocalAddress(InternetAddress.java:547) 

05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.internet.InternetAddress.getLocalAddress(InternetAddress.java:518) 

05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.internet.UniqueValue.getUniqueMessageIDValue(UniqueValue.java:99) 

05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.internet.MimeMessage.updateMessageID(MimeMessage.java:2163) 

05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2192) 

05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2151) 

05-23 03:22:28.494: E/ClaimRegister(2107): at javax.mail.Transport.send(Transport.java:123) 

05-23 03:22:28.494: E/ClaimRegister(2107): at com.clip.android.EmailSendActivity.send(EmailSendActivity.java:112) 

05-23 03:22:28.494: E/ClaimRegister(2107): at com.clip.android.ClaimRegister.submit(ClaimRegister.java:257) 

05-23 03:22:28.494: E/ClaimRegister(2107): at java.lang.reflect.Method.invokeNative(Native Method) 

05-23 03:22:28.494: E/ClaimRegister(2107): at java.lang.reflect.Method.invoke(Method.java:515) 

05-23 03:22:28.494: E/ClaimRegister(2107): at android.view.View$1.onClick(View.java:3818) 

05-23 03:22:28.494: E/ClaimRegister(2107): at android.view.View.performClick(View.java:4438) 

05-23 03:22:28.494: E/ClaimRegister(2107): at android.view.View$PerformClick.run(View.java:18422) 

05-23 03:22:28.494: E/ClaimRegister(2107): at android.os.Handler.handleCallback(Handler.java:733) 

05-23 03:22:28.494: E/ClaimRegister(2107): at android.os.Handler.dispatchMessage(Handler.java:95) 

05-23 03:22:28.494: E/ClaimRegister(2107): at android.os.Looper.loop(Looper.java:136) 

05-23 03:22:28.494: E/ClaimRegister(2107): at android.app.ActivityThread.main(ActivityThread.java:5001) 

05-23 03:22:28.494: E/ClaimRegister(2107): at java.lang.reflect.Method.invokeNative(Native Method) 

05-23 03:22:28.494: E/ClaimRegister(2107): at java.lang.reflect.Method.invoke(Method.java:515) 

05-23 03:22:28.494: E/ClaimRegister(2107): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 

05-23 03:22:28.494: E/ClaimRegister(2107): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 

05-23 03:22:28.494: E/ClaimRegister(2107): at dalvik.system.NativeStart.main(Native Method) 

Ich kann keine E-Mail senden, tritt es immer um den Block fangen ... .. Ich habe javax.mail.jar, activation.jar, joda-time.jar
Bitte helfen Sie mir, dieses Problem zu lösen ... Ich brauche Danke E-Mail über meine App senden programmatisch im Voraus

+0

welche Ausnahme, die Sie in catch-Block fangen? –

+0

Hinzugefügt Fehler, Pls helfen mir, Sharad zu lösen – Abhishek

+0

Hallo Raum entfernen m.setFrom ("Sender Email"); zu m.setFrom ("SenderEmail"); und versuche es erneut. – MPG

Antwort

1

Lokale Adresse enthält Steuer oder Leerzeichen in String `` Sender E-Mail ‚‘

Schauen Sie sich diese Linie . Ihre E-Mail enthält Leerzeichen. Versuchen Sie, die Validierung für E-Mails zu aktivieren. Dies ist in der Validierung eingebaut. Sie können auch nach anderen Möglichkeiten suchen.

public final static boolean isValidEmail(CharSequence target) { 
    if (target == null) { 
     return false; 
    } else { 
     return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches(); 
    } 
} 

und für Ihren Code versuchen, dies zu tun:

m.setFrom("senderEmail"); 

Dies ist, wie Sie E-Mail in android senden:

Intent i = new Intent(Intent.ACTION_SEND); 
i.setType("message/rfc822"); 
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"[email protected]"}); 
i.putExtra(Intent.EXTRA_SUBJECT, "subject of email"); 
i.putExtra(Intent.EXTRA_TEXT , "body of email"); 
try { 
    startActivity(Intent.createChooser(i, "Send mail...")); 
} catch (android.content.ActivityNotFoundException ex) { 
    Toast.makeText(MyActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show(); 
} 
+0

danke sharad, aber ich möchte meine E-Mail direkt über die App senden, ohne eine Drittanbieter-Client-App zu verwenden (zB: gmail, email app) – Abhishek

+0

Es sollte programmatisch behandelt werden – Abhishek

+0

referenzieren: http://stackoverflow.com/questions/ 2020088/sending-e-mail-in-android-using-javamail-api-ohne-mit-der-standard-built-in-a/2033124 # 2033124 –

Verwandte Themen