2013-03-11 105 views
2

我正在开发一个应用程序,我必须从应用程序发送邮件。邮件的正文和收件人不应该是可编辑的。所以我使用这个link一步一步地配置了gmail。从应用程序发送邮件

现在需要的应用是,FROM用户名和密码是由用户给出的。它可以是任何类型的:

[email protected], 
[email protected] 
[email protected] 

该电子邮件应该发送,用户输入的用户名和密码由用户输入。我搜索了一下,并从yahoo id应用程序应该配置雅虎smtp服务器上发送邮件。

但是如果用户输入其他邮件编号。有没有一种应用程序可以发送邮件的常用方法?为此,我必须执行哪些步骤。

+0

因此,http://www.whatyouhavetry.com/ – 2013-03-11 12:23:39

+0

你有这个问题的答案 – user1835052 2013-03-20 05:31:40

回答

0

尝试这样,

 address = (EditText) findViewById(R.id.address); 
    subject = (EditText) findViewById(R.id.subject); 
    emailbody = (EditText) findViewById(R.id.body); 
    send = (Button) findViewById(R.id.send); 

    send.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      sendEmail(); 
     } 
    }); 
} 

public void sendEmail(){ 

    if(!address.getText().toString().trim().equalsIgnoreCase("")){ 
     final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
     emailIntent.setType("plain/text"); 
     emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{ address.getText().toString()}); 
     emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject.getText()); 
     emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, emailbody.getText()); 
     sendMailDemo.this.startActivity(Intent.createChooser(emailIntent, "Send mail...")); 
    } 
    else{ 
     Toast.makeText(getApplicationContext(), "Please enter an email address..", Toast.LENGTH_LONG).show(); 
    } 
+0

我已经试过。但是通过这个代码,默认的作曲家是可以访问的。邮件正文和地址是可编辑的。我的应用程序需要的是,主体和地址不应该是可编辑的。 – 2013-03-11 12:38:55

+0

看看这个链接..这可能有助于http://stackoverflow.com/questions/2020088/sending-email-in-android-using-javamail-api-without-using-the-default-built-in-a/ 2033124#2033124 – user1835052 2013-03-11 12:45:16

0

如果您有Gmail,这是非常有用 先下载从here 这3个库(邮件/活化/额外) 它们添加到您的项目(将它们复制到项目/右击/添加到构建路径)

JSSEProvider类:

package com.emailsender; 

import java.security.AccessController; 

import java.security.Provider; 



public final class JSSEProvider extends Provider { 



public JSSEProvider() { 

super("HarmonyJSSE", 1.0, "Harmony JSSE Provider"); 

     AccessController 

       .doPrivileged(new java.security.PrivilegedAction<Void>() { 

        public Void run() { 

         put("SSLContext.TLS", 

           "org.apache.harmony.xnet.provider.jsse.SSLContextImpl"); 

         put("Alg.Alias.SSLContext.TLSv1", "TLS"); 

         put("KeyManagerFactory.X509", 

           "org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl"); 

         put("TrustManagerFactory.X509", 

           "org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl"); 

         return null; 

        } 

       }); 

    } 

} 

GmailSender类:

package com.emailsender; 

import javax.activation.DataHandler; 

import javax.activation.DataSource; 

import javax.activation.FileDataSource; 

import javax.mail.BodyPart; 

import javax.mail.Message; 

import javax.mail.Multipart; 

import javax.mail.PasswordAuthentication; 

import javax.mail.Session; 

import javax.mail.Transport; 

import javax.mail.internet.InternetAddress; 

import javax.mail.internet.MimeBodyPart; 

import javax.mail.internet.MimeMessage; 

import javax.mail.internet.MimeMultipart; 

import java.io.ByteArrayInputStream; 

import java.io.IOException; 

import java.io.InputStream; 

import java.io.OutputStream; 

import java.security.Security; 

import java.util.Properties; 


