2017-02-11 4 views
0

Я работаю над формой обратной связи. Он состоит из имени, электронной почты и обратной связи EditTexts. Я делаю приложение андроида для отправки пользователю с использованием JavaMail API. Теперь My android работает нормально, так как пользователь вводит данные в вышеупомянутое пространство и отправляет обратную связь по почте, которая предоставляется как адрес получателей (т. Е. Учетная запись Mymail).Приложение для Android-приложений JavaMail не может показывать имя отправителя

Проблема: Я попробовал свой уровень лучше всего, чтобы получить данные (почтовый идентификатор пользователя) от входа EditText для электронной почты идентификатор пользователя и показать его на Gmail счета счета, посланный USER_NAME но после многочисленных усилий, это дает мне такое же есть данные, почта отсылает мной только не идентификатор пользователя не отображается

я обеспечиваю вам снимок экрана моей учетной записи электронной почты

My gmail inbox where I received the mail from the user

Как вы можете см есть два письма прямо сейчас, один, который непрочитанный он не показывает электронный идентификатор пользователя, а показывает меня, потому что почта приходит от имени пользователя, предоставленного в адресе получателя

Я сделал исследование на нем:

  1. Используется setFrom (новый InternetAddress (электронная почта)) здесь электронная почта является EditText ввод электронной почты отправителем.

    1. пошел во многие поиски, но ни одна из идей здесь не работает (не удалось предоставить ссылки, поскольку у меня нет большой репутации, чтобы разместить более двух ссылок. ве две фотографии, которые также в виде ссылок как StackOverflow не позволяет мне uplaod его непосредственно.)

    2. ли это также setFrom (новый InternetAddress («Отправитель» + «<„+ электронная почта +“>»)) Результаты показаны Отправитель

Что я в итоге сделал: setFrom (новый интернет-адрес (Config.EMAIL, email)); и получил какое-то время, показывая электронное письмо в электронном адресе в разделе. Картина даст вам лучшее представление о

Mail when opened

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

Вот mycode:

1. SendMail.java

public class SendMail extends AsyncTask<Void,Void,Void> { 

//Declaring Variables 
private Context context; 
private Session session; 

//Information to send email 
private String name; 
private String email; 
private String subject; 
private String feedback; 

private ProgressDialog progressDialog; 

public SendMail(Context context,String name, String email,String subject, String feedback) { 
    this.context = context; 
    this.name = name; 
    this.email = email; 
    this.subject = subject; 
    this.feedback = feedback; 
} 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    //Showing progress dialog while sending email 
    progressDialog = ProgressDialog.show(context,"Sending feedback","Please wait...",false,false); 
} 

@Override 
protected void onPostExecute(Void aVoid) { 
    super.onPostExecute(aVoid); 
    //Dismissing the progress dialog 
    progressDialog.dismiss(); 
    //Showing a success message 
    Toast.makeText(context,"Feedback Sent", Toast.LENGTH_LONG).show(); 
} 

@Override 
protected Void doInBackground(Void... voids) { 
    //creating properties 
    Properties properties = new Properties(); 

    //Configuring properties for gmail 
    //If you are not using gmail you may need to change the values 
    properties.put("mail.smtp.host", "smtp.gmail.com"); 
    properties.put("mail.smtp.socketFactory.port", "465"); 
    properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    properties.put("mail.smtp.auth", "true"); 
    properties.put("mail.smtp.port", "465"); 


    //creating new session 
    session = Session.getDefaultInstance(properties, new Authenticator() { 
     @Override 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(Config.EMAIL, Config.PASSWORD); 
     } 
    }); 

    InternetAddress fromAddress = null; 

    try { 
     fromAddress = new InternetAddress(Config.EMAIL,email); 
    }catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 

    try { 
     //Creating MimeMessage object 
     MimeMessage mimeMessage = new MimeMessage(session); 

     //Setting sender address 
     mimeMessage.setFrom(fromAddress); 

     //Adding receiver 
     mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(Config.EMAIL)); 
     //Adding subject 
     mimeMessage.setSubject(subject); 

     //Adding Message 
     mimeMessage.setText("Name:"+ " "+ name + "\n" + "Email:" + " " + email + "\n" + 
           "Feedback" + " " + feedback); 

     //Sending email 
     Transport.send(mimeMessage); 

    } catch (MessagingException e) { 
     Log.e("SendMail", e.getMessage(), e); 
    } 
    return null; 
} 

}

2.Config.Java

public class Config { 
public static final String EMAIL = "[email protected]"; 
public static final String PASSWORD ="password"; 
} 

3. Feedback.java

private void sendEmail() { 

    //getting content from email 
    String subject = string.toString(); 
    String email = inputEmail.getText().toString().trim(); 
    String name = inputName.getText().toString().trim(); 
    String feedback = inputFeedback.getText().toString().trim(); 

    //Creating SendMail object 
    SendMail sendMail = new SendMail(getContext(),name,email,subject,feedback); 

    //Executing sendmail to send email 
    sendMail.execute(); 
} 

Пожалуйста, предложите мне какой-нибудь способ, чтобы я мог добраться до моего назначения. Заранее благодарю.

ответ

0

Если ваше приложение использует ваши учетные данные для входа в Gmail, Gmail не позволит вам «подделывать» адрес «От», чтобы быть другим пользователем.

Кроме того, вы действительно не хотите вставлять свой пароль Gmail в приложение.

Гораздо лучший подход заключается в создании веб-приложения, которое принимает ввод для формы обратной связи и отправляет электронное письмо. Приложение Android может отправлять данные формы в веб-приложение, которое будет составлять сообщение и отправлять его, добавляя адрес электронной почты пользователя в качестве другого поля заголовка или в виде данных в теле сообщения. Это гарантирует, что ваш пароль Gmail безопасен на вашем сервере, а не в приложении, к которому пользователи могут получить доступ.

+0

Большое вам спасибо за эту полезную информацию. Вы сэкономили для этого много времени. Теперь я буду делать что-то лучше для этого. Еще раз спасибо – Alok

Смежные вопросы