如何使用 Android 代码发送电子邮件 [重复]

Posted

技术标签:

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

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

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

请指导我。

【问题讨论】:

这个问题在***上已经被问了一百次了。 【参考方案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 上不可用。

以上是关于如何使用 Android 代码发送电子邮件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式发送自动电子邮件[重复]

android.os.NetworkOnMainThreadException 从 Android 发送电子邮件 [重复]

我如何使用我的电子邮件来获取客人在 PHP 中发送的消息 [重复]

如何将电子邮件发送到存储在EditText中的地址? [重复]

如何使用 PHP 发送 100000 封邮件 [重复]

如何延迟onClick(Android)[重复]