public class GMailSender extends javax.mail.Authenticator { 

private String mailhost = "smtp.gmail.com"; 

    private String user; 

    private String password; 

    private Session session; 



    private Multipart _multipart = new MimeMultipart(); 

    static { 

     Security.addProvider(new shooreshi.fayyaz.ghariebartar.JSSEProvider()); 

    } 



    public GMailSender(String user, String password) { 

     this.user = user; 

     this.password = password; 



     Properties props = new Properties(); 

     props.setProperty("mail.transport.protocol", "smtp"); 

     props.setProperty("mail.host", mailhost); 

     props.put("mail.smtp.auth", "true"); 

     props.put("mail.smtp.port", "465"); 

     props.put("mail.smtp.socketFactory.port", "465"); 

     props.put("mail.smtp.socketFactory.class", 

       "javax.net.ssl.SSLSocketFactory"); 

     props.put("mail.smtp.socketFactory.fallback", "false"); 

     props.setProperty("mail.smtp.quitwait", "false"); 



     session = Session.getDefaultInstance(props, this); 

    } 



    protected PasswordAuthentication getPasswordAuthentication() { 

     return new PasswordAuthentication(user, password); 

    } 



    public synchronized void sendMail(String subject, String body, 

      String sender, String recipients) throws Exception { 

     try { 

      MimeMessage message = new MimeMessage(session); 

      DataHandler handler = new DataHandler(new ByteArrayDataSource(

        body.getBytes(), "music")); 

      message.setSender(new InternetAddress(sender)); 

      message.setSubject(subject); 

      message.setDataHandler(handler); 

      BodyPart messageBodyPart = new MimeBodyPart(); 

      messageBodyPart.setText(body); 

      _multipart.addBodyPart(messageBodyPart); 



      // Put parts in message 

      message.setContent(_multipart); 

      if (recipients.indexOf(',') > 0) 

       message.setRecipients(Message.RecipientType.TO, 

         InternetAddress.parse(recipients)); 

      else 

       message.setRecipient(Message.RecipientType.TO, 

         new InternetAddress(recipients)); 

      Transport.send(message); 

     } catch (Exception e) { 



     } 

    } 



    public void addAttachment(String filename) throws Exception { 

     BodyPart messageBodyPart = new MimeBodyPart(); 

     DataSource source = new FileDataSource(filename); 

     messageBodyPart.setDataHandler(new DataHandler(source)); 

     messageBodyPart.setFileName("music.mp3"); 



     _multipart.addBodyPart(messageBodyPart); 

    } 



    public class ByteArrayDataSource implements DataSource { 

     private byte[] data; 

     private String type; 





     public ByteArrayDataSource(byte[] data, String type) { 

      super(); 

      this.data = data; 

      this.type = type; 

     } 



     public ByteArrayDataSource(byte[] data) { 

      super(); 

      this.data = data; 

     } 





     public void setType(String type) { 

      this.type = type; 

     } 



     public String getContentType() { 

      if (type == null) 

       return "application/octet-stream"; 

      else 

       return type; 

     } 



     public InputStream getInputStream() throws IOException { 

      return new ByteArrayInputStream(data); 

     } 



     public String getName() { 

      return "ByteArrayDataSource"; 

     } 



     public OutputStream getOutputStream() throws IOException { 

      throw new IOException("Not Supported"); 

     } 

    } 

} 

发送代码:

  new Thread(new Runnable() { 

       public void run() { 

        try { 

         GMailSender sender = new GMailSender(

           "[email protected]", 

           "yourpassword"); 



        sender.addAttachment(Environment.getExternalStorageDirectory().getPath()+"/image.jpg"); 

         sender.sendMail("your text", 

           "[email protected]", 

           "[email protected]"); 









        } catch (Exception e) { 

         Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show(); 



        } 

       } 

      }).start(); 

不要忘记添加权限!

相关问题