【问题标题】:Send an Email Button with EditText (without Opening an Email Client)使用 EditText 发送电子邮件按钮(无需打开电子邮件客户端)
【发布时间】:2018-09-06 08:52:10
【问题描述】:

我正在尝试在 Android Studio 中创建一个按钮,它将所有信息放入 EditText 字段中,然后将其作为电子邮件发送。

我得到了发送电子邮件的部分工作,只是没有按钮来做我想做的事。

我创建了一个SendEmail 类并添加了一个构造函数,该构造函数接受两个字符串值,我想将其作为电子邮件发送。我不知道如何将此类与包含参数的按钮集成。

这就是我现在拥有的:

    Button sendEmail = findViewById(R.id.button);
    sendEmail.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            EditText test = (EditText) findViewById(R.id.editText);
            String testText = test.getText().toString();
            String textBody = "This is a test.";

        }
    });

我不知道从这里去哪里。有没有更好的方法来做我想做的事?

编辑:我希望 java 发送电子邮件,而不是打开电子邮件应用程序并让用户手动发送电子邮件。我的邮件类如下:

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class SendEmail {

    public static void main(String [] args) {
        // Recipient's email ID needs to be mentioned.
        String to = "test@gmail.com";

        // Sender's email ID needs to be mentioned
        String from = "***@gmail.com";


        // Get system properties
        Properties properties = System.getProperties();
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.starttls.enable", "true" );
        properties.put("mail.smtp.host", "smtp.gmail.com");
        properties.put("mail.smtp.port", 587);

        Session session = Session.getDefaultInstance(properties, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(from, "***");
            }
        });


        try {
            // Create a default MimeMessage object.
            MimeMessage message = new MimeMessage(session);

            // Set From: header field of the header.
            message.setFrom(new InternetAddress(from));

            // Set To: header field of the header.
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

            // Set Subject: header field
            message.setSubject("Subject Line test");

            message.setText("This is a test for body of the e-mail.");
            Transport.send(message);
            System.out.println("Send message successfully");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }
}

此代码让我无需打开电子邮件客户端即可发送电子邮件。我试图弄清楚如何将此代码与我的按钮结合起来。 另外,这个 SendEmail 代码是我在没有前面提到的构造函数的情况下为测试而制作的。

【问题讨论】:

标签: java android


【解决方案1】:

试试这个,希望它有效 -

Button sendEmail = findViewById(R.id.button);
sendEmail.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        EditText test = (EditText) findViewById(R.id.editText);
        String subject = test.getText().toString();
        String textBody = "This is a test.";

        Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
                                   "mailto","email@email.com", null));
        intent.putExtra(Intent.EXTRA_SUBJECT, subject);
        intent.putExtra(Intent.EXTRA_TEXT, textBody);
        startActivity(Intent.createChooser(intent, "Choose an Email client :"));
    }
});

【讨论】:

  • 如果使用已经发布的某人answerd,请将其保留在评论中。无需写作为答案。 仅供参考.
  • @Arbaz.in ,我看到了这个问题并将我的代码粘贴为我使用的答案,没有看到任何已经发布的答案。但注意未来...
  • @Arbaz.in,感谢您的建议,但我无法对问题发表评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 2022-01-13
  • 2010-11-09
  • 2016-08-18
  • 1970-01-01
  • 2010-10-23
相关资源
最近更新 更多