【问题标题】:How to send the email using Android Code [duplicate]如何使用 Android 代码发送电子邮件 [重复]
【发布时间】:2012-02-12 04:16:57
【问题描述】:

可能重复:
Sending Email in Android using JavaMail API without using the default android app(Builtin Email application)

我是 Android 编码新手。我的要求是我想使用 Android 代码发送电子邮件。

请指导我。

【问题讨论】:

  • 这个问题在stackoverflow上已经被问了一百次了。

标签: android email


【解决方案1】:

这里是解决方案::

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"recipient@example.com"});
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();
}

【讨论】:

    【解决方案2】:

    您可以使用 .Net、Java 或 PHP 编写服务器端脚本。使用以下参数向 domain.com/sendemail.php 发出 Web 请求(异步):

    • 要发送到的电子邮件地址
    • 主题(可以是可选的,但我个人会填写)
    • 电子邮件正文

    然后,服务器端脚本可以为您处理这一切,并让您在电子邮件布局上更加灵活,如果需要更改某些内容,则无需执行应用更新。这也意味着电子邮件可以来自应用程序,而不是让他们保持匿名的个人用户(这可能有用也可能没用,正如你没有说的那样)。

    要完成这一切,请查看Painless Threading article by Android,然后查看如何发出网络请求。

    选项 B:

    像这样使用 Intent:

    Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
    
    String[] recipients = new String[]{"my@email.com", "",};
    
    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients);
    
    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Test");
    
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "This is email's message");
    
    emailIntent.setType("text/plain");
    
    startActivity(Intent.createChooser(emailIntent, "Send mail..."));
    

    参考:http://thedevelopersinfo.wordpress.com/2009/10/22/email-sending-in-android/

    【讨论】:

    • 我已将此代码添加到我的活动中。但它仍然无法正常工作。它没有显示任何错误消息。但是邮件没有发送。
    【解决方案3】:

    您可以直接从代码发送电子邮件:

        String to = "abcd@gmail.com";
    
        String from = "web@gmail.com";
    
        Properties properties = System.getProperties();
    
        properties.setProperty("mail.smtp.host", SMPT_HOSTNAME);
    
        Session session = Session.getInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(USERNAME, PASSWORD);
            }
        });
    
        try {
            MimeMessage message = new MimeMessage(session);
    
            message.setFrom(new InternetAddress(from));
    
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(
                    to));
    
            message.setSubject("This is the Subject Line!");
    
            message.setText("This is actual message");
    
            Transport.send(message);
            System.out.println("Sent message successfully....");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    

    【讨论】:

    • javax.mail.* 在 Android 上不可用。
    猜你喜欢
    • 2013-06-22
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 2013-05-26
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多