2013-09-15 6 views
-2

Недавно я следовал:Когда пользователь нажимает на отправить почту идет на мою электронную почту

link here

но в моем приложении небольшой разницы, что в выше вопросе только имя пользователя и пароль доступно, но мне нужно, чтобы добавить имени , EMAILID и сообщение

какие изменения я делаю в моем приложении

, когда я нажимаю на отправить почта идет на мой электронный идентификатор: *********@gmail.com

и мой код:

MailActivity.java

package com.amcct.amcostapp; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 

public class MailActivity extends Activity 
{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_mail); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.mail, menu); 
     return true; 
    } 

    final Button submit_button= (Button) this.findViewById(R.id.button1); 
    View.OnClickListener Button1_Listener=new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      try 
      { 
      GmailSender sender=new GmailSender("editText1","editText2","editText3"); 
      sender.sendMail("This is Subject","This is Body" 
        ,"[email protected]"); 
      } 
      catch(Exception e) 
      { 
       Log.e("sendMail",e.getMessage(),e); 
      } 
     } 
    }; 


} 

GmailSender.java

package com.amcct.amcostapp; 
import java.io.ByteArrayInputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.security.Security; 
import java.util.Properties; 

import javax.activation.DataHandler; 
import javax.activation.DataSource; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

import android.os.Message; 

//simple mail transfer protocol 

public class GmailSender extends javax.mail.Authenticator 
{ 
    private String mailhost="smtp.gmail.com"; 
    private String name; 
    private String emailid; 
    private String message; 
    private Session session; 

    static 
    { 
     Security.addProvider(new com.amcct.JSSEProvider()); 
    } 

public GmailSender(String name,String emailid,String message) 
{ 
    this.name=name; 
    this.emailid=emailid; 
    this.message=message; 

    Properties prop=new Properties(); 
    prop.setProperty("mail.transport.protocol","smtp"); 
    prop.setProperty("mail.host",mailhost); 
    prop.put("mail.smtp.auth","true"); 
    prop.put("mail.smtp.port", "465"); 
    prop.put("mail.smtp.socketFactory.port", "465"); 
    prop.put("mail.smtp.socketFactory.class", 
      "javax.net.ssl.SSLSocketFactory"); 
    prop.put("mail.smtp.socketFactory.fallback", "false"); 

    session=Session.getDefaultInstance(prop,this); 


} 
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(), "text/plain")); 
    message.setSender(new InternetAddress(sender)); 
    message.setSubject(subject); 
    message.setDataHandler(handler); 
    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 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"); 
    } 
} 
} 

JSSEProvider.java

package com.amcct; 

import java.security.AccessController; 
import java.security.Provider; 

public class JSSEProvider extends Provider 
{ 
    /** 
    * 
    */ 
    private static final long serialVersionUID = -0545779346L; 

    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; 
         } 
        }); 
    } 
} 

Теперь я смущен тем, что добавляю имя, адрес электронной почты и сообщение.

ответ

0

В Sender Gmail есть один метод

protected PasswordAuthentication getPasswordAuthentication() { 
    return new PasswordAuthentication(user, password); 
} 

который установил счет, с которого письмо будет отправлено

Я использую тот же это мой GmailSender

public class GMailSender extends javax.mail.Authenticator { 
    private String mailhost = "smtp.gmail.com"; 
    private String user; 
    private String password; 
    private Session session; 

    static { 
     Security.addProvider(new 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 { 
     Log.d("EmailSender", "Sending Mail initiallized"); 

     try { 
      MimeMessage message = new MimeMessage(session); 
      DataHandler handler = new DataHandler(new ByteArrayDataSource(
        body.getBytes(), "text/plain")); 
      message.setFrom(new InternetAddress(sender)); 
      message.setSender(new InternetAddress(sender)); 
      message.setSubject(subject); 
      message.setDataHandler(handler); 

      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 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"); 
     } 
    } 
} 

Edit 1:

GmailSender sender=new GmailSender("YourUserName","YourPassword"); 
sender.sendMail("This is Subject","This is Body","[email protected]","[email protected]"); 
+0

b ut мне нужно добавить имя, адрес электронной почты и сообщение не имя пользователя и пароль это мой формат http://i42.tinypic.com/24b9sgk.png, пожалуйста, помогите ... –

+0

что вы хотите? вы хотите отправить почту из своей учетной записи или попросите пользователя ввести свое имя пользователя/пароль – Trikaldarshi

+0

, почта отправляется только с учетной записи на электронную почту, поэтому сначала вам нужно имя пользователя/пароль, с которого будет отправлено письмо, а затем отправителя, которого вы хочу отправить – Trikaldarshi