android:自动发送电子邮件

标签 android file email

起初对不起我的英语。我需要制作一个应用程序 自动从 SD 卡发送文件。我以为我会做 它通过电子邮件。我写发送邮件的代码

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.View; 
public class EmailActivity extends Activity { 
        /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
    } 
    public void poslat(View button) { 
        Intent i = new Intent(android.content.Intent.ACTION_SEND); 
                String Email[] = { "a@aa.aa" }; 
                i.putExtra(android.content.Intent.EXTRA_EMAIL, Email); 
                i.putExtra(android.content.Intent.EXTRA_SUBJECT, "Tu bude datum"); 
                i.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/lala/ 
lala.txt")); 
                i.setType("plain/text"); 
                startActivity(i); 
        } 
}

很好用,但是感觉不能配置成发送 自动地。我该如何开始?或者你知道怎么做 自动从 SD 卡发送文件?例如。通过 FTP 或其他方式 别的? ..非常感谢


我有这个代码

邮件.java

package mail.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 String getSubject() { 
        return _subject; 
      } 

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

  public String getFrom() { 
        return _from; 
      } 
  public void setFrom(String _from) { 
        this._from = _from; 
      } 
  public String[] getTO() { 
        return _to; 
      } 
  public void setTo(String[] _to) { 
        this._to = _to; 
      } 
  // more of the getters and setters ….. 


} 

lala.java

package mail.mail;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class lala extends Activity{
    @Override 
    public void onCreate(Bundle icicle) { 
      super.onCreate(icicle); 
      setContentView(R.layout.main); 

      Button addImage = (Button) findViewById(R.id.send_email); 
      addImage.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View view) { 
          Mail m = new Mail("aa@gmail.com", "aa"); 

          String[] toArr = {"aaa@centrum.sk"}; 
          m.setTo(toArr); 
          m.setFrom("aa@gmail.com"); 
          m.setSubject("This is an email sent using my Mail JavaMail wrapper from an Android device."); 
          m.setBody("Email body.");

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



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

}

这里有什么问题?.. =//

最佳答案

如果您想在没有用户交互的情况下发送电子邮件,您可以使用 SMTP 协议(protocol)和外部邮件服务器

关于android:自动发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7698578/

相关文章:

javascript - 在android中将文件作为图像文件写入sd卡

android - 如何将 Golang 和 Android 与 socket.io 连接起来?

c - c中的信号和输出

iphone - 锁定 MFMailComposeViewController 中的字段

email - 您可以使用 Davmail 访问 Exchange 存档吗?

android - 是否可以在 android 中仅使用部分 XML 布局?

android - FragmentContainerView 和应用 :navGraph - This navigation graph is not referenced to any layout files

c++ - 如何从文件中读取特征矩阵?

c++ - 在二进制文件中搜索 C++

php - HTML 邮件显示空白消息