i'm trying to add an attachment button to my mail sender. I'm using the libraries JavaMail Mail, activation and additionnal. My sender is splited into 3 files :
- MainActivity which allow the user to set the content of the mail ith edit texts
- SendMail which allow me to set the sender, and the content from edit texts to the mail and send it
- Config which is storing informations like transmitter's address and password and the receiver's address Here is the code of my actual mail sender which send mail properly but without attachment.
SendMail.java
package com.myapp.attch_mail;
import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.widget.Toast;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendMail extends AsyncTask<Void,Void,Void> {
private Context context;
private String subject;
private String message;
private ProgressDialog progressDialog;
SendMail(Context context, String subject, String message){
this.context = context;
this.subject = subject;
this.message = message;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(context,"Envoi en cours","Veuillez patienter...",false,false);
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
progressDialog.dismiss();
Toast.makeText(context,"Message sent",Toast.LENGTH_LONG).show();
}
@Override
protected Void doInBackground(Void... params) {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(Config.EMAIL_SENDER, Config.PASSWORD);
}
});
try {
MimeMessage mm = new MimeMessage(session);
mm.setFrom(new InternetAddress(Config.EMAIL_SENDER));
mm.addRecipient(Message.RecipientType.TO, new InternetAddress(Config.EMAIL_RECEIVER));
mm.setSubject(subject);
mm.setText(message);
Transport.send(mm);
} catch (MessagingException e) {
e.printStackTrace();
}
return null;
}
}
MainActivity.java
package com.my_app.attach_mail;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class L3C1 extends AppCompatActivity implements View.OnClickListener {
private EditText objet_siq;
private EditText corps_siq;
private EditText prenom_siq;
private EditText nom_siq;
private EditText telephone_siq;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_l3_c1);
object = findViewById(R.id.objet_siq);
body = findViewById(R.id.corps_siq);
first_name= findViewById(R.id.prenom_siq);
last_name= findViewById(R.id.nom_siq);
phone= findViewById(R.id.telephone_siq);
Button buttonSend = findViewById(R.id.send_mail_siq);
Button buttonAttachment = findViewById(R.id.add_attachment_siq);
buttonSend.setOnClickListener(this);
buttonAttachment.setOnClickListener(this);
}
private void sendEmail() {
String subject = objet_siq.getText().toString().trim();
String message = "Nom / Prénom : " + prenom_siq.getText().toString().trim() + " " + nom_siq.getText().toString().trim() + "\n" +"Téléphone : " + telephone_siq.getText().toString().trim() + "\n" + "\n" + "Description du problème : " + "\n" + corps_siq.getText().toString().trim() + "\n" + "\n" + "Cordialement, " + prenom_siq.getText().toString().trim() + " " +nom_siq.getText().toString().trim();
SendMail sm_siq = new SendMail(this, subject, message);
sm_siq.execute();
}
@Override
public void onClick(View view) {
sendEmail();
object.setText("");
body.setText("");
first_name.setText("");
last_name.setText("");
phone.setText("");
}
}