简体   繁体   English

如何自动发送电子邮件android

[英]How to send an email automatically android

I'm kinda of new in android. 我是android的新手。 How can i send an email automatically without a contact chooser. 我如何在没有联系人选择器的情况下自动发送电子邮件。 I write a list of e-mails in edittext and an message and then i want to send to every email address. 我用edittext写一封电子邮件列表和一条消息,然后我想发送到每个电子邮件地址。 How can i do that? 我怎样才能做到这一点?

 String[] TO = {""};
      String[] CC = {""};
      Intent emailIntent = new Intent(Intent.ACTION_SEND);

      emailIntent.setData(Uri.parse("mailto:"));
      emailIntent.setType("text/plain");
      emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
      emailIntent.putExtra(Intent.EXTRA_CC, CC);
      emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Your subject");
      emailIntent.putExtra(Intent.EXTRA_TEXT, "Email message goes here");

      try {
         startActivity(Intent.createChooser(emailIntent, "Send mail..."));
         finish();
         Log.i("Finished sending email...", "");
      } catch (android.content.ActivityNotFoundException ex) {
         Toast.makeText(MainActivity.this, "There is no email client installed.", Toast.LENGTH_SHORT).show();
      }

@Debora @Debora

One way where I have implemented this scenario is I created an editText for user where he/she supposed to enter email id. 我实现此方案的一种方法是,为用户创建一个editText ,他/她应该在其中输入电子邮件ID。

After app level email id validation. 经过应用级别的电子邮件ID验证。 I used to call my server api where i post the email ids along with content and subject and then server was responsible for sending mail. 我曾经打电话给我的服务器api,在其中发布电子邮件ID以及内容和主题,然后服务器负责发送邮件。

Refer this code 参考此代码

    final Intent emailIntent= new Intent(Intent.ACTION_SEND_MULTIPLE);
    emailIntent.setType("message/rfc822");
    emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "appsupport@YOUR_DOMAIN.com",....... }); //Heare you can add the list of email address you have
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Mail subject");
    emailIntent.putExtra(Intent.EXTRA_TEXT, "Mail content");
    try{
           startActivity(emailIntent);
    }catch(ActivityNotFoundException e){

    }

If you want to send the email with out user interaction then check the link: https://www.mindstick.com/Articles/1673/sending-mail-without-user-interaction-in-android 如果要在没有用户交互的情况下发送电子邮件,请检查链接: https : //www.mindstick.com/Articles/1673/sending-mail-without-user-interaction-in-android

Please follow the steps mentioned below. 请按照以下步骤操作。 It will send the email directly if app is connected to working internet. 如果应用程序连接到正常的互联网,它将直接发送电子邮件。 Don't forget to add INTERNET permission. 不要忘记添加INTERNET权限。

1. Add Mail.java to your code 1.将Mail.java添加到您的代码中

2. Add jar files mail.jar , activation.jar , additionnal.jar 2.添加jar文件mail.jaractivation.jar ,additional.jar

3. Use following code send an email, change email id and password. 3.使用以下代码发送电子邮件,更改电子邮件ID和密码。

String sub="Thank you for your online registration" ; 
Mail m = new Mail("emailid", "password"); 

String[] toArr = {"testecn2@gmail.com",sEmailId};
m.setFrom("testecn2@gmail.com"); 

m.setTo(toArr);
m.setSubject(sub);
m.setBody(msg);             

try{

    if(m.send()) { 
       //successful
    } else { 
      //failure
    } 
} catch(Exception e) { 

    Log.e("MailApp", "Could not send email", e); 
}

Mail.java Mail.java

   package com.example.mail;

   import java.util.Date;
   import java.util.Properties;

   import javax.activation.CommandMap;
   import javax.activation.DataHandler;
   import javax.activation.DataSource;
   import javax.activation.FileDataSource;
   import javax.activation.MailcapCommandMap;
   import javax.mail.BodyPart;
   import javax.mail.Multipart;
   import javax.mail.PasswordAuthentication;
   import javax.mail.Session;
   import javax.mail.Transport;
   import javax.mail.internet.InternetAddress;
   import javax.mail.internet.MimeBodyPart;
   import javax.mail.internet.MimeMessage;
   import javax.mail.internet.MimeMultipart;

   public class Mail 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 Mail() { 
          _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 Mail(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); 

        // 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) {
         // TODO Auto-generated method stub
        this._to=toArr;
     }

    public void setFrom(String string) {
        // TODO Auto-generated method stub
        this._from=string;
    }

    public void setSubject(String string) {
       // TODO Auto-generated method stub
       this._subject=string;
    }  

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM