如何在Android中没有模拟器电子邮件应用程序发送电子邮件

时间:2015-03-11 20:50:44

标签: android email android-intent android-studio

是否可以在不使用gmail,hotmail等电子邮件客户端的情况下在Android中发送电子邮件。我可以直接使用Intent类发送电子邮件吗?

现在我正在使用电子邮件应用中构建的模拟器。

另外,如何让用户以简单的方式将文件附加到电子邮件中? 我想使用一个按钮在模拟器上打开包含图像的文件夹,并允许用户选择要附加的文件。

这是我的代码:

public class MainActivity extends ActionBarActivity {

private EditText textEmail;
private EditText textSubject;
private EditText textMessage;
private Button   btnSend, btnAttach;

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

    textEmail = (EditText)findViewById(R.id.editText);
    textSubject = (EditText)findViewById(R.id.editText2);
    textMessage = (EditText)findViewById(R.id.editText3);
    btnSend = (Button)findViewById(R.id.button);
    btnAttach =(Button)findViewById(R.id.button2);//not implemented yet

    btnSend.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SendEmail();
            textEmail.setText("");
            textSubject.setText("");
            textMessage.setText("");
        }
    });
}

protected void SendEmail(){

    String toEmail = textEmail.getText().toString();
    String theSubject = textSubject.getText().toString();
    String theMessage = textMessage.getText().toString();

    Intent email = new Intent(Intent.ACTION_SEND);
    email.setData(Uri.parse("mailto:"));
    email.putExtra(Intent.EXTRA_EMAIL,toEmail);
    email.putExtra(Intent.EXTRA_SUBJECT,theSubject);
    email.putExtra(Intent.EXTRA_TEXT,theMessage);
    email.setType("message/rfc822");

        // the user can choose the email client
        startActivity(Intent.createChooser(email, "Send email"));

}

}

3 个答案:

答案 0 :(得分:1)

只有没有Intent类,但是当gmail和hotmail等其他应用专门只发送电子邮件时,为什么要重新发明轮子呢?这些客户端还将处理将文件附加到电子邮件的情况,但如果您希望自己处理并将其与电子邮件意图一起传递,请查看Google's tutorial on sharing files.

答案 1 :(得分:0)

简短回答 - 不。 Intent请求操作系统运行已注册的应用程序。如果您没有电子邮件应用程序,那么根据定义,将无法处理您的意图。

答案 2 :(得分:0)

这是关于此主题的previous discussion

ehd的答案依赖于第三方java库邮件包装器。如果您不信任该包装器,请考虑将标准Linux邮件实用程序(即sendMail)添加到项目中并创建JNI层以与其进行通信。