如何使用Android代码发送电子邮件

问题描述:

可能重复:
Sending Email in Android using JavaMail API without using the default android app(Builtin Email application)如何使用Android代码发送电子邮件

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

请指导我这一点。

+0

这个问题已经被问在stackoverflow上百次。 – 2012-01-17 11:15:23

这里是解决方案::

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

你可以写使用的.Net,Java或PHP的服务器端脚本。使Web请求(异步)用的参数domain.com/sendemail.php:

  • 电子邮件地址发送到
  • 主题(可能是可选的,但我个人将填补了这一点)
  • 电子邮件正文

然后,服务器端脚本可以为您处理这一切,并为您提供电子邮件布局的更多灵活性,而无需执行应用更新,如果需要更改某些内容。这也意味着电子邮件可以来自应用程序,而不是个人用户保持匿名(这可能会或可能没有用,因为你没有说过)。

要做所有这些看看Painless Threading article by Android然后看看如何提出Web请求。

选项B:

使用的意图,像这样:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 

String[] recipients = new String[]{"[email protected]", "",}; 

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/

+0

我已将此代码添加到我的活动中。但仍然没有工作。它没有显示任何错误消息。但邮件没有发送。 – Thiru 2012-01-18 03:35:30

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

String to = "[email protected]"; 

    String from = "[email protected]"; 

    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(); 
    } 
+0

javax.mail。*在Android上不可用。 – 2014-01-15 20:13:47