【问题标题】:When User Click on submit Mail goes to my email当用户点击提交邮件进入我的电子邮件
【发布时间】:2013-09-19 18:58:18
【问题描述】:

我最近关注了:

link here

但在我的应用程序中,在上述问题中只有用户名和密码可用,但我需要添加 name、emailid 和消息

我在我的应用程序中做了什么改变

当我点击提交时,邮件会转到我的电子邮件 ID:*********@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"
                    ,"user@ymail.com");
            }
            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 = -4241732100545779346L;

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

现在我很困惑我在哪里添加姓名、电子邮件 ID 和消息。

【问题讨论】:

    标签: java android smtp user-feedback


    【解决方案1】:

    在 Gmail Sender 中有一种方法

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

    编辑1:

    GmailSender sender=new GmailSender("YourUserName","YourPassword");
    sender.sendMail("This is Subject","This is Body","sender@ymail.com","reciepent@mail.com");
    

    【讨论】:

    • 但我需要添加姓名、电子邮件 ID 和消息而不是用户名和密码这是我的格式 i42.tinypic.com/24b9sgk.png 请帮助...
    • 你想要什么?您想从您的帐户发送邮件,否则您将要求用户输入他们的用户名/密码
    • 一封邮件只能从一个帐户发送到某个电子邮件,所以首先你需要一个用户名/密码,然后你需要一个发送邮件的发件人
    • 当用户输入他的电子邮件 ID 时,我要求用户只输入他的电子邮件 ID,然后他的电子邮件 ID 中的邮件将直接发送到我的邮件 ID,并附上他写的消息
    • 当你不知道他 id 的密码时,你怎么能用它来邮件到你的 id 我建议你使用 ACTION_SEND 来发邮件
    猜你喜欢
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 2016-03-22
    • 1970-01-01
    • 2020-06-25
    相关资源
    最近更新 更